Streetscape Geometry API ให้เรขาคณิตของภูมิประเทศ อาคาร หรือโครงสร้างอื่นๆ ในฉาก เรขาคณิตนี้สามารถใช้สำหรับการบดบัง การแสดงผล หรือการวางเนื้อหา AR ผ่าน Hit-Test API ข้อมูลเรขาคณิตของสภาพแวดล้อมบนท้องถนนได้รับผ่านภาพจาก Google Street View
ลองใช้ตัวอย่าง
แอป GeospatialExample แสดงวิธีรับและแสดงผลเรขาคณิตของภาพถนน
ตั้งค่า Geospatial API
หากต้องการใช้เรขาคณิตของภาพถนน คุณจะต้องตั้งค่า Geospatial API ในโปรเจ็กต์ ทําตามวิธีการในการเปิดใช้ Geospatial API เพื่อตั้งค่า Geospatial API
เปิดใช้เรขาคณิตของสภาพแวดล้อมถนน
Geospatial API จะรับข้อมูลเรขาคณิตของภาพถนนเมื่อตั้งค่า GARGeospatialMode เป็น GARGeospatialModeEnabled และตั้งค่า GARStreetscapeGeometryMode เป็น GARStreetscapeGeometryModeEnabled
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
รับเรขาคณิตของภาพถนนในเซสชัน ARCore
ใช้GARFrame.streetscapeGeometries เพื่อรับออบเจ็กต์ GARStreetscapeGeometry ทั้งหมด
ทำความเข้าใจ GARStreetscapeGeometry
GARStreetscapeGeometry มีข้อมูลเกี่ยวกับอาคาร ดังนี้
-
GARStreetscapeGeometry.type
ระบุ StreetscapeGeometry ว่าเป็นภูมิประเทศหรืออาคาร -
GARStreetscapeGeometry.mesh
รับรูปหลายเหลี่ยมGARMeshที่สอดคล้องกับภูมิประเทศหรืออาคารนี้ -
GARStreetscapeGeometry.meshTransform
อธิบายจุดเริ่มต้นของเรขาคณิต จุดทั้งหมดในGARMeshควรเปลี่ยนรูปแบบโดยGARStreetscapeGeometry.meshTransform -
GARStreetscapeGeometry.quality
แสดงคุณภาพของข้อมูลเมช ระดับรายละเอียดอธิบายไว้ในมาตรฐาน CityGML 2.0
LOD 1 ของอาคาร
GARStreetscapeGeometryQualityBuildingLOD_1 ประกอบด้วยร่องรอยของอาคารที่ยื่นออกมาด้านบนเป็นพื้นราบ ความสูงของอาคารอาจไม่ถูกต้อง

อาคาร LOD 2
GARStreetscapeGeometryQualityBuildingLOD_2 จะมีเรขาคณิตที่ถูกต้องมากขึ้น ผนังและหลังคาตาข่ายจะเข้ากับรูปร่างของอาคารมากกว่า องค์ประกอบขนาดเล็ก เช่น ปล่องไฟหรือช่องระบายอากาศบนหลังคาอาจยังยื่นออกมานอกตาข่าย

ทำความเข้าใจ GARMesh
GARMesh คือเมชรูปหลายเหลี่ยมที่แสดงการจำลองพื้นผิวของเรขาคณิตของภาพถนน
GARMesh แต่ละรายการประกอบด้วยบัฟเฟอร์เวิร์กเท็กซ์และบัฟเฟอร์อินเด็กซ์ ดังนี้
GARMesh.vertexCount
ดึงข้อมูลจํานวนจุดยอดในเมชนี้GARMesh.vertices
รับตําแหน่งที่ต่อเชื่อมกันของจุดยอดของเมชในพิกัดที่สัมพันธ์กับGARStreetscapeGeometry.meshTransformGARMesh.triangleCount
ดึงข้อมูลจํานวนอินเด็กซ์ในเมชนี้GARMesh.triangles
รับดัชนีของจุดยอดที่ประกอบกันเป็นใบหน้า
แนบเนื้อหา AR กับ GARStreetscapeGeometry
ใช้ GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: เพื่อสร้างจุดยึดในท่าทางที่ต้องการใกล้กับ GARStreetscapeGeometry.meshTransform หมุดนี้จะรับสถานะการติดตามมาจาก GARStreetscapeGeometry หลัก
ทำการทดสอบ Hit-Test กับ GARStreetscapeGeometry
GARSession.raycastStreetscapeGeometry:direction:error: ใช้เพื่อทำการทดสอบการคลิกกับเรขาคณิตของภาพถนนได้ หากพบจุดตัด GARStreetscapeGeometryRaycastResult จะมีข้อมูลท่าทางเกี่ยวกับตำแหน่งที่โดน รวมถึงการอ้างอิงถึง GARStreetscapeGeometry ที่โดน เรขาคณิตของภาพถนนนี้สามารถส่งไปยัง GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: เพื่อสร้างจุดยึดที่แนบมากับเรขาคณิตดังกล่าว
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];