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