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