Mit ARCore für Jetpack XR kann Ihre App die Pose eines Geräts abrufen: die Ausrichtung (Neigung, Gieren, Rollen) und eine Position (X, Y, Z) des Geräts relativ zum Ursprung der Welt.
Mit diesen Informationen können Sie digitale Inhalte in der realen Welt rendern oder die Gerätepose in eine georäumliche Pose umwandeln, um standortbezogene Daten zu generieren.
Auf eine Sitzung zugreifen
Sie können über eine Jetpack XR Runtime Sessionauf Informationen zur Gerätepose zugreifen,
die Ihre App erstellen muss.
Sitzung konfigurieren
Informationen zur Gerätepose sind für XR-Sitzungen standardmäßig nicht aktiviert. Wenn Ihre
App Informationen zur Gerätepose abrufen soll, konfigurieren Sie die Sitzung und legen Sie den
DeviceTrackingMode.SPATIAL_LAST_KNOWN Modus fest:
// 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. }
Nicht alle XR-Geräte unterstützen den Modus DeviceTrackingMode.SPATIAL_LAST_KNOWN. Wenn
Session.configure() erfolgreich ist, unterstützt das Gerät diesen Modus.
Gerätepose abrufen
Nachdem Sie die Sitzung konfiguriert haben, können Sie die Pose des Geräts im
AR-Koordinatensystem mit dem ArDevice Objekt abrufen:
// 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) }
Übersetzung und Rotation der Gerätepose abrufen
Die Pose des Geräts stellt die Position (Übersetzung) und Ausrichtung (Rotation) des Geräts relativ zum Tracking-Ursprung dar. Sie können diese Informationen in Ihrer App verwenden, um die Nutzerfreundlichkeit zu verbessern:
Positionsgenaue Navigationsanweisungen bereitstellen: Positionsdaten können verwendet werden, um Nutzern bei der Orientierung und Navigation in ihrer Umgebung zu helfen . Dazu werden digitale Inhalte überlagert.
Zwischenausrichtung der Welt berechnen: Diese Pose wird von der Geospatial API verwendet, um den realen Standort zu berechnen.
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. */) }
Gerätepose in eine georäumliche Pose umwandeln
Sobald Sie die Gerätepose haben, können Sie daraus eine georäumliche Pose ableiten. Durch die Umwandlung in eine georäumliche Pose werden Ihre AR-Inhalte von einem temporären, isolierten Erlebnis zu einer dauerhaften, universell geteilten und kontextbezogenen Funktion in der realen Welt.
Informationen zum Umwandeln einer Gerätepose in eine georäumliche Pose finden Sie in der Dokumentation zur Geospatial API.