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