Streetscape Geometry API เป็นเรขาคณิตของภูมิประเทศ อาคาร หรือโครงสร้างอื่นๆ ในฉาก เรขาคณิตนั้นสามารถใช้สำหรับการซ้อนทับ แสดงผล หรือวางเนื้อหา AR ผ่าน API การทดสอบ Hit ข้อมูลเรขาคณิตใน Streetscape ได้มาจากภาพ Google Street View
ตั้งค่า Geospatial API
หากต้องการใช้ Streetscape Geometry คุณจะต้องตั้งค่า Geospatial API ในโครงการ ทำตามคำแนะนำในการเปิดใช้ Geospatial API เพื่อตั้งค่า Geospatial API
เปิดใช้เรขาคณิตใน Streetscape
Geospatial API รับข้อมูล Streetscape Geometry เมื่อตั้งค่า 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
มีข้อมูลเกี่ยวกับอาคาร ดังนี้
-
ArStreetscapeGeometry_getType()
ระบุเรขาคณิตของ Streetscape เป็นภูมิประเทศหรือสิ่งปลูกสร้าง -
ArStreetscapeGeometry_acquireMesh()
รับรูปหลายเหลี่ยมArMesh
ที่สอดคล้องกับภูมิประเทศหรือสิ่งปลูกสร้างนี้ -
ArStreetscapeGeometry_getMeshPose()
อธิบายที่มาของเรขาคณิต จุดทั้งหมดในArMesh
ควรเปลี่ยนรูปแบบภายในArStreetscapeGeometry_getMeshPose()
-
ArStreetscapeGeometry_getQuality()
ระบุคุณภาพของข้อมูล Mesh ระดับรายละเอียดอธิบายไว้ในมาตรฐาน 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 ทำได้ 2 วิธีดังนี้
- เปิดใช้ Geospatial Depth และใช้ Depth Hit-test ซึ่งเป็นวิธีที่แนะนำซึ่งทำได้ง่ายกว่า
- ใช้
ArTrackable_acquireNewAnchor()
เพื่อสร้างแท็ก Anchor ในท่าที่กำหนดไว้และแนบไว้กับArStreetscapeGeometry
โฆษณา Anchor นี้จะรับช่วงสถานะการติดตามจากArStreetscapeGeometry
ระดับบนสุด
ทำการทดสอบ Hit กับ ArStreetscapeGeometry
สามารถใช้ ArFrame_hitTest
เพื่อทดสอบ Hit กับเรขาคณิตของ Streetscape ได้ หากพบทางแยก ArHitResult
จะมีข้อมูลท่าทางเกี่ยวกับตำแหน่งของ Hit รวมถึงการอ้างอิง ArStreetscapeGeometry
ที่ชนอยู่ คุณสามารถส่งเรขาคณิตของ Streetscape นี้ไปยัง ArTrackable_acquireNewAnchor()
เพื่อสร้าง Anchor ที่แนบกับภาพได้
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 เข้ากับอินพุตเซ็นเซอร์ในเครื่องเพื่อปรับปรุงข้อมูลความลึก เมื่อเปิดใช้ Geospatial Depth อยู่ ระบบจะแก้ไขภาพความลึกของภาพและ RAW ของเอาต์พุตให้รวมเรขาคณิต Streetscape แบบแรสเตอร์นอกเหนือจากความลึกที่สังเกตได้ในพื้นที่ การดำเนินการนี้อาจปรับปรุงความแม่นยำของท่าทางโดยใช้ความลึก