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

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

Beispiel ausprobieren

Mit der GeospatialExample App wird gezeigt, wie Streetscape-Geometrien abgerufen und gerendert werden.

Geospatial API einrichten

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

Streetscape-Geometrie aktivieren

Die Geospatial API ruft Streetscape-Geometriedaten 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.

GARStreetscapeGeometry verstehen

GARStreetscapeGeometry enthält Informationen zu einem Gebäude:

LOD 1 erstellen

GARStreetscapeGeometryQualityBuildingLOD_1 besteht aus Gebäuden, die nach oben auf eine flache Oberfläche extrudiert werden. Gebäudehöhen können ungenau sein.

LOD 2 erstellen

GARStreetscapeGeometryQualityBuildingLOD_2 weist eine höhere Geometrie auf. Gitterwände und Dächer passen sich besser an die Form des Gebäudes an. Auch kleinere Elemente wie Schornsteine oder Lüftungsöffnungen können aus dem Gitter herausragen.

GARMesh verstehen

GARMesh ist ein Polygonnetz, das eine Oberflächenrekonstruktion der Streetscape-Geometrie darstellt. Jedes GARMesh enthält einen Vertex-Zwischenspeicher und einen Indexzwischenspeicher:

AR-Inhalte an GARStreetscapeGeometry anhängen

Erstellen Sie mit GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: einen Anker bei einer bestimmten Position in der Nähe von GARStreetscapeGeometry.meshTransform. Dieser Anker übernimmt den Tracking-Status vom übergeordneten GARStreetscapeGeometry.

Treffertest für GARStreetscapeGeometry durchführen

GARSession.raycastStreetscapeGeometry:direction:error: kann für Treffertests mit Streetscape-Geometriedaten verwendet werden. Wenn Kreuzungen gefunden werden, enthält GARStreetscapeGeometryRaycastResult Poseninformationen zur Trefferposition sowie einen Verweis auf das GARStreetscapeGeometry, für das der Treffer getroffen wurde. Diese Streetscape-Geometrie kann an GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: übergeben werden, um einen Anker hinzuzufügen.

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