از ساختمان‌ها و زمین اطراف خود در Android NDK (C) استفاده کنید

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 حاوی اطلاعاتی در مورد یک ساختمان است:

LOD ساختمان 1

AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_1 متشکل از ردپای ساختمان است که به سمت بالا به سمت بالای صاف اکسترود شده است. ارتفاع ساختمان ممکن است نادرست باشد.

ساختمان LOD 2

AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_2 هندسه وفاداری بالاتری خواهد داشت. دیوارها و سقف های مشبک بیشتر با شکل ساختمان مطابقت دارند. ویژگی‌های کوچک‌تر مانند دودکش‌ها یا دریچه‌های سقف ممکن است همچنان در خارج از مش قرار بگیرند.

ArMesh درک کنید

ArMesh یک شبکه چند ضلعی است که نمایانگر بازسازی سطحی از هندسه Streetscape است. هر ArMesh شامل یک بافر رأس و بافر شاخص است:

محتوای AR را به یک ArStreetscapeGeometry متصل کنید

دو راه برای پیوست کردن محتوای AR به Streetscape Geometry وجود دارد:

یک تست آماری در برابر 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 بهبود بخشد.