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

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

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];