توفر واجهات برمجة التطبيقات Geometry API هندسة التضاريس أو المباني أو غيرها من الهياكل في أحد المشاهد. يمكن استخدام الشكل الهندسي لإغراق محتوى الواقع المعزّز أو عرضه أو وضعه عبر واجهات برمجة تطبيقات اختبار النتائج. يتم الحصول على بيانات "هندسة التجوّل الافتراضي" من خلال صور "التجوّل الافتراضي من Google".
تجربة النموذج
يوضح تطبيق GeospatialExample كيفية الحصول على هندسة التجوّل الافتراضي وعرضها.
عملية إعداد واجهة برمجة التطبيقات Geospatial API
لاستخدام Streetscape Geometry، ستحتاج إلى إعداد Geospatial API في مشروعك. اتّبِع التعليمات حول تفعيل واجهة برمجة التطبيقات Geospatial API لإعداد Geospatial API.
تفعيل هندسة التجوّل الافتراضي
تحصل واجهة برمجة التطبيقات Geospatial API على بيانات Streetscape Geometry عند ضبط 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.
مبنى LOD 1
يتألّف GARStreetscapeGeometryQualityBuildingLOD_1
من آثار أقدام مبانٍ تنبثق باتجاه قمة مستوية. وقد تكون ارتفاعات المباني غير دقيقة.
مبنى LOD 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];