توفّر واجهات برمجة التطبيقات Geometry API لتصميم المناظر الطبيعية الأشكال الهندسية للتضاريس أو المباني أو الهياكل الأخرى في المشهد. يمكن استخدام الأشكال الهندسية لإخفاء العناصر أو عرضها أو وضع محتوى الواقع المعزّز من خلال واجهات برمجة التطبيقات لاختبار العناصر. يتم الحصول على بيانات هندسة المشهد في الشارع من خلال صور "التجوّل الافتراضي من Google".
تجربة العيّنة
يوضّح نموذج تطبيق geospatial_java كيفية الحصول على أشكال المناظر الحضرية وعرضها.
إعداد واجهة برمجة التطبيقات Geospatial API
لاستخدام Geometry في "مشهد الشوارع"، عليك إعداد Geospatial API في مشروعك. اتّبِع التعليمات الواردة في مقالة تفعيل واجهة برمجة التطبيقات Geospatial API لإعداد واجهة برمجة التطبيقات Geospatial API.
تفعيل هندسة المشهد في الشارع
تحصل واجهة برمجة التطبيقات Geospatial API على بيانات هندسة المشهد في الشارع عند ضبط GeospatialMode
على GeospatialMode.ENABLED
وStreetscapeGeometryMode
على StreetscapeGeometryMode.ENABLED
.
Java
Config config = session.getConfig(); // Streetscape Geometry requires the Geospatial API to be enabled. config.setGeospatialMode(Config.GeospatialMode.ENABLED); // Enable Streetscape Geometry. config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED); session.configure(config);
Kotlin
session.configure( session.config.apply { // Streetscape Geometry requires the Geospatial API to be enabled. geospatialMode = Config.GeospatialMode.ENABLED // Enable Streetscape Geometry. streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED } )
الحصول على هندسة المشهد في الشوارع في جلسة ARCore
استخدِمSession.getAllTrackables()
واستخدِم StreetscapeGeometry.class
لفلترة النتائج.
Java
session.getAllTrackables(StreetscapeGeometry.class);
Kotlin
session.getAllTrackables(StreetscapeGeometry::class.java)
فهم StreetscapeGeometry
يحتوي StreetscapeGeometry
على معلومات عن مبنى:
-
StreetscapeGeometry.getType()
يحدّد StreetscapeGeometry كتضاريس أو مبنى. -
StreetscapeGeometry.getMesh()
الحصول على مضلّعMesh
يتوافق مع هذا التضاريس أو المبنى -
StreetscapeGeometry.getMeshPose()
يصف مصدر الشكل الهندسي. يجب تحويل جميع النقاط فيMesh
باستخدامStreetscapeGeometry.getMeshPose()
. -
StreetscapeGeometry.getQuality()
يعرض جودة بيانات الشبكة. يتم وصف مستويات التفاصيل في معيار CityGML 2.0.
مستوى التفاصيل 1 للمبنى
يتكوّن StreetscapeGeometry.Quality.BUILDING_LOD_1
من مساحات البناء التي تمّت إزالتها من السطح إلى أعلى لإنشاء سطح مستوٍ. قد تكون ارتفاعات المباني غير دقيقة.
مستوى التفاصيل 2 للمبنى
سيكون لدى StreetscapeGeometry.Quality.BUILDING_LOD_2
شكل هندسي بدقة أعلى. ستتطابق الجدران والأسقف الشبكية بشكلٍ أكبر مع شكل المبنى. قد تظل العناصر الأصغر حجمًا، مثل المداخن أو فتحات التهوية على السطح، بارزة خارج الشبكة.
فهم Mesh
Mesh
هي شبكة مضلّعات تمثّل إعادة إنشاء سطح هندسة المشهد في الشارع.
يحتوي كل Mesh
على مخزن قمم ومخزن فهارس:
Mesh.getVertexListSize()
تسترجع عدد الرؤوس في هذه الشبكة.Mesh.getVertexList()
احصل على مواضع رؤوس الشبكة المتسلسلة، بالإحداثيات النسبية إلىStreetscapeGeometry.getMeshPose()
.Mesh.getIndexListSize()
تسترجع عدد الفهارس في هذه الشبكة.Mesh.getIndexList()
احصل على فهارس الرؤوس التي تشكّل وجهًا.
إرفاق محتوى الواقع المعزّز بـ StreetscapeGeometry
هناك طريقتان لإرفاق محتوى الواقع المعزّز بأشكال المشهد في الشوارع:
- فعِّل العمق المكاني واستخدِم اختبار مدى توفّر بيانات العمق. هذه هي الطريقة الأسهل والمُقترَحة.
- استخدِم
Trackable.createAnchor()
لإنشاء نقطة تثبيت في وضع معيّن مرتبطة بعنصرStreetscapeGeometry
. ستكتسب هذه العلامة الفارقة حالة التتبّع من العنصر الرئيسيStreetscapeGeometry
.
إجراء اختبار مطابقة مع StreetscapeGeometry
يمكن استخدام Frame.hitTest()
لإجراء اختبار التصادم مع هندسة المشهد في الشارع. في حال العثور على تقاطعات، يحتوي HitResult
على معلومات عن وضع الجسم في موقع الاصطدام بالإضافة إلى إشارة إلى StreetscapeGeometry
الذي تم اصطدامه. يمكن تمرير هندسة المشهد في الشارع إلى Trackable.createAnchor()
لإنشاء عنصر تثبيت مرتبط بها.
Java
for (HitResult hit : frame.hitTest(singleTapEvent)) { if (hit.getTrackable() instanceof StreetscapeGeometry) { Pose hitPose = hit.getHitPose(); hit.getTrackable().createAnchor(hitPose); } }
Kotlin
for (hit in frame.hitTest(singleTapEvent)) { if (hit.trackable is StreetscapeGeometry) { val hitPose = hit.hitPose hit.trackable.createAnchor(hitPose) } }
تفعيل "التفاصيل الجغرافية المكانية"
تجمع ميزة العمق الجغرافي المكاني بين هندسة المشهد في الشارع ومعلومات أجهزة الاستشعار المحلية لتحسين بيانات العمق. عند تفعيل ميزة "العمق الجغرافي المكاني"، يتم تعديل عمق الصورة الناتجة وصور العمق الأوّلي لتضمين شكل المشهد في الشوارع بتنسيق ثنائي الأبعاد بالإضافة إلى العمق المرصود محليًا. وقد يؤدي ذلك إلى تحسين دقة الوضعيات باستخدام ميزة "العمق".