Streetscape Geometry API มีเรขาคณิตของภูมิประเทศ อาคาร หรือโครงสร้างอื่นๆ ในฉาก เรขาคณิตสามารถใช้สำหรับการซ้อนทับ การแสดงภาพ หรือวางเนื้อหา AR ผ่าน API การทดสอบ Hit ข้อมูลเรขาคณิตใน Street View ได้มาจากภาพของ Google Street View
ดูตัวอย่าง
แอป GeospatialExample สาธิตวิธีรับและแสดงผล Streetscape Geometries
ตั้งค่า Geospatial API
ในการใช้ Streetscape Geometry คุณจะต้องตั้งค่า Geospatial API ในโปรเจ็กต์ของคุณ โปรดทำตามวิธีการในการเปิดใช้ Geospatial API เพื่อตั้งค่า Geospatial API
เปิดใช้ Streetscape Geometry
API ทางภูมิศาสตร์จะรับข้อมูลเรขาคณิตของ Streetscape เมื่อตั้งค่า GARGeospatialMode
เป็น GARGeospatialModeEnabled
และตั้งค่า GARStreetscapeGeometryMode
เป็น GARStreetscapeGeometryModeEnabled
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
รับเรขาคณิตของ Streetscape ในเซสชัน 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
เป็นโครงข่ายรูปหลายเหลี่ยมที่แสดงการสร้างพื้นผิวใหม่ของเรขาคณิตใน Streetscape
GARMesh
แต่ละรายการจะมีบัฟเฟอร์เวอร์เท็กซ์และบัฟเฟอร์ดัชนี ดังนี้
GARMesh.vertexCount
ดึงจำนวนจุดยอดในตาข่ายนี้GARMesh.vertices
รับตำแหน่งการต่อกันของจุดยอดมุมแบบตาข่ายในพิกัดที่สัมพันธ์กับGARStreetscapeGeometry.meshTransform
GARMesh.triangleCount
ดึงจำนวนดัชนีใน Mesh นี้GARMesh.triangles
รับดัชนีของจุดยอดที่ประกอบกันเป็นใบหน้า
แนบเนื้อหา AR ไปยัง GARStreetscapeGeometry
ใช้ GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
เพื่อสร้าง Anchor ในท่าทางที่กำหนดใกล้กับ GARStreetscapeGeometry.meshTransform
Anchor นี้จะรับสถานะการติดตามมาจาก GARStreetscapeGeometry
ระดับบน
ทำการทดสอบ Hit กับ GARStreetscapeGeometry
คุณใช้ GARSession.raycastStreetscapeGeometry:direction:error:
เพื่อทดสอบกับเรขาคณิตของ Streetscape ได้ หากพบทางแยก GARStreetscapeGeometryRaycastResult
จะมีข้อมูลตำแหน่งเกี่ยวกับตำแหน่งของ Hit รวมถึงการอ้างอิง GARStreetscapeGeometry
ที่เกิด Hit เรขาคณิตของ Streetscape สามารถส่งผ่านไปยัง 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];