Votre application peut récupérer des informations sur la profondeur via ARCore pour Jetpack XR afin de déterminer la distance entre les objets physiques et l'appareil.
Créer une session ARCore pour Jetpack XR
Obtenez des informations sur la pose de la tête via une session ARCore pour Jetpack XR.
Consultez Comprendre le cycle de vie d'une session pour obtenir un Session
.
Configurer la session
La récupération de la carte de profondeur n'est pas activée par défaut dans les sessions XR. Pour activer la récupération de la carte de profondeur, configurez la session et définissez 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. */) }
Les valeurs suivantes de DepthEstimationMode
sont disponibles :
DISABLED
: aucune information sur la profondeur de la scène n'est fournie.RAW_ONLY
: l'estimation de la profondeur est activée avec les valeurs brutes de profondeur et de confiance.SMOOTH_ONLY
: l'estimation de la profondeur est activée avec des valeurs de profondeur et de confiance lisses.SMOOTH_AND_RAW
: l'estimation de la profondeur est activée avec les valeurs de profondeur et de confiance brutes et lisses.
Les cartes de profondeur brutes fournissent des estimations de profondeur plus précises, mais les images de profondeur brutes peuvent ne pas inclure d'estimations de profondeur pour tous les pixels de l'image de la caméra. En revanche, les cartes de profondeur lisses fournissent une profondeur estimée pour chaque pixel, mais les données de profondeur par pixel peuvent être moins précises en raison du lissage et de l'interpolation des estimations de profondeur.
Récupérer les données de profondeur
Pour obtenir des données de profondeur pour une caméra donnée, utilisez DepthMap
:
val depthMap = DepthMap.left(session) ?: return
Les fonctionnalités varient d'un appareil à l'autre. Les appareils dotés d'une configuration de caméras stéréo renvoient des cartes de profondeur non nulles pour les caméras left
et right
.
De même, les appareils dotés d'une seule caméra renvoient une carte de profondeur non nulle à l'aide de mono
.
Calculer les valeurs de profondeur
Vous pouvez obtenir des valeurs de profondeur et de confiance à partir de la carte de profondeur obtenue :
val depthMap = DepthMap.left(session) ?: return
Selon le paramètre de configuration utilisé, accédez à la carte de profondeur correspondante à l'aide de smoothDepthMap
ou rawDepthMap
. Les mesures contenues dans ces cartes sont exprimées en mètres. Vous pouvez également accéder aux valeurs de confiance à l'aide de smoothConfidenceMap
et rawConfidenceMap
. Ces valeurs sont comprises entre 0 et 255, où 255 représente le niveau de confiance le plus élevé.
Pour afficher une carte de profondeur à des fins de débogage ou de visualisation, consultez la section Profondeur de l'application de test ARCore.