API های Streetscape Geometry هندسه زمین، ساختمان ها یا سایر سازه ها را در یک صحنه ارائه می دهند. هندسه را می توان برای انسداد، رندر یا قرار دادن محتوای واقعیت افزوده از طریق APIهای تست ضربه استفاده کرد. دادههای Streetscape Geometry از طریق تصاویر نمای خیابان Google به دست میآیند.
Geospatial API را تنظیم کنید
برای استفاده از Streetscape Geometry، باید Geospatial API را در پروژه خود راه اندازی کنید. دستورالعملهای فعال کردن Geospatial API برای راهاندازی Geospatial API را دنبال کنید.
هندسه Streetscape را فعال کنید
Geospatial API زمانی که ArGeospatialMode
روی ArGeospatialModeEnabled
و ArStreetscapeGeometryMode
روی ArStreetscapeGeometryModeEnabled
تنظیم شده است، داده های Streetscape Geometry را به دست می آورد.
// 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 را در جلسه 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
یک شبکه چند ضلعی است که نمایانگر بازسازی سطحی از هندسه Streetscape است. هر ArMesh
شامل یک بافر رأس و بافر شاخص است:
-
ArMesh_getVertexListSize()
تعداد رئوس این مش را بازیابی می کند. -
ArMesh_getVertexList()
موقعیت های به هم پیوسته رئوس مش را در مختصات نسبت بهArStreetscapeGeometry_getMeshPose()
بدست آورید. -
ArMesh_getIndexListSize()
تعداد شاخص های این مش را بازیابی می کند. -
ArMesh_getIndexList()
شاخص های رئوس تشکیل دهنده یک صورت را به دست آورید.
محتوای AR را به یک ArStreetscapeGeometry
متصل کنید
دو راه برای پیوست کردن محتوای AR به Streetscape Geometry وجود دارد:- Geospatial Depth را فعال کنید و از یک Depth hit-test استفاده کنید. این روش توصیه شده و ساده تر است.
- از
ArTrackable_acquireNewAnchor()
برای ایجاد یک لنگر در یک حالت معین متصل بهArStreetscapeGeometry
استفاده کنید. این لنگر وضعیت ردیابی خود را ازArStreetscapeGeometry
والد به ارث می برد.
یک تست آماری در برابر ArStreetscapeGeometry
انجام دهید
ArFrame_hitTest
می توان برای تست ضربه در برابر Streetscape Geometry استفاده کرد. اگر تقاطعهایی پیدا شد، ArHitResult
حاوی اطلاعات پوزیشن درباره مکان ضربه و همچنین ارجاعی به ArStreetscapeGeometry
است. این هندسه Streetscape را می توان به 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);
عمق مکانی را فعال کنید
Geospatial Depth هندسه Streetscape را با ورودی حسگر محلی ترکیب میکند تا دادههای عمق را افزایش دهد. وقتی Geospatial Depth فعال است، عمق خروجی و تصاویر عمق خام اصلاح میشوند تا علاوه بر عمق مشاهدهشده بهصورت محلی، هندسه نمای خیابان شطرنجیشده را نیز شامل شود. این ممکن است دقت ژستها را با استفاده از Depth بهبود بخشد.