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

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

Prova l'esempio

L'app di esempio geospatial_java mostra come ottenere ed eseguire il rendering delle geometrie di Streetscape.

Configurare l'API Geospatial

Per utilizzare Streetscape Geometry, devi configurare l'API Geospatial nel tuo progetto. Segui le istruzioni su come attivare l'API Geospatial per configurare l'API geospaziale.

Attiva la geometria di Streetscape

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 la geometria Streetscape 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)

Informazioni su StreetscapeGeometry

StreetscapeGeometry contiene informazioni su un edificio:

Edificio livello 1

StreetscapeGeometry.Quality.BUILDING_LOD_1 è costituito da impronte di edifici estruse verso l'alto fino a formare una parte superiore piana. L'altezza degli edifici potrebbe non essere precisa.

Edificio livello 2

StreetscapeGeometry.Quality.BUILDING_LOD_2 avrà una geometria con fedeltà più alta. Le pareti e i tetti in retina si adattano meglio alla forma dell'edificio. Elementi più piccoli come camini o prese d'aria sul tetto potrebbero comunque penetrare all'esterno della rete.

Informazioni su Mesh

Mesh è una rete poligonale che rappresenta una ricostruzione della superficie della geometria di Street View. Ogni Mesh include un buffer di vertex e un buffer di indice:

Allegare contenuti AR a una StreetscapeGeometry

Esistono due modi per allegare contenuti AR a Streetscape Geometry:

Eseguire un hit-test contro StreetscapeGeometry

Frame.hitTest() può essere utilizzato per eseguire un test di hit rispetto alla geometria di Streetscape. Se vengono individuati degli incroci, HitResult contiene informazioni sulla posa relativamente alla posizione dell'hit, oltre a un riferimento alla StreetscapeGeometry che è stata rilevata. La 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 profondità geospaziale combina la geometria di paesaggi urbani con input dei sensori locali per migliorare i dati sulla profondità. Quando la funzionalità Profondità geospaziale è attivata, le immagini di profondità di output e di profondità non elaborate vengono modificate per includere la geometria di Streetscape rasterizzata oltre alla profondità osservata localmente. Ciò può migliorare la precisione delle pose usando la profondità.