L'API ARCore Depth ora supporta Geospatial Depth, che aumenta automaticamente la portata e la velocità dell'API Depth quando è abilitata anche la Streetscape Geometry. Quando ti trovi in una località con copertura VPS e con Geometria Streetscape attivata, le immagini di output dell'API Depth includono la geometria di terreno ed edifici recuperate nell'area fino a 65 metri dalla posizione corrente. I dati sulla profondità recuperati dalla geometria vengono uniti alle osservazioni della profondità locali e vengono aggiornati quando l'utente si sposta in una nuova posizione.
Le chiamate all'API ARCore Depth ora forniscono sia osservazioni locali dalla fotocamera, sia edifici e rilievi di Streetscape Geometry, unite in un'unica immagine di profondità.
Compatibilità del dispositivo
La profondità geospaziale è disponibile su tutti i dispositivi che supportano l'API Depth. Questa funzionalità non richiede un sensore di profondità hardware supportato, ad esempio un sensore del tempo di volo (ToF). Tuttavia, l'API Depth utilizza eventuali sensori hardware supportati che un dispositivo potrebbe avere.
Impatto sulle prestazioni
La profondità geospaziale introduce un piccolo calcolo una tantum all'inizio della sessione per integrare la geometria Streetscape nella rappresentazione della profondità quando viene scaricata inizialmente, ma per il resto non aumenta in modo misurabile il costo del calcolo della profondità.
Intervallo di profondità
Senza la profondità geospaziale, le immagini di profondità tipiche degli intervalli sono di circa 20-30 metri di distanza, con la densità e l'accuratezza delle osservazioni in profondità ridotte oltre questo intervallo. Quando la profondità geospaziale è attivata, è normale vedere valori di profondità densamente campionati che raggiungono il massimo di 65,535 metri, anche con un piccolo movimento iniziale.
Casi d'uso
L'API ARCore Depth può essere utilizzata per tutti i casi d'uso esistenti già supportati. Con la profondità geospaziale, le immagini di profondità ottenute nelle località supportate da VPS verranno completate con profondità a lungo raggio più velocemente di prima, consentendo casi d'uso che mirano a profondità a lungo raggio in ambienti esterni. Alcuni casi d'uso includono:
- Occlusione su larga scala di contenuti virtuali e altri effetti visivi
- Navigazione all'aperto
- Misurazione delle distanze
Limitazioni
La profondità geospaziale è supportata solo nelle aree che supportano la localizzazione VPS e la geometria di Streetscape. In altre aree, l'API ARCore Depth funzionerà normalmente senza valori geospaziali.
Prerequisiti
Assicurati di comprendere i concetti fondamentali della realtà aumentata e su come configurare una sessione ARCore prima di procedere.
Attiva profondità geospaziale
In una nuova sessione ARCore, verifica se il dispositivo di un utente supporta Depth e l'API Geospatial. Non tutti i dispositivi compatibili con ARCore supportano l'API Depth a causa di limitazioni della potenza di elaborazione.
Per risparmiare risorse, la profondità è disattivata per impostazione predefinita su ARCore. Attiva la modalità depth per fare in modo che la tua app usi l'API Depth. Inoltre, attiva la modalità Geospaziale e Streetscape Geometry per usano la profondità geospaziale.
Java
Config config = session.getConfig(); // Check whether the user's device supports the Depth API. boolean isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC); boolean isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED); if (isDepthSupported && isGeospatialSupported) { // These three settings are needed to use Geospatial Depth. config.setDepthMode(Config.DepthMode.AUTOMATIC); config.setGeospatialMode(Config.GeospatialMode.ENABLED); config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED); } session.configure(config);
Kotlin
val config = session.config // Check whether the user's device supports the Depth API. val isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC) val isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED) if (isDepthSupported && isGeospatialSupported) { // These three settings are needed to use Geospatial Depth. config.depthMode = Config.DepthMode.AUTOMATIC config.geospatialMode = Config.GeospatialMode.ENABLED config.streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED } session.configure(config)
Una volta attivata la funzionalità Profondità geospaziale, è possibile accedere alle immagini di profondità tramite chiamate API esistenti, come descritto nella guida per gli sviluppatori di profondità.
Java
// Retrieve the depth image for the current frame, if available. Image depthImage = null; try { depthImage = frame.acquireDepthImage16Bits(); // Use the depth image here. } catch (NotYetAvailableException e) { // This means that depth data is not available yet. // Depth data will not be available if there are no tracked // feature points. This can happen when there is no motion, or when the // camera loses its ability to track objects in the surrounding // environment. } finally { if (depthImage != null) { depthImage.close(); } }
Kotlin
// Retrieve the depth image for the current frame, if available. try { frame.acquireDepthImage16Bits().use { depthImage -> // Use the depth image here. } } catch (e: NotYetAvailableException) { // This means that depth data is not available yet. // Depth data will not be available if there are no tracked // feature points. This can happen when there is no motion, or when the // camera loses its ability to track objects in the surrounding // environment. }
Passaggi successivi
- Scopri come utilizzare la geometria di Streetscape nella tua esperienza di realtà aumentata.
- Scopri come creare un'app con la profondità geospaziale consultando il codelab sulla semantica della scena e sulla profondità geospaziale.