La tua app può recuperare informazioni sulla profondità tramite ARCore per Jetpack XR per determinare la distanza degli oggetti fisici dal dispositivo.
Crea una sessione ARCore per Jetpack XR
Ottenere informazioni sulla postura della testa tramite una sessione ARCore per Jetpack XR.
Consulta Comprendere il ciclo di vita di una sessione per ottenere un
Session
.
Configura la sessione
Il recupero della mappa di profondità non è abilitato per impostazione predefinita nelle sessioni XR. Per attivare il recupero della mappa
di profondità, configura la sessione e imposta un
DepthEstimationMode
:
val newConfig = session.config.copy( depthEstimation = Config.DepthEstimationMode.SMOOTH_ONLY, ) when (val result = session.configure(newConfig)) { is SessionConfigureSuccess -> TODO(/* Success! */) is SessionConfigureConfigurationNotSupported -> TODO(/* Some combinations of configurations are not valid. Handle this failure case. */) else -> TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */) }
Sono disponibili i seguenti valori di DepthEstimationMode
:
DISABLED
: Non vengono fornite informazioni sulla profondità della scena.RAW_ONLY
: la stima della profondità è abilitata con i valori di profondità e confidenza non elaborati.SMOOTH_ONLY
: la stima della profondità è attivata con valori di profondità e confidenza uniformi.SMOOTH_AND_RAW
: la stima della profondità è abilitata con valori di profondità e confidenza sia grezzi che uniformi.
Le mappe di profondità grezze forniscono stime di profondità con maggiore precisione, ma le immagini di profondità grezze potrebbero non includere stime di profondità per tutti i pixel nell'immagine della videocamera. Al contrario, le mappe di profondità uniformi forniscono una profondità stimata per ogni pixel, ma i dati di profondità per pixel potrebbero essere meno precisi a causa dell'uniformità e dell'interpolazione delle stime di profondità.
Recuperare i dati di profondità
Per ottenere i dati di profondità per una determinata videocamera, utilizza DepthMap
:
val depthMap = DepthMap.left(session) ?: return
Dispositivi diversi hanno funzionalità diverse. I dispositivi con una configurazione della fotocamera stereo
restituiscono mappe di profondità non nulle per le fotocamere left
e right
.
Allo stesso modo, i dispositivi con una sola fotocamera restituiscono una mappa di profondità non nulla utilizzando
mono
.
Calcolare i valori di profondità
Puoi ottenere i valori di profondità e confidenza dalla mappa di profondità risultante:
val depthMap = DepthMap.left(session) ?: return
A seconda dell'impostazione di configurazione utilizzata, accedi alla mappa di profondità corrispondente
utilizzando smoothDepthMap
o rawDepthMap
. Le misurazioni contenute in queste mappe
sono espresse in metri. Puoi accedere ai valori di confidenza anche utilizzando
smoothConfidenceMap
e rawConfidenceMap
. Questi valori vanno da 0 a 255,
dove 255 rappresenta la massima affidabilità.
Per eseguire il rendering di una mappa di profondità a scopo di debug o visualizzazione, consulta la sezione Profondità dell'app di test ARCore.