С помощью ARCore для Jetpack XR ваше приложение может получать положение устройства: ориентацию (тангаж, рыскание, крен) и положение (X, Y, Z) устройства относительно начала координат.
Используйте эту информацию для отображения цифрового контента в реальном мире или для преобразования положения устройства в геопространственное положение с целью генерации данных, учитывающих местоположение.
Получить доступ к сессии
Доступ к информации о положении устройства осуществляется через Session Jetpack XR Runtime, которую должно создать ваше приложение .
Настройте сессию
В XR-сессиях по умолчанию отключена функция получения информации о положении устройства. Чтобы ваше приложение могло получать информацию о положении устройства, настройте сессию и установите режим DeviceTrackingMode.LAST_KNOWN :
// Define the configuration object to enable tracking device pose. val newConfig = session.config.copy( deviceTracking = DeviceTrackingMode.LAST_KNOWN ) // Apply the configuration to the session. try { when (val configResult = session.configure(newConfig)) { is SessionConfigureSuccess -> { // The session is now configured to track the device's pose. } else -> { // Catch-all for other configuration errors returned using the result class. } } } catch (e: UnsupportedOperationException) { // Handle configuration failure. For example, if the specific mode is not supported on the current device or API version. }
Не все устройства XR поддерживают режим DeviceTrackingMode.LAST_KNOWN . Если Session.configure() завершился успешно, значит, устройство поддерживает этот режим.
Определите положение устройства.
После настройки сессии вы можете получить положение устройства в системе координат дополненной реальности, используя объект ArDevice :
// Get the ArDevice instance val arDevice = ArDevice.getInstance(session) // There are two ways to get the device pose. // 1. Get the current device pose once. // This is the device's position and orientation relative to the tracking origin. val devicePose = arDevice.state.value.devicePose processDevicePose(devicePose) // 2. Continuously receive updates for the device pose. // `collect` is a suspending function that will run indefinitely and process new poses. arDevice.state.collect { state -> processDevicePose(state.devicePose) }
Получите данные о перемещении и вращении устройства.
Параметр « Pose устройства» отображает положение (перемещение) и ориентацию (вращение) устройства относительно точки отслеживания. Используйте эту информацию в своем приложении для улучшения его пользовательского опыта:
Предоставляйте точные навигационные инструкции : данные о местоположении могут использоваться для того, чтобы помочь пользователю сориентироваться и ориентироваться в окружающей обстановке с помощью наложенного цифрового контента.
Вычисление промежуточного выравнивания по мировым координатам : эта поза используется геопространственным API для вычисления местоположения в реальном мире.
fun processDevicePose(pose: Pose) { // Extract Translation and Rotation val translation = pose.translation // Vector3(x, y, z) val rotation = pose.rotation // Quaternion (x, y, z, w) TODO(/* Use the translation and rotation in your app. */) }
Преобразуйте положение устройства в геопространственное положение.
Получив положение устройства, вы можете преобразовать его в геопространственное положение. Преобразование в геопространственное положение превращает ваш контент дополненной реальности из временного, изолированного объекта в постоянный, общедоступный и контекстно-зависимый объект в реальном мире.
Узнайте, как преобразовать положение устройства в геопространственное положение, в документации по геопространственному API.