توفر واجهات برمجة التطبيقات Geometry API هندسة التضاريس أو المباني أو غيرها من الهياكل في أحد المشاهد. يمكن استخدام الشكل الهندسي لإغراق محتوى الواقع المعزّز أو عرضه أو وضعه عبر واجهات برمجة تطبيقات اختبار النتائج. يتم الحصول على بيانات "هندسة التجوّل الافتراضي" من خلال صور "التجوّل الافتراضي من Google".
عملية إعداد واجهة برمجة التطبيقات Geospatial API
لاستخدام Streetscape Geometry، ستحتاج إلى إعداد Geospatial API في مشروعك. اتّبِع التعليمات حول تفعيل واجهة برمجة التطبيقات Geospatial API لإعداد Geospatial API.
تفعيل هندسة التجوّل الافتراضي
تحصل واجهة برمجة التطبيقات Geospatial API على بيانات Streetscape Geometry عند ضبط ArGeospatialMode
على ArGeospatialModeEnabled
وضبط ArStreetscapeGeometryMode
على ArStreetscapeGeometryModeEnabled
.
// Create a session config. ArConfig* ar_config = NULL; ArConfig_create(ar_session, &ar_config); // Enable the Geospatial API. ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED); CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS); // Enable Streetscape Geometry. ArConfig_setStreetscapeGeometryMode(ar_session, ar_config, AR_STREETSCAPE_GEOMETRY_MODE_ENABLED); CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS); // Release config resources. ArConfig_destroy(ar_config);
احصل على هندسة التجوّل الافتراضي في جلسة ARCore
استخدِمArSession_getAllTrackables()
واستخدِم AR_TRACKABLE_STREETSCAPE_GEOMETRY
لفلترة النتائج.
ArTrackableList* trackable_list = NULL; ArTrackableList_create(ar_session, &trackable_list); ArSession_getAllTrackables(ar_session, AR_TRACKABLE_STREETSCAPE_GEOMETRY, trackable_list);
فهم ArStreetscapeGeometry
يحتوي ArStreetscapeGeometry
على معلومات حول مبنى:
-
ArStreetscapeGeometry_getType()
يحدد StreetscapeGeometry كتضاريس أو مبنى. -
ArStreetscapeGeometry_acquireMesh()
احصل على مضلّعArMesh
يقابل هذه التضاريس أو المبنى. -
ArStreetscapeGeometry_getMeshPose()
يصف أصل الهندسة. يجب تحويل جميع النقاط فيArMesh
من خلالArStreetscapeGeometry_getMeshPose()
. -
ArStreetscapeGeometry_getQuality()
يوفّر جودة بيانات الشبكة المتداخلة. يمكن الاطّلاع على مستويات التفاصيل في معيار CityGML 2.0.
مبنى LOD 1
يتألّف AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_1
من آثار أقدام مبانٍ تنبثق باتجاه قمة مستوية. وقد تكون ارتفاعات المباني غير دقيقة.
مبنى LOD 2
سيكون لـ AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_2
أشكال هندسية بدقة أعلى. وتتطابق الجدران والأسطح المتداخلة مع شكل المبنى بشكل أكبر. وقد تستمر الميزات الأصغر حجمًا، مثل المداخن أو فتحات الأسطح، خارج الشبكة.
فهم ArMesh
ArMesh
عبارة عن شبكة مضلّعة تمثّل إعادة إنشاء سطح هندسة "التجوّل الافتراضي".
يحتوي كل ArMesh
على مخزن رأسي ومخزن مؤقت للفهرس:
ArMesh_getVertexListSize()
لاسترداد عدد رؤوس هذه الشبكة المتداخلة.ArMesh_getVertexList()
الحصول على المواضع المتسلسلة للرؤوس المتداخلة، في الإحداثيات بالنسبة إلىArStreetscapeGeometry_getMeshPose()
ArMesh_getIndexListSize()
لاسترداد عدد الفهارس في هذه الشبكة المتداخلة.ArMesh_getIndexList()
الحصول على مؤشرات الرؤوس التي تشكل الوجه.
إرفاق محتوى الواقع المعزّز إلى ArStreetscapeGeometry
هناك طريقتان لإرفاق محتوى الواقع المعزّز بميزة Streetscape Geometry:
- فعِّل العمق الجغرافي المكاني واستخدِم اختبار العمق. هذه هي الطريقة الموصى بها والأسهل.
- استخدِم
ArTrackable_acquireNewAnchor()
لإنشاء ارتساء في وضعية معيّنة مرفقة بـArStreetscapeGeometry
. سيكتسب هذا الارتساء حالة التتبّع من العنصر الرئيسيArStreetscapeGeometry
.
إجراء اختبار نتيجة مقابل ArStreetscapeGeometry
يمكن استخدام ArFrame_hitTest
لإجراء اختبار نتيجة وفقًا لهندسة "التجوّل الافتراضي". في حالة العثور على تقاطعات، يحتوي ArHitResult
على معلومات حول موقع النتيجة بالإضافة إلى مرجع إلى ArStreetscapeGeometry
الذي تم الوصول إليه. يمكن تمرير هندسة "التجوّل الافتراضي" هذه إلى ArTrackable_acquireNewAnchor()
لإنشاء إعلان ارتساء مرفق به.
ArHitResultList *hit_result_list = NULL; ArHitResult *hit_result = NULL; ArHitResultList_create(ar_session, &hit_result_list); ArHitResult_create(ar_session, &hit_result); ArFrame_hitTestRay(ar_session, ar_frame, origin, direction, hit_result_list); ArHitResultList_getItem(ar_session, hit_result_list, 0, hit_result); ArAnchor *out_anchor = NULL; ArStatus status = ArHitResult_acquireNewAnchor(ar_session, hit_result, &out_anchor); CHECK(status == AR_SUCCESS);
تفعيل العمق الجغرافي المكاني
تجمع العمق الجغرافي المكاني بين هندسة "التجوّل الافتراضي" مع مدخلات أداة الاستشعار المحلية لتعزيز بيانات العمق. عند تفعيل "العمق الجغرافي المكاني"، يتم تعديل عمق المخرجات والصور ذات العمق الأولي لتضمين هندسة التجوّل الافتراضي التي تم بكسلتها بالإضافة إلى العمق الذي يتم رصده محليًا. وقد يؤدي ذلك إلى تحسين دقة الوضعيات باستخدام ميزة "العمق".