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

Java

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);

Kotlin

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 Streetscape Geometry in una sessione ARCore

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

Java

session.getAllTrackables(StreetscapeGeometry.class);

Kotlin

session.getAllTrackables(StreetscapeGeometry::class.java)

Comprendi StreetscapeGeometry

StreetscapeGeometry contiene informazioni su un edificio:

LOD edificio 1

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

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

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

Collegare contenuti AR a una StreetscapeGeometry

Esistono due modi per allegare contenuti AR a Streetscape Geometry:

Esegui un hit test su StreetscapeGeometry

Frame.hitTest() può essere utilizzato per eseguire test su Streetscape Geometry. Se vengono rilevati degli incroci, HitResult contiene informazioni sulla posa sulla posizione dell'hit e un riferimento all'elemento StreetscapeGeometry interessato. Questa geometria di Streetscape può essere passata a Trackable.createAnchor() per creare un ancoraggio collegato.

Java

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

Kotlin

for (hit in frame.hitTest(singleTapEvent)) {
  if (hit.trackable is StreetscapeGeometry) {
    val hitPose = hit.hitPose
    hit.trackable.createAnchor(hitPose)
  }
}

Attiva profondità geospaziale

La funzionalità Profondità geospaziale combina Streetscape Geometry con l'input dei sensori locali per migliorare i dati di profondità. Quando la funzionalità Profondità geospaziale è abilitata, le immagini di profondità non elaborate e di output vengono modificate in modo da includere la geometria Streetscape rasterizzata oltre alla profondità osservata localmente. Questa operazione può migliorare la precisione delle pose usando la profondità.