توفّر واجهات برمجة التطبيقات Geometry API لتصميم المناظر الطبيعية الأشكال الهندسية للتضاريس أو المباني أو الهياكل الأخرى في المشهد. يمكن استخدام الأشكال الهندسية لإخفاء العناصر أو عرضها أو وضع محتوى الواقع المعزّز من خلال واجهات برمجة التطبيقات لاختبار العناصر. يتم الحصول على بيانات هندسة المشهد في الشارع من خلال صور "التجوّل الافتراضي من Google".
تجربة العيّنة
يوضّح تطبيق GeospatialExample كيفية الحصول على أشكال المناظر الحضرية وعرضها.
إعداد واجهة برمجة التطبيقات Geospatial API
لاستخدام Geometry في "مشهد الشوارع"، عليك إعداد Geospatial API في مشروعك. اتّبِع التعليمات الواردة في مقالة تفعيل واجهة برمجة التطبيقات Geospatial API لإعداد واجهة برمجة التطبيقات Geospatial API.
تفعيل هندسة المشهد في الشارع
تحصل واجهة برمجة التطبيقات Geospatial API على بيانات هندسة المشهد في الشارع عند ضبط GARGeospatialMode
على GARGeospatialModeEnabled
وGARStreetscapeGeometryMode
على GARStreetscapeGeometryModeEnabled
.
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
الحصول على هندسة المشهد في الشوارع في جلسة ARCore
استخدِمGARFrame.streetscapeGeometries
للحصول على جميع عناصر GARStreetscapeGeometry
.
فهم GARStreetscapeGeometry
يحتوي GARStreetscapeGeometry
على معلومات عن مبنى:
-
GARStreetscapeGeometry.type
يحدّد StreetscapeGeometry كتضاريس أو مبنى. -
GARStreetscapeGeometry.mesh
الحصول على مضلّعGARMesh
يتوافق مع هذا التضاريس أو المبنى -
GARStreetscapeGeometry.meshTransform
يصف مصدر الشكل الهندسي. يجب تحويل جميع النقاط فيGARMesh
باستخدامGARStreetscapeGeometry.meshTransform
. -
GARStreetscapeGeometry.quality
يعرض جودة بيانات الشبكة. يتم وصف مستويات التفاصيل في معيار CityGML 2.0.
مستوى التفاصيل 1 للمبنى
يتكوّن GARStreetscapeGeometryQualityBuildingLOD_1
من مساحات المباني التي تمّت إزالتها من السطح المستوي. قد تكون ارتفاعات المباني غير دقيقة.
مستوى التفاصيل 2 للمبنى
سيكون لدى GARStreetscapeGeometryQualityBuildingLOD_2
شكل هندسي بدقة أعلى. ستتطابق الجدران والأسقف الشبكية بشكلٍ أكبر مع شكل المبنى. قد تبقى بعض العناصر الأصغر حجمًا، مثل المداخن أو فتحات التهوية على السطح، خارج الشبكة.
فهم GARMesh
GARMesh
هي شبكة مضلّعات تمثّل إعادة إنشاء سطح هندسة المشهد في الشارع.
يحتوي كل GARMesh
على مخزن قمم ومخزن فهارس:
GARMesh.vertexCount
تسترجع عدد الرؤوس في هذه الشبكة.GARMesh.vertices
احصل على مواضع رؤوس الشبكة المتسلسلة، بالإحداثيات النسبية إلىGARStreetscapeGeometry.meshTransform
.GARMesh.triangleCount
تسترجع عدد الفهارس في هذه الشبكة.GARMesh.triangles
احصل على فهارس الرؤوس التي تشكّل وجهًا.
إرفاق محتوى الواقع المعزّز بـ GARStreetscapeGeometry
استخدِم GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
لإنشاء نقطة تثبيت في وضع معيّن بالقرب من GARStreetscapeGeometry.meshTransform
. ستكتسب هذه العلامة الفارقة حالة التتبّع من العنصر الرئيسي GARStreetscapeGeometry
.
إجراء اختبار مطابقة مع GARStreetscapeGeometry
يمكن استخدام GARSession.raycastStreetscapeGeometry:direction:error:
لإجراء اختبار التصادم مع هندسة المشهد في الشارع. في حال العثور على تقاطعات، يحتوي GARStreetscapeGeometryRaycastResult
على معلومات عن وضع الجسم في موقع الاصطدام بالإضافة إلى إشارة إلى GARStreetscapeGeometry
الذي تم اصطدامه. يمكن تمرير هندسة المشهد في الشارع إلى GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
لإنشاء عنصر تثبيت مرتبط بها.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];