Utilizza gli edifici e il terreno intorno a te sull'SDK Android (Kotlin/Java)

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 di esempio geospatial_java 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 GeospatialMode è impostato su GeospatialMode.ENABLED e StreetscapeGeometryMode è impostato su StreetscapeGeometryMode.ENABLED.

JavaKotlin
Config config = session.getConfig();
// Streetscape Geometry requires the Geospatial API to be enabled.
config.setGeospatialMode(Config.GeospatialMode.ENABLED);
// Enable Streetscape Geometry.
config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED);
session.configure(config);
session.configure(
  session.config.apply {
    // Streetscape Geometry requires the Geospatial API to be enabled.
    geospatialMode = Config.GeospatialMode.ENABLED
    // Enable Streetscape Geometry.
    streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
  }
)

Ottenere la geometria della strada in una sessione ARCore

Usa Session.getAllTrackables() e StreetscapeGeometry.class per filtrare i risultati.

JavaKotlin
session.getAllTrackables(StreetscapeGeometry.class);
session.getAllTrackables(StreetscapeGeometry::class.java)

Informazioni su StreetscapeGeometry

StreetscapeGeometry contiene informazioni su un edificio:

LOD dell'edificio 1

StreetscapeGeometry.Quality.BUILDING_LOD_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

StreetscapeGeometry.Quality.BUILDING_LOD_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 Mesh

Mesh è una mesh poligonale che rappresenta una ricostruzione della superficie della geometria della strada. Ogni Mesh include un buffer di vertici e un buffer di indici:

Allega contenuti AR a un StreetscapeGeometry

Esistono due modi per collegare i contenuti AR alla geometria di Streetscape:

Esegui un test di corrispondenza su StreetscapeGeometry

Frame.hitTest() può essere utilizzato per eseguire test di corrispondenza rispetto alla geometria della strada. Se vengono trovate intersezioni, HitResult contiene informazioni sulla posizione dell'impatto e un riferimento all'StreetscapeGeometry colpito. Questa geometria del paesaggio urbano può essere passata a Trackable.createAnchor() per creare un'ancora collegata.

JavaKotlin
for (HitResult hit : frame.hitTest(singleTapEvent)) {
  if (hit.getTrackable() instanceof StreetscapeGeometry) {
    Pose hitPose = hit.getHitPose();
    hit.getTrackable().createAnchor(hitPose);
  }
}
for (hit in frame.hitTest(singleTapEvent)) {
  if (hit.trackable is StreetscapeGeometry) {
    val hitPose = hit.hitPose
    hit.trackable.createAnchor(hitPose)
  }
}

Attivare la profondità geospaziale

La funzionalità Profondità geospaziale combina la geometria della strada con l'input del sensore locale per migliorare i dati sulla profondità. Quando la profondità geospaziale è attivata, le immagini di profondità in uscita e di profondità non elaborata vengono modificate per includere la geometria della strada rasterizzata oltre alla profondità osservata localmente. In questo modo, la precisione delle pose potrebbe migliorare utilizzando la funzionalità Profondità.