С помощью ARCore для Jetpack XR ваше приложение может получать позу устройства – его ориентацию (тангаж, рысканье, крен) и положение (X, Y, Z) относительно начала координат мира.
Используйте эту информацию, чтобы отображать цифровой контент в реальном мире или преобразовывать позу устройства в геопространственную позу для создания данных с учетом местоположения.
Как получить доступ к сеансу
Получать информацию о положении устройства с помощью Jetpack XR Runtime Session, который должно создать ваше приложение.
Как настроить сеанс
По умолчанию информация о позе устройства в сеансах XR не включена. Чтобы приложение могло получать информацию о положении устройства, настройте сеанс и задайте режим DeviceTrackingMode.SPATIAL:
// Define the configuration object to enable tracking device pose. val newConfig = Config.Builder(session.config) .setDeviceTracking(DeviceTrackingMode.SPATIAL) .build() // 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. }
Режим DeviceTrackingMode.SPATIAL поддерживается не всеми XR-устройствами. Если команда 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 представляет собой положение (перемещение) и ориентацию (поворот) устройства относительно начала координат отслеживания. Используйте эту информацию в приложении, чтобы сделать его удобнее:
- Точные инструкции по навигации. Используйте данные о местоположении, чтобы помочь пользователю ориентироваться на местности и перемещаться по ней с помощью наложенного цифрового контента.
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. */) }