Com o ARCore para Jetpack XR, seu app pode recuperar a posição de um dispositivo: a orientação (inclinação, rotação, inclinação lateral) 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 postura do dispositivo em uma postura geoespacial para gerar dados com reconhecimento de local.
Acessar uma sessão
Acesse as informações de postura do dispositivo usando um Session do Jetpack XR Runtime,
que seu app precisa criar.
Configurar a sessão
As informações de postura do dispositivo não são ativadas por padrão nas sessões de RV/RA. Para permitir que seu
app recupere informações de postura do dispositivo, configure a sessão e defina o modo
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.
}
Nem todos os dispositivos de RV oferecem suporte ao modo HeadTrackingMode.LAST_KNOWN. Se Session.configure() for bem-sucedido, o dispositivo vai ser compatível com esse modo.
Extrair a postura do dispositivo
Depois que a sessão for configurada, será possível obter a postura do dispositivo no sistema de coordenadas de RA usando o objeto 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
Receber a translação e a rotação da postura do dispositivo
O dispositivo Pose representa a posição (translaçã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 com precisão posicional: os dados de posição podem ser usados para ajudar um usuário a se orientar e navegar pelo ambiente com a ajuda de conteúdo digital sobreposto.
Alinhamento intermediário do mundo: essa postura é usada pela API Geospatial para calcular o local no mundo real.
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. */)
}
Converter a pose do dispositivo em uma pose geoespacial
Depois de ter a postura do dispositivo, é possível extrair uma postura geoespacial dela. A conversão para uma postura geoespacial transforma seu conteúdo de RA de uma experiência temporária e isolada em um recurso permanente, compartilhado universalmente e sensível ao contexto no mundo real.
Aprenda a converter uma pose de dispositivo em uma pose geoespacial na documentação da API Geospatial.