Le API Streetscape Geometry forniscono la geometria del terreno, degli edifici o di altre strutture in una scena. La geometria può essere utilizzata per l'occlusione, il rendering o il posizionamento di contenuti AR tramite API di hit-test. I dati di Streetscape Geometry vengono ottenuti tramite le immagini di Google Street View.
Prova il Sample
L'app GeospatialExample mostra come ottenere e visualizzare le geometrie di Streetscape.
Configurare l'API Geospatial
Per utilizzare la geometria di Streetscape, devi configurare l'API Geospatial nel tuo progetto. Segui le istruzioni per abilitare l'API Geospatial per configurare l'API Geospatial.
Attiva la geometria della strada
L'API Geospatial ottiene i dati sulla geometria della strada 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 la geometria della strada in una sessione ARCore
UtilizzaGARFrame.streetscapeGeometries
per ottenere tutti gli oggetti GARStreetscapeGeometry
.
Informazioni su GARStreetscapeGeometry
GARStreetscapeGeometry
contiene informazioni su un edificio:
-
GARStreetscapeGeometry.type
Identifica StreetscapeGeometry come terreno o edificio. -
GARStreetscapeGeometry.mesh
Ottieni un poligonoGARMesh
che corrisponda 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 della mesh. I livelli di dettaglio sono descritti nello standard CityGML 2.0.
LOD dell'edificio 1
GARStreetscapeGeometryQualityBuildingLOD_1
è costituito da impronte di edifici estruse verso l'alto fino a una sommità piana. Le altezze degli edifici potrebbero non essere precise.
LOD dell'edificio 2
GARStreetscapeGeometryQualityBuildingLOD_2
avrà una geometria con una fedeltà superiore. Le pareti e i tetti mesh si adatteranno meglio alla forma dell'edificio. Elementi più piccoli come camini o prese d'aria sul tetto potrebbero comunque sporgere all'esterno della maglia.
Informazioni su GARMesh
GARMesh
è una mesh poligonale che rappresenta una ricostruzione della superficie della geometria della strada.
Ogni GARMesh
include un buffer di vertici e un buffer di indici:
GARMesh.vertexCount
Recupero il numero di vertici in questo mesh.GARMesh.vertices
Ottieni le posizioni concatenate dei vertici del mesh, in coordinate relative aGARStreetscapeGeometry.meshTransform
.GARMesh.triangleCount
Recupero il numero di indici in questo mesh.GARMesh.triangles
Ottieni gli indici dei vertici che compongono un lato.
Allega contenuti AR a un GARStreetscapeGeometry
Usa GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
per creare un'ancora in una determinata posa vicino a GARStreetscapeGeometry.meshTransform
. Questo ancora erediterà lo stato di monitoraggio dall'elemento principale GARStreetscapeGeometry
.
Esegui un test di corrispondenza su GARStreetscapeGeometry
GARSession.raycastStreetscapeGeometry:direction:error:
può essere utilizzato per eseguire test di corrispondenza rispetto alla geometria della strada. Se vengono trovate intersezioni, GARStreetscapeGeometryRaycastResult
contiene informazioni sulla posizione dell'impatto e un riferimento all'GARStreetscapeGeometry
colpito. Questa geometria del paesaggio urbano può essere passata a GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
per creare un'ancora collegata.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];