Com o ARCore para Jetpack XR, seu app pode recuperar a pose de um dispositivo: a orientação (inclinação, guinada, rotação) e uma posição (X, Y, Z) do dispositivo em relação à origem do mundo.
Use essas informações para renderizar conteúdo digital no mundo real ou converter a pose do dispositivo em uma pose geoespacial para gerar dados com reconhecimento de localização.
Acessar uma sessão
Acesse as informações de pose do dispositivo por meio de um Jetpack XR Runtime Session,
que seu app precisa criar.
Configurar a sessão
As informações de pose do dispositivo não são ativadas por padrão em sessões XR. Para permitir que seu
app recupere informações de pose do dispositivo, configure a sessão e defina o
DeviceTrackingMode.SPATIAL_LAST_KNOWN modo:
// Define the configuration object to enable tracking device pose. val newConfig = session.config.copy( deviceTracking = DeviceTrackingMode.SPATIAL_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. }
Nem todos os dispositivos XR oferecem suporte ao modo DeviceTrackingMode.SPATIAL_LAST_KNOWN. Se
Session.configure() for bem-sucedido, o dispositivo vai oferecer suporte a esse modo.
Receber a pose do dispositivo
Depois de configurar a sessão, você pode receber a pose do dispositivo no
sistema de coordenadas de RA usando o ArDevice objeto:
// 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) }
Receber a tradução e a rotação da pose do dispositivo
A Pose do dispositivo representa a posição (tradução) e a orientação (rotação) do dispositivo em relação à origem do rastreamento. Use essas informações no seu app para melhorar a experiência dele:
- Forneça instruções de navegação precisas em termos de posição: use dados posicionais para ajudar um usuário a se orientar e navegar pelo ambiente com a ajuda de conteúdo digital sobreposto.
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. */) }