Ваше приложение может получать информацию о глубине через ARCore для Jetpack XR, чтобы определять, насколько близко физические объекты находятся к устройству.
Создайте сеанс ARCore для Jetpack XR
Получите информацию о положении головы через сеанс ARCore для Jetpack XR. Чтобы получить информацию о Session
, см. раздел «Понимание жизненного цикла сеанса» .
Настройте сеанс
Получение карты глубины по умолчанию отключено в сеансах XR. Чтобы включить получение карты глубины, настройте сеанс и установите 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. */) }
Доступны следующие значения DepthEstimationMode
:
-
DISABLED
: информация о глубине сцены не предоставляется. -
RAW_ONLY
: Оценка глубины включена с использованием необработанных значений глубины и достоверности. -
SMOOTH_ONLY
: Оценка глубины включена со сглаженными значениями глубины и достоверности. -
SMOOTH_AND_RAW
: Оценка глубины доступна как с необработанными, так и сглаженными значениями глубины и достоверности.
Карты глубины в исходном формате обеспечивают более высокую точность оценки глубины, но необработанные изображения глубины могут включать оценку глубины не для всех пикселей изображения с камеры. В отличие от этого, карты глубины в исходном формате предоставляют оценку глубины для каждого пикселя, но данные о глубине для каждого пикселя могут быть менее точными из-за сглаживания и интерполяции оценок глубины.
Получить данные о глубине
Чтобы получить данные о глубине для данной камеры, используйте DepthMap
:
val depthMap = DepthMap.left(session) ?: return
Разные устройства обладают разными возможностями. Устройства со стереокамерой возвращают ненулевые карты глубины для left
и right
камер. Аналогично, устройства с одной камерой возвращают ненулевую карту глубины, используя mono
.
Рассчитать значения глубины
Из полученной карты глубины можно получить значения глубины и достоверности:
val depthMap = DepthMap.left(session) ?: return
В зависимости от используемой настройки конфигурации, доступ к соответствующей карте глубины осуществляется с помощью smoothDepthMap
или rawDepthMap
. Измерения на этих картах выражены в метрах. Вы также можете получить доступ к значениям достоверности с помощью smoothConfidenceMap
и rawConfidenceMap
. Диапазон этих значений — от 0 до 255, где 255 соответствует максимальной достоверности.
Чтобы визуализировать карту глубины для отладки или визуализации, см. раздел «Глубина» тестового приложения ARCore .