Gebäude und Gelände in der Umgebung auf iOS-Geräten verwenden

Die Streetscape Geometry APIs stellen die Geometrie von Gelände, Gebäuden oder anderen Strukturen in einer Szene zur Verfügung. Die Geometrie kann zum Verdecken, Rendern oder Platzieren von AR-Inhalten über Hit-Test-APIs verwendet werden. Die Geometriedaten für Streetscape werden über Google Street View-Bilder abgerufen.

Beispiel ausprobieren

Die GeospatialExample App zeigt, wie Streetscape-Geometrien abgerufen und gerendert werden.

Geospatial API einrichten

Wenn Sie Streetscape Geometry verwenden möchten, müssen Sie die Geospatial API in Ihrem Projekt einrichten. Folgen Sie der Anleitung unter Geospatial API aktivieren, um die Geospatial API einzurichten.

Streetscape-Geometrie aktivieren

Die Geospatial API ruft Streetscape Geometry-Daten ab, wenn GARGeospatialMode auf GARGeospatialModeEnabled und GARStreetscapeGeometryMode auf GARStreetscapeGeometryModeEnabled gesetzt ist.

GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];

Streetscape-Geometrie in einer ARCore-Sitzung abrufen

Verwenden Sie GARFrame.streetscapeGeometries, um alle GARStreetscapeGeometry-Objekte abzurufen.

Informationen zu GARStreetscapeGeometry

GARStreetscapeGeometry enthält Informationen zu einem Gebäude:

LOD 1 wird erstellt

GARStreetscapeGeometryQualityBuildingLOD_1 besteht aus Gebäudegrundrissen, die nach oben zu einer flachen Oberseite extrudiert sind. Die Gebäudehöhen können ungenau sein.

LOD 2 wird erstellt

GARStreetscapeGeometryQualityBuildingLOD_2 hat eine höhere Geometrie. Gitterwände und -dächer passen sich der Form des Gebäudes besser an. Kleinere Elemente wie Schornsteine oder Dachlüfter führen möglicherweise noch außerhalb des Netzes.

Informationen zu GARMesh

GARMesh ist ein Polygonnetz, das eine Rekonstruktion der Oberfläche der Streetscape-Geometrie darstellt. Jedes GARMesh enthält einen Scheitelpunktzwischenspeicher und einen Indexzwischenspeicher:

AR-Inhalte an ein GARStreetscapeGeometry anhängen

Verwenden Sie GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:, um einen Anker an einer bestimmten Position in der Nähe von GARStreetscapeGeometry.meshTransform zu erstellen. Dieser Anker übernimmt seinen Tracking-Status vom übergeordneten Element GARStreetscapeGeometry.

Treffertest für GARStreetscapeGeometry durchführen

GARSession.raycastStreetscapeGeometry:direction:error: kann für Treffertests für die Streetscape-Geometrie verwendet werden. Wenn Kreuzungen gefunden werden, enthält GARStreetscapeGeometryRaycastResult Positionsinformationen zur Trefferposition sowie einen Verweis auf das GARStreetscapeGeometry-Element, das getroffen wurde. Diese Streetscape-Geometrie kann an GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: übergeben werden, um einen Anker zu erstellen.

NSArray<GARStreetscapeGeometryRaycastResult *> *results =
    [session raycastStreetscapeGeometry:arRaycastQuery.origin
                              direction:arRaycastQuery.direction
                                  error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
                                 transform:results[0].worldTransform
                                     error:&error];