استخدام المباني والتضاريس من حولك على NDK (C) لنظام التشغيل Android

توفّر واجهات برمجة التطبيقات Geometry API لتصميم المناظر الطبيعية الأشكال الهندسية للتضاريس أو المباني أو الهياكل الأخرى في المشهد. يمكن استخدام الأشكال الهندسية لإخفاء العناصر أو عرضها أو وضع محتوى الواقع المعزّز من خلال واجهات برمجة التطبيقات لاختبار العناصر. يتم الحصول على بيانات هندسة المشهد في الشارع من خلال صور "التجوّل الافتراضي من Google".

إعداد واجهة برمجة التطبيقات Geospatial API

لاستخدام 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 على معلومات عن مبنى:

مستوى التفاصيل 1 للمبنى

يتكوّن AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_1 من مساحات المباني التي تمّت إزالتها من السطح المستوي. قد تكون ارتفاعات المباني غير دقيقة.

مستوى التفاصيل 2 للمبنى

سيكون لدى AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_2 شكل هندسي بدقة أعلى. ستتطابق الجدران والأسقف الشبكية بشكلٍ أكبر مع شكل المبنى. قد تبقى بعض العناصر الأصغر حجمًا، مثل المداخن أو فتحات التهوية على السطح، خارج الشبكة.

فهم ArMesh

ArMesh هي شبكة مضلّعات تمثّل إعادة إنشاء سطح هندسة المشهد في الشارع. يحتوي كل ArMesh على مخزن قمم ومخزن فهارس:

إرفاق محتوى الواقع المعزّز بـ 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);

تفعيل "التفاصيل الجغرافية المكانية"

تجمع ميزة العمق الجغرافي المكاني بين هندسة المشهد في الشارع ومعلومات أدوات الاستشعار المحلية لتحسين بيانات العمق. عند تفعيل ميزة "العمق الجغرافي المكاني"، يتم تعديل عمق الصورة الناتجة وصور العمق الأوّلي لتضمين شكل هندسي ممسوح ضوئيًا للمشهد في الشارع بالإضافة إلى العمق المرصود محليًا. وقد يؤدي ذلك إلى تحسين دقة الوضعيات باستخدام ميزة "العمق".