С помощью ARCore для Jetpack XR ваше приложение может получить данные о позе устройства: ориентацию (тангаж, рыскание, крен) и положение (X, Y, Z) устройства относительно начала координат.
Используйте эту информацию для визуализации цифрового контента в реальном мире или преобразуйте положение устройства в геопространственное положение для создания данных с учетом местоположения.
Доступ к сеансу
Доступ к информации о позе устройства осуществляется через Session выполнения Jetpack XR, который должно создать ваше приложение .
Настройте сеанс
Информация о позе устройства отключена по умолчанию в сеансах XR. Чтобы приложение могло получать информацию о позе устройства, настройте сеанс и установите режим HeadTrackingMode.LAST_KNOWN :
// Define the configuration object to enable tracking device pose.
val newConfig = session.config.copy(
headTrackingMode = Config.HeadTrackingMode.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 поддерживают режим HeadTrackingMode.LAST_KNOWN . Если Session.configure() выполнен успешно, устройство поддерживает этот режим.
Получите позу устройства
После настройки сеанса вы можете получить позу устройства в системе координат AR, используя объект ArDevice :
// Get the ArDevice instance
val arDevice = ArDevice.getInstance(session)
// Collect the state to process the device pose
arDevice.state.collect { state ->
// processDevicePose gets called automatically when a new pose is available.
processDevicePose(state.devicePose)
}
// Or, get the current device Pose from the AR Device's state.
// This is the device's position and orientation relative to the tracking origin.
val devicePose = ArDevice.getInstance(session).state.value.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. */)
}
Преобразовать позу устройства в геопространственную позу
Получив позу устройства, вы можете получить из неё геопространственную позу. Преобразование в геопространственную позу превращает ваш AR-контент из временного, изолированного опыта в постоянную, общедоступную и контекстно-зависимую функцию реального мира.
Узнайте, как преобразовать позу устройства в геопространственную позу, в нашей документации по геопространственному API.