Ваше приложение может получать информацию о глубине через ARCore для Jetpack XR, чтобы определять, насколько близко физические объекты находятся к устройству.
Создайте сеанс ARCore для Jetpack XR
Получите информацию о глубине через Session ARCore для Jetpack XR. Если вы улучшаете пространственный пользовательский интерфейс с помощью Jetpack Compose для XR, откройте сеанс из Jetpack Compose для XR . Если вы работаете с пространственными сущностями из библиотеки Jetpack SceneCore, откройте сеанс из Jetpack XR Runtime .
Настройте сеанс
Получение карты глубины по умолчанию отключено в сеансах 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 .