Streetscape Geometry API เป็นเรขาคณิตของภูมิประเทศ อาคาร หรือโครงสร้างอื่นๆ ในฉาก เรขาคณิตนั้นสามารถใช้สำหรับการซ้อนทับ แสดงผล หรือวางเนื้อหา AR ผ่าน API การทดสอบ Hit ข้อมูลเรขาคณิตใน Streetscape ได้มาจากภาพ Google Street View
ดูตัวอย่าง
แอป GeospatialExample แสดงวิธีรับและแสดงผล Streetscape Geometries
ตั้งค่า Geospatial API
หากต้องการใช้ Streetscape Geometry คุณจะต้องตั้งค่า Geospatial API ในโครงการ ทำตามคำแนะนำในการเปิดใช้ Geospatial API เพื่อตั้งค่า Geospatial API
เปิดใช้เรขาคณิตใน Streetscape
Geospatial API รับข้อมูล Streetscape Geometry เมื่อตั้งค่า 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
ระบุเรขาคณิตของ Streetscape เป็นภูมิประเทศหรือสิ่งปลูกสร้าง -
GARStreetscapeGeometry.mesh
รับรูปหลายเหลี่ยมGARMesh
ที่สอดคล้องกับภูมิประเทศหรือสิ่งปลูกสร้างนี้ -
GARStreetscapeGeometry.meshTransform
อธิบายที่มาของเรขาคณิต จุดทั้งหมดในGARMesh
ควรเปลี่ยนรูปแบบภายในGARStreetscapeGeometry.meshTransform
-
GARStreetscapeGeometry.quality
ระบุคุณภาพของข้อมูล Mesh ระดับรายละเอียดอธิบายไว้ในมาตรฐาน CityGML 2.0
อาคาร LOD 1
GARStreetscapeGeometryQualityBuildingLOD_1
ประกอบด้วยรอยเท้าสิ่งปลูกสร้างที่ยื่นขึ้นไปยังแนวราบด้านบน ความสูงของอาคารอาจไม่ถูกต้อง
อาคาร LOD 2
GARStreetscapeGeometryQualityBuildingLOD_2
จะมีรูปทรงเรขาคณิตที่มีความแม่นยำสูงกว่า ผนังและหลังคาแบบตาข่ายจะตรงกับรูปทรงของอาคารมากขึ้น ส่วนฟีเจอร์ขนาดเล็กกว่า เช่น ปล่องไฟหรือช่องระบายอากาศบนหลังคา อาจยังโผล่ออกมานอกตาข่าย
ทำความเข้าใจเกี่ยวกับ GARMesh
GARMesh
คือตารางรูปหลายเหลี่ยมแสดงการสร้างพื้นผิวของเรขาคณิตใน Streetscape
GARMesh
แต่ละรายการจะมีบัฟเฟอร์จุดยอดและบัฟเฟอร์ดัชนีดังนี้
GARMesh.vertexCount
ดึงข้อมูลจำนวนจุดยอดในตาข่ายนี้GARMesh.vertices
รับตำแหน่งต่อกันของจุดตัดของตาข่ายในพิกัดที่สัมพันธ์กับGARStreetscapeGeometry.meshTransform
GARMesh.triangleCount
ดึงข้อมูลจำนวนดัชนีในตาข่ายนี้GARMesh.triangles
รับดัชนีของจุดยอดที่ประกอบกันเป็นใบหน้า
แนบเนื้อหา AR ไปยัง GARStreetscapeGeometry
ใช้ GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
เพื่อสร้าง Anchor ที่ท่าที่กำหนดไว้ใกล้กับ GARStreetscapeGeometry.meshTransform
โฆษณา Anchor นี้จะรับช่วงสถานะการติดตามจาก GARStreetscapeGeometry
ระดับบนสุด
ทำการทดสอบ Hit กับ GARStreetscapeGeometry
สามารถใช้ GARSession.raycastStreetscapeGeometry:direction:error:
เพื่อทดสอบ Hit กับเรขาคณิตของ Streetscape ได้ หากพบทางแยก GARStreetscapeGeometryRaycastResult
จะมีข้อมูลท่าทางเกี่ยวกับตำแหน่งของ Hit รวมถึงการอ้างอิง GARStreetscapeGeometry
ที่ชนอยู่ คุณสามารถส่งเรขาคณิตของ Streetscape นี้ไปยัง GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
เพื่อสร้าง Anchor ที่แนบกับภาพได้
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];