在 iOS 上使用周遭建築物和地形

Streetscape Geometry API 提供場景中地形、建築物或其他結構結構的幾何圖形。幾何圖形可用於透過點擊測試 API 進行遮蔽、算繪,或放置 AR 內容。街景服務幾何圖形資料是透過 Google 街景服務圖像取得。

試用範例

地理空間範例應用程式示範如何取得並呈現 Streetscape 幾何圖形。

設定地理空間 API

如要使用 Streetscape 幾何圖形,您必須在專案中設定 Geospatial API。 請按照啟用地理空間 API 的操作說明設定 Geospatial API。

啟用街景幾何圖形

GARGeospatialMode 設為 GARGeospatialModeEnabledGARStreetscapeGeometryMode 設為 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 包含建築物相關資訊:

建築 LOD 1

GARStreetscapeGeometryQualityBuildingLOD_1 包含從向上延伸至平面的建築物藍圖。建築物高度可能不正確。

建築物 LOD 2

GARStreetscapeGeometryQualityBuildingLOD_2的精確度較高。網格的牆壁和屋頂會更貼近建築物的形狀。煙囪或屋頂通風等小型特色,仍然可以在網格外醒來。

瞭解 GARMesh

GARMesh 是多邊形網格,代表街景服務幾何圖形的表面重新建構情形。 每個 GARMesh 都包含一個頂點緩衝區和索引緩衝區:

將 AR 內容附加至 GARStreetscapeGeometry

使用 GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:GARStreetscapeGeometry.meshTransform 附近的指定姿勢建立錨點。這個錨定標記會沿用父項 GARStreetscapeGeometry 的追蹤狀態。

GARStreetscapeGeometry 執行命中測試

GARSession.raycastStreetscapeGeometry:direction:error: 可用於對 Streetscape 幾何圖形進行測試。如果有交集,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];