ใช้สิ่งปลูกสร้างและภูมิประเทศรอบตัวคุณใน Android NDK (C)

Streetscape Geometry API มีเรขาคณิตของภูมิประเทศ อาคาร หรือโครงสร้างอื่นๆ ในฉาก เรขาคณิตสามารถใช้สำหรับการซ้อนทับ การแสดงภาพ หรือวางเนื้อหา AR ผ่าน API การทดสอบ Hit ข้อมูลเรขาคณิตใน Street View ได้มาจากภาพของ Google Street View

ตั้งค่า Geospatial API

ในการใช้ Streetscape Geometry คุณจะต้องตั้งค่า Geospatial API ในโปรเจ็กต์ของคุณ โปรดทำตามวิธีการในการเปิดใช้ Geospatial API เพื่อตั้งค่า Geospatial API

เปิดใช้ Streetscape Geometry

API ทางภูมิศาสตร์จะรับข้อมูลเรขาคณิตของ Streetscape เมื่อตั้งค่า 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);

รับเรขาคณิตของ 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 ทำได้ 2 วิธีดังนี้

ทำการทดสอบ Hit กับ ArStreetscapeGeometry

คุณใช้ ArFrame_hitTest เพื่อทดสอบกับเรขาคณิตของ Streetscape ได้ หากพบทางแยก ArHitResult จะมีข้อมูลตำแหน่งเกี่ยวกับตำแหน่งของ Hit รวมถึงการอ้างอิง ArStreetscapeGeometry ที่เกิด Hit เรขาคณิตของ 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);

เปิดใช้ความลึกของภูมิสารสนเทศ

ความลึกตามพื้นที่ รวมเรขาคณิตของ Streetscape เข้าด้วยกัน พร้อมอินพุตจากเซ็นเซอร์ในตัวเครื่อง เพื่อปรับปรุงข้อมูลความลึก เมื่อเปิดใช้ความลึกของภูมิสารสนเทศ ความลึกของภาพ และภาพความลึกที่เป็นข้อมูลดิบ ได้รับการแก้ไขให้รวมเรขาคณิตของ Streetscape แบบแรสเตอร์ นอกเหนือจากความลึกที่สังเกตได้ในพื้นที่ การทำเช่นนี้อาจเพิ่มความแม่นยำในการโพสท่าโดยใช้ความลึกได้