Streetscape Geometry API は、シーン内の地形、建物、その他の構造物のジオメトリを提供します。ジオメトリは、ヒットテスト API を介してオクルージョン、レンダリング、AR コンテンツの配置に使用できます。ストリートビュー ジオメトリ データは、Google ストリートビューの画像を通じて取得されます。
サンプルを試す
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 セッションでストリートビュー ジオメトリを取得する
すべてのGARStreetscapeGeometry
オブジェクトを取得するには、GARFrame.streetscapeGeometries
を使用します。
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];