Recupera información de profundidad en tu app con ARCore para Jetpack XR

Tu app puede recuperar información de profundidad a través de ARCore para Jetpack XR y determinar qué tan cerca están los objetos físicos del dispositivo.

Crea una sesión de ARCore para Jetpack XR

Obtener información de la postura de la cabeza a través de una sesión de ARCore para Jetpack XR Consulta Comprende el ciclo de vida de una sesión para obtener un Session.

Configura la sesión

La recuperación del mapa de profundidad no está habilitada de forma predeterminada en las sesiones de RE. Para habilitar la recuperación del mapa de profundidad, configura la sesión y establece 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. */)
}

Los siguientes valores de DepthEstimationMode están disponibles:

  • DISABLED: No se proporciona información sobre la profundidad de la escena.
  • RAW_ONLY: La estimación de profundidad está habilitada con valores de profundidad sin procesar y de confianza.
  • SMOOTH_ONLY: La estimación de profundidad está habilitada con valores de profundidad y confianza uniformes.
  • SMOOTH_AND_RAW: La estimación de profundidad está habilitada con valores de profundidad y confianza sin procesar y suavizados.

Los mapas de profundidad sin procesar proporcionan estimaciones de profundidad con mayor precisión, pero es posible que las imágenes de profundidad sin procesar no incluyan estimaciones de profundidad para todos los píxeles de la imagen de la cámara. En cambio, los mapas de profundidad suavizados proporcionan una profundidad estimada para cada píxel, pero los datos de profundidad por píxel pueden ser menos precisos debido al suavizado y la interpolación de las estimaciones de profundidad.

Cómo recuperar datos de profundidad

Para obtener datos de profundidad de una cámara determinada, usa DepthMap:

val depthMap = DepthMap.left(session) ?: return

Los diferentes dispositivos tienen capacidades diferentes. Los dispositivos con una configuración de cámara estéreo devuelven mapas de profundidad no nulos para las cámaras left y right. Del mismo modo, los dispositivos con una sola cámara devuelven un mapa de profundidad no nulo con mono.

Cómo calcular los valores de profundidad

Puedes obtener valores de profundidad y confianza del mapa de profundidad resultante:

val depthMap = DepthMap.left(session) ?: return

Según el parámetro de configuración que se use, accede al mapa de profundidad correspondiente con smoothDepthMap o rawDepthMap. Las medidas que se incluyen en estos mapas se expresan en metros. También puedes acceder a los valores de confianza con smoothConfidenceMap y rawConfidenceMap. Estos valores varían de 0 a 255, donde 255 representa la mayor confianza.

Para renderizar un mapa de profundidad con fines de depuración o visualización, consulta la parte de profundidad de la app de prueba de ARCore.