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.meshTransform
GARMesh.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];