Streetscape Geometry API มีเรขาคณิตของภูมิประเทศ อาคาร หรือโครงสร้างอื่นๆ ในฉาก เรขาคณิตสามารถใช้สำหรับการซ้อนทับ การแสดงภาพ หรือวางเนื้อหา AR ผ่าน API การทดสอบ Hit ข้อมูลเรขาคณิตของถนนได้จากภาพถ่าย Google Street View
ลองใช้ตัวอย่าง
แอปตัวอย่างgeospatial_java แสดงวิธีขอรับและแสดงผล Streetscape Geometries
ตั้งค่า Geospatial API
ในการใช้ Streetscape Geometry คุณจะต้องตั้งค่า Geospatial API ในโปรเจ็กต์ของคุณ โปรดทำตามวิธีการในการเปิดใช้ Geospatial API เพื่อตั้งค่า Geospatial API
เปิดใช้เรขาคณิตของภาพถนน
API ทางภูมิศาสตร์จะรับข้อมูลเรขาคณิตของ Streetscape เมื่อตั้งค่า GeospatialMode
เป็น GeospatialMode.ENABLED
และตั้งค่า StreetscapeGeometryMode
เป็น StreetscapeGeometryMode.ENABLED
Java
Config config = session.getConfig(); // Streetscape Geometry requires the Geospatial API to be enabled. config.setGeospatialMode(Config.GeospatialMode.ENABLED); // Enable Streetscape Geometry. config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED); session.configure(config);
Kotlin
session.configure( session.config.apply { // Streetscape Geometry requires the Geospatial API to be enabled. geospatialMode = Config.GeospatialMode.ENABLED // Enable Streetscape Geometry. streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED } )
รับเรขาคณิตของ Streetscape ในเซสชัน ARCore
ใช้Session.getAllTrackables()
และใช้ StreetscapeGeometry.class
เพื่อกรองผลลัพธ์
Java
session.getAllTrackables(StreetscapeGeometry.class);
Kotlin
session.getAllTrackables(StreetscapeGeometry::class.java)
ทำความเข้าใจ StreetscapeGeometry
StreetscapeGeometry
มีข้อมูลเกี่ยวกับอาคาร
-
StreetscapeGeometry.getType()
ระบุ StreetscapeGeometry ว่าเป็นภูมิประเทศหรือสิ่งปลูกสร้าง -
StreetscapeGeometry.getMesh()
รับรูปหลายเหลี่ยมMesh
ที่สอดคล้องกับภูมิประเทศหรืออาคารนี้ -
StreetscapeGeometry.getMeshPose()
อธิบายที่มาของรูปทรงเรขาคณิต จุดทั้งหมดในMesh
ควรแปลงด้วยStreetscapeGeometry.getMeshPose()
-
StreetscapeGeometry.getQuality()
แสดงคุณภาพของข้อมูลเมช ระดับรายละเอียดอธิบายไว้ในมาตรฐาน CityGML 2.0
อาคาร LOD 1
StreetscapeGeometry.Quality.BUILDING_LOD_1
ประกอบด้วยฟุตพริ้นท์ของอาคารที่ยื่นสูงขึ้นไปยังพื้นราบ ความสูงของอาคารอาจไม่ถูกต้อง
อาคาร LOD 2
StreetscapeGeometry.Quality.BUILDING_LOD_2
จะมีเรขาคณิตที่มีความแม่นยำสูงกว่า ผนังและหลังคาตาข่ายจะเข้ากับรูปร่างของอาคารมากกว่า ลักษณะขนาดเล็ก เช่น ปล่องไฟหรือช่องระบายอากาศบนหลังคาอาจยังคงโผล่ออกมานอกตาข่ายได้
ทำความเข้าใจ Mesh
Mesh
เป็นโครงข่ายรูปหลายเหลี่ยมที่แสดงการสร้างพื้นผิวใหม่ของเรขาคณิตใน Streetscape
Mesh
แต่ละรายการจะมีบัฟเฟอร์เวอร์เท็กซ์และบัฟเฟอร์ดัชนี ดังนี้
Mesh.getVertexListSize()
ดึงจำนวนจุดยอดในตาข่ายนี้Mesh.getVertexList()
รับตําแหน่งที่ต่อเชื่อมกันของจุดยอดของเมชในพิกัดที่สัมพันธ์กับStreetscapeGeometry.getMeshPose()
Mesh.getIndexListSize()
ดึงข้อมูลจํานวนอินเด็กซ์ในเมชนี้Mesh.getIndexList()
รับดัชนีของจุดยอดที่ประกอบกันเป็นใบหน้า
แนบเนื้อหา AR ไปยัง StreetscapeGeometry
การแนบเนื้อหา AR กับ Streetscape Geometry ทำได้ 2 วิธีดังนี้
- เปิดใช้ความลึกของภูมิสารสนเทศ และใช้ Depth Hit-test ซึ่งเป็นวิธีที่แนะนำและง่ายกว่า
- ใช้
Trackable.createAnchor()
เพื่อสร้าง Anchor ในท่าทางที่กำหนดซึ่งติดอยู่กับStreetscapeGeometry
Anchor นี้จะรับสถานะการติดตามมาจากStreetscapeGeometry
ระดับบน
ทำการทดสอบ Hit กับ StreetscapeGeometry
คุณใช้ Frame.hitTest()
เพื่อทดสอบกับเรขาคณิตของ Streetscape ได้ หากพบทางแยก HitResult
จะมีข้อมูลตำแหน่งเกี่ยวกับตำแหน่งของ Hit รวมถึงการอ้างอิง StreetscapeGeometry
ที่ Hit เรขาคณิตของภาพถนนนี้สามารถส่งไปยัง Trackable.createAnchor()
เพื่อสร้างจุดยึดที่แนบอยู่
Java
for (HitResult hit : frame.hitTest(singleTapEvent)) { if (hit.getTrackable() instanceof StreetscapeGeometry) { Pose hitPose = hit.getHitPose(); hit.getTrackable().createAnchor(hitPose); } }
Kotlin
for (hit in frame.hitTest(singleTapEvent)) { if (hit.trackable is StreetscapeGeometry) { val hitPose = hit.hitPose hit.trackable.createAnchor(hitPose) } }
เปิดใช้ความลึกของภูมิสารสนเทศ
ความลึกเชิงพื้นที่จะรวมเรขาคณิตของภาพถนนเข้ากับอินพุตจากเซ็นเซอร์ในพื้นที่เพื่อปรับปรุงข้อมูลความลึก เมื่อเปิดใช้ความลึกของภูมิสารสนเทศ ความลึกของภาพ และภาพความลึกที่เป็นข้อมูลดิบ ได้รับการแก้ไขให้รวมเรขาคณิตของ Streetscape แบบแรสเตอร์ นอกเหนือจากความลึกที่สังเกตได้ในพื้นที่ ซึ่งอาจช่วยเพิ่มความแม่นยำของท่าทางโดยใช้ข้อมูลเชิงลึกเกี่ยวกับภาพ