Con ARCore para Jetpack XR, tu app puede recuperar la pose de un dispositivo: la orientación (cabeceo, guiñada, alabeo) y una posición (X, Y, Z) del dispositivo en relación con el origen del mundo.
Usa esta información para renderizar contenido digital en el mundo real o convertir la pose del dispositivo en una pose geoespacial para generar datos basados en la ubicación.
Accede a una sesión
Accede a la información de la pose del dispositivo a través de un Session de Jetpack XR Runtime,
que tu app debe crear.
Configura la sesión
La información de la pose del dispositivo no está habilitada de forma predeterminada en las sesiones de realidad extendida. Para permitir que tu
app recupere la información de la pose del dispositivo, configura la sesión y establece el
DeviceTrackingMode.SPATIAL modo:
// Define the configuration object to enable tracking device pose. val newConfig = session.config.copy( deviceTracking = DeviceTrackingMode.SPATIAL ) // 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. }
No todos los dispositivos de realidad extendida admiten el modo DeviceTrackingMode.SPATIAL. Si
Session.configure() tiene éxito, el dispositivo admite este modo.
Obtén la pose del dispositivo
Después de configurar la sesión, puedes obtener la pose del dispositivo dentro del
sistema de coordenadas de RA con el 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) }
Obtén la rotación y la traslación de la pose del dispositivo
La Pose del dispositivo representa la posición (traslación) y la orientación (rotación) del dispositivo en relación con el origen del seguimiento. Usa esta información en tu app para mejorar su experiencia:
- Proporciona instrucciones de navegación precisas en cuanto a la posición: Usa datos posicionales para ayudar a un usuario a orientarse y navegar por su entorno con la ayuda de contenido digital superpuesto.
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. */) }