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
UtilizzaGARFrame.streetscapeGeometries
per ottenere tutti gli oggetti GARStreetscapeGeometry
.
Comprendi GARStreetscapeGeometry
GARStreetscapeGeometry
contiene informazioni su un edificio:
-
GARStreetscapeGeometry.type
Identifica StreetscapeGeometry come terreno o come edificio. -
GARStreetscapeGeometry.mesh
Ottieni un poligonoGARMesh
corrispondente a questo terreno o edificio. -
GARStreetscapeGeometry.meshTransform
Descrive l'origine della geometria. Tutti i punti inGARMesh
devono essere trasformati daGARStreetscapeGeometry.meshTransform
. -
GARStreetscapeGeometry.quality
Fornisce la qualità dei dati mesh. I livelli di dettaglio sono descritti nello standard CityGML 2.0.
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:
GARMesh.vertexCount
Recupera il numero di vertici in questo mesh.GARMesh.vertices
Ottieni le posizioni concatenate dei vertici della rete mesh, in coordinate relative aGARStreetscapeGeometry.meshTransform
.GARMesh.triangleCount
Recupera il numero di indici in questo mesh.GARMesh.triangles
Ottieni gli indici dei vertici che compongono una faccia.
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];