ใช้สิ่งปลูกสร้างและภูมิประเทศรอบตัวคุณใน iOS

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 มีข้อมูลเกี่ยวกับอาคาร ดังนี้

อาคาร 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];