Streetscape 幾何圖形 API 提供場景中地形、建築物或其他建築物的幾何圖形。透過命中測試 API,幾何圖形可用於遮蔽、顯示或放置 AR 內容。可透過 Google 街景服務圖像取得街景服務幾何圖形資料。
試用範例
GeospatialExample 應用程式將說明如何取得及算繪 Streetscape Geometries。
設定 Geospatial API
如要使用 Streetscape 幾何圖形,必須先在專案中設定 Geospatial API。 按照操作說明啟用 Geospatial API,設定 Geospatial API。
啟用 Streetscape 幾何圖形
當 GARGeospatialMode
設為 GARGeospatialModeEnabled
,且 GARStreetscapeGeometryMode
設為 GARStreetscapeGeometryModeEnabled
時,Geospatial API 可取得街景服務幾何圖形資料。
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
在 ARCore 工作階段中取得 Streetscape 幾何圖形
使用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
是一個多邊形網格,代表街景服務幾何圖形的表面重建。
每個 GARMesh
都包含頂點緩衝區和索引緩衝區:
GARMesh.vertexCount
擷取這個網格中的頂點數量。
GARMesh.vertices
取得網格頂點的串連位置 (相對於GARStreetscapeGeometry.meshTransform
。
GARMesh.triangleCount
擷取這個網格中的索引數量。
GARMesh.triangles
取得構成表面的頂點索引。
將 AR 內容附加至 GARStreetscapeGeometry
使用 GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
建立位於 GARStreetscapeGeometry.meshTransform
附近的指定姿勢的錨點。這個錨定標記會沿用上層 GARStreetscapeGeometry
的追蹤狀態。
對 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];