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
Receba informações de postura da cabeça em uma sessão do ARCore para Jetpack XR.
Consulte Entender o ciclo de vida de uma sessão para receber um
Session
.
Configurar a sessão
A recuperação do mapa de profundidade não está ativada por padrão nas sessões de XR. 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 é 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
É possível 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 maior nível de confiança.
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.