Utilizzare gli edifici e il terreno intorno a te su iOS

Le API Streetscape Geometry forniscono la geometria del terreno, degli edifici o di altre strutture in una scena. La geometria può essere utilizzata per occlusione, rendering o posizionamento di contenuti AR tramite API di hit test. I dati di Street View Geometry sono ottenuti tramite le immagini di Google Street View.

Prova l'esempio

L'app GeospatialExample illustra come ottenere e visualizzare le geometrie di Streetscape.

Configura l'API Geospatial

Per utilizzare Streetscape Geometry, devi configurare l'API Geospatial nel tuo progetto. Segui le istruzioni sull'abilitazione dell'API Geospatial per configurare l'API Geospatial.

Attiva Streetscape Geometry

L'API Geospatial ottiene i dati di Streetscape Geometry quando GARGeospatialMode è impostato su GARGeospatialModeEnabled e GARStreetscapeGeometryMode è impostato su GARStreetscapeGeometryModeEnabled.

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

Ottenere Streetscape Geometry in una sessione ARCore

Utilizza GARFrame.streetscapeGeometries per ottenere tutti gli oggetti GARStreetscapeGeometry.

Comprendi GARStreetscapeGeometry

GARStreetscapeGeometry contiene informazioni su un edificio:

LOD edificio 1

GARStreetscapeGeometryQualityBuildingLOD_1 è costituito da impronte di edifici estruse verso l'alto fino a una sommità piatta. L'altezza degli edifici potrebbe non essere accurata.

LOD edificio 2

GARStreetscapeGeometryQualityBuildingLOD_2 avrà una geometria a fedeltà più elevata. Le pareti e i tetti a griglia si avvicinano maggiormente alla forma dell'edificio. Elementi più piccoli, come camini o prese d'aria sul tetto, potrebbero comunque fuoriuscire dalla rete.

Comprendi GARMesh

GARMesh è una maglia poligonale che rappresenta una ricostruzione della superficie della Geometria di Streetscape. Ogni elemento GARMesh include un vertex e un buffer indice:

Collegare contenuti AR a una GARStreetscapeGeometry

Utilizza GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: per creare un ancoraggio in una determinata posizione vicino a GARStreetscapeGeometry.meshTransform. Questo ancoraggio erediterà il proprio stato di monitoraggio dall'elemento GARStreetscapeGeometry principale.

Esegui un hit test su GARStreetscapeGeometry

GARSession.raycastStreetscapeGeometry:direction:error: può essere utilizzato per eseguire test su Streetscape Geometry. Se vengono rilevati degli incroci, GARStreetscapeGeometryRaycastResult contiene informazioni sulla posa sulla posizione dell'hit e un riferimento all'elemento GARStreetscapeGeometry interessato. Questa geometria di Streetscape può essere passata a GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: per creare un ancoraggio collegato.

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