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

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

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