Monitorare la posa di un dispositivo utilizzando ARCore per Jetpack XR

Dispositivi XR applicabili
Queste indicazioni ti aiutano a creare esperienze per questi tipi di dispositivi XR.
Visori XR
Occhiali XR con cavo
AI Glasses

Con ARCore per Jetpack XR, la tua app può recuperare la posa di un dispositivo: l'orientamento (beccheggio, imbardata, rollio) e una posizione (X, Y, Z) del dispositivo rispetto all'origine del mondo.

Utilizza queste informazioni per visualizzare i contenuti digitali nel mondo reale o converti la posa del dispositivo in una posa geospaziale per generare dati sensibili alla posizione.

Accedere a una sessione

Accedi alle informazioni sulla postura del dispositivo tramite un Session Jetpack XR Runtime, che la tua app deve creare.

Configura la sessione

Le informazioni sulla postura del dispositivo non sono attivate per impostazione predefinita nelle sessioni XR. Per consentire alla tua app di recuperare le informazioni sulla postura del dispositivo, configura la sessione e imposta la modalità 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.
}

Non tutti i dispositivi XR supportano la modalità HeadTrackingMode.LAST_KNOWN. Se Session.configure() ha esito positivo, il dispositivo supporta questa modalità.

Ottenere la posa del dispositivo

Una volta configurata la sessione, puoi ottenere la posa del dispositivo all'interno del sistema di coordinate AR utilizzando l'oggetto 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

Ottenere la traslazione e la rotazione della posa del dispositivo

Il dispositivo Pose rappresenta la posizione (traslazione) e l'orientamento (rotazione) del dispositivo rispetto all'origine del monitoraggio. Utilizza queste informazioni nella tua app per migliorare l'esperienza della tua app:

  1. Fornire indicazioni di navigazione accurate a livello di posizione: i dati posizionali possono essere utilizzati per aiutare un utente a orientarsi e a muoversi nell'ambiente circostante con l'aiuto di contenuti digitali sovrapposti.

  2. Allineamento intermedio del mondo: questa posa viene utilizzata dall'API Geospatial per calcolare la posizione nel mondo reale.

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. */)
}

Converti la posa del dispositivo in una posa geospaziale

Una volta ottenuta la posa del dispositivo, puoi ricavare da questa una posa geospaziale. La conversione in una posa geospaziale trasforma i tuoi contenuti AR da un'esperienza temporanea e isolata in una funzionalità permanente, condivisa universalmente e sensibile al contesto nel mondo reale.

Scopri come convertire la posa di un dispositivo in una posa geospaziale nella documentazione dell'API Geospatial.