توفر واجهات برمجة تطبيقات Streetscape Geometry API هندسة التضاريس أو المباني أو البنى الأخرى في المشهد. يمكن استخدام الأبعاد الهندسية للتظليل أو العرض أو وضع محتوى الواقع المعزّز من خلال واجهات برمجة تطبيقات اختبار النتائج. يتم الحصول على بيانات هندسة صور الشارع من خلال صور "التجوّل الافتراضي من Google".
تجربة النموذج
يوضح تطبيق GeospatialExample كيفية الحصول على هندسة صور الشارع وعرضها.
إعداد واجهة برمجة التطبيقات الجغرافية المكانية
لاستخدام Streetscape Geometry، يجب إعداد واجهة برمجة التطبيقات Geospatial API في مشروعك. اتّبِع التعليمات بشأن تفعيل واجهة برمجة التطبيقات Geospatial API لإعداد واجهة برمجة التطبيقات Geospatial.
تفعيل هندسة صورة الشارع
تحصل واجهة برمجة التطبيقات الجغرافية المكانية على بيانات "هندسة التجوّل الافتراضي" عند ضبط GARGeospatialMode
على GARGeospatialModeEnabled
وضبط GARStreetscapeGeometryMode
على GARStreetscapeGeometryModeEnabled
.
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
احصل على هندسة Streetscape Geometry في جلسة ARCore
يمكنك استخدامGARFrame.streetscapeGeometries
للحصول على جميع عناصر GARStreetscapeGeometry
.
فهم GARStreetscapeGeometry
يحتوي القسم GARStreetscapeGeometry
على معلومات حول مبنى:
-
GARStreetscapeGeometry.type
تحدِّد ميزة StreetscapeGeometry كتضاريس أو كمبنى. -
GARStreetscapeGeometry.mesh
يجب الحصول على مضلّعGARMesh
يتطابق مع هذه التضاريس أو المبنى. -
GARStreetscapeGeometry.meshTransform
لوصف أصل الهندسة. يجب تحويل جميع النقاط فيGARMesh
باستخدامGARStreetscapeGeometry.meshTransform
. -
GARStreetscapeGeometry.quality
يتم توفير جودة بيانات الشبكة المتداخلة. يتم توضيح مستويات التفاصيل في معيار CityGML 2.0.
مبنى LOD 1
تتألف GARStreetscapeGeometryQualityBuildingLOD_1
من آثار أقدام المباني المنبثقة إلى أعلى مسطّحة. قد تكون الارتفاعات غير دقيقة في المباني.
مبنى LOD 2
GARStreetscapeGeometryQualityBuildingLOD_2
سيكون له شكل هندسي عالي الدقة. تتطابق الجدران والأسطح المتداخلة بشكل وثيق مع شكل المبنى. وقد تبرز العناصر الأصغر حجمًا خارج الشبكة، مثل المداخن أو فتحات السقف.
فهم GARMesh
GARMesh
عبارة عن شبكة مضلعة تمثل إعادة بناء سطحي لهندسة صورة الشارع.
يتضمن كل GARMesh
موردًا احتياطيًا للرأس ومخزنًا مؤقتًا للفهرس:
GARMesh.vertexCount
لاسترداد عدد الرؤوس في هذه الشبكة المتداخلة.GARMesh.vertices
احسب المواضع المتسلسلة لرؤوس الشبكة المتداخلة بالإحداثيات بالنسبة إلىGARStreetscapeGeometry.meshTransform
.GARMesh.triangleCount
استرداد عدد الفهارس في هذه الشبكة المتداخلة.GARMesh.triangles
يجب الحصول على مؤشرات الرؤوس التي تشكّل وجهًا.
إرفاق محتوى الواقع المعزّز بجهاز GARStreetscapeGeometry
استخدِم GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
لإنشاء ارتساء في وضع معيّن بالقرب من GARStreetscapeGeometry.meshTransform
. سيكتسب هذا الارتساء حالة تتبّعه من العنصر الرئيسي GARStreetscapeGeometry
.
إجراء اختبار نتيجة مقارنةً بـ GARStreetscapeGeometry
يمكن استخدام GARSession.raycastStreetscapeGeometry:direction:error:
لإجراء الاختبار في ضوء Streetscape Geometry. في حال العثور على تقاطعات، تحتوي السمة GARStreetscapeGeometryRaycastResult
على معلومات حول وضع الموقع الجغرافي للنتيجة بالإضافة إلى إشارة إلى GARStreetscapeGeometry
التي تم النقر عليها. يمكن تمرير شكل الشارع الهندسي هذا إلى GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
لإنشاء علامة ارتساء مرتبطة بها.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];