Recuperar informações de profundidade no seu app com o ARCore para Jetpack XR

Dispositivos XR aplicáveis
Estas orientações ajudam você a criar experiências para esses tipos de dispositivos de XR.
Headsets de realidade estendida
Óculos XR com fio

Seu app pode recuperar informações de profundidade pelo ARCore para Jetpack XR e determinar a proximidade dos objetos físicos ao dispositivo.

Criar uma sessão do ARCore para Jetpack XR

Obtenha informações de profundidade usando um ARCore para Jetpack XR Session. Se você estiver aprimorando a interface espacial usando o Jetpack Compose para XR, acesse uma sessão do Jetpack Compose para XR. Se você estiver trabalhando com entidades espacializadas da biblioteca Jetpack SceneCore, acesse uma sessão do Jetpack XR Runtime.

Configurar a sessão

A recuperação do mapa de profundidade não está ativada por padrão nas sessões de RV/RA. Para ativar a recuperação do mapa de profundidade, configure a sessão e defina um 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. */)
}

Os seguintes valores de DepthEstimationMode estão disponíveis:

  • DISABLED: nenhuma informação sobre a profundidade da cena é fornecida.
  • RAW_ONLY: a estimativa de profundidade é ativada com valores brutos de profundidade e confiança.
  • SMOOTH_ONLY: a estimativa de profundidade está ativada com valores de profundidade e confiança suaves.
  • SMOOTH_AND_RAW: a estimativa de profundidade é ativada com valores de profundidade e confiança brutos e suavizados.

Os mapas de profundidade brutos fornecem estimativas de profundidade com maior precisão, mas as imagens de profundidade brutas podem não incluir estimativas de profundidade para todos os pixels na imagem da câmera. Em contraste, os mapas de profundidade suavizados fornecem a profundidade estimada para cada pixel, mas os dados de profundidade por pixel podem ser menos precisos devido à suavização e à interpolação das estimativas de profundidade.

Recuperar dados de profundidade

Para receber dados de profundidade de uma determinada câmera, use DepthMap:

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

Cada dispositivo tem recursos diferentes. Dispositivos com uma configuração de câmera estéreo retornam mapas de profundidade não nulos para as câmeras left e right. Da mesma forma, dispositivos com uma única câmera retornam um mapa de profundidade não nulo usando mono.

Calcular valores de profundidade

Você pode extrair valores de profundidade e confiança do mapa de profundidade resultante:

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

Dependendo da configuração usada, acesse o mapa de profundidade correspondente usando smoothDepthMap ou rawDepthMap. As medições contidas nesses mapas são expressas em metros. Também é possível acessar os valores de confiança usando smoothConfidenceMap e rawConfidenceMap. Esses valores variam de 0 a 255, em que 255 representa o nível de confiança mais alto.

Para renderizar um mapa de profundidade para fins de depuração ou visualização, consulte a parte de profundidade do app de teste do ARCore.