Raumbezogene Haltung der Gerätekamera erfassen

Nachdem Sie die Einstellungen Ihrer App für die Verwendung der Geospatial API konfiguriert haben, können Sie ArEarth_getCameraGeospatialPose aufrufen, um ein ArGeospatialPose-Objekt abzurufen, das die raumbezogene Standortbestimmung des Geräts für die Kamera im letzten Frame beschreibt. Diese Position, die in einem ArEarth-Objekt verwaltet wird, enthält die folgenden Informationen:

  • Standort, ausgedrückt in Breiten- und Längengrad
  • Höhe
  • Eine Orientierung, die der Richtung entspricht, in der sich der Nutzer im EUS-Koordinatensystem befindet, wobei X+ nach Osten, Y+ nach oben und Z+ nach Süden zeigt

Tracking-Status prüfen

Raumbezogene Werte sind nur gültig, wenn ArEarth.ArTrackingState den Wert ArTrackingState.AR_TRACKING_STATE_TRACKING und ArEarth.ArEarthState den Wert AR_EARTH_STATE_ENABLED hat. Achten Sie darauf, alle Geospatial API-Aufrufe in einem ArEarth.ArTrackingState-Kontrollblock zu kapseln.

if (ar_earth != NULL) {
  ArTrackingState earth_tracking_state = AR_TRACKING_STATE_STOPPED;
  ArTrackable_getTrackingState(ar_session, (ArTrackable*)ar_earth,
                               &earth_tracking_state);
  if (earth_tracking_state == AR_TRACKING_STATE_TRACKING) {
    ArGeospatialPose* camera_geospatial_pose = NULL;
    ArGeospatialPose_create(ar_session, &camera_geospatial_pose);
    ArEarth_getCameraGeospatialPose(ar_session, ar_earth,
                                    camera_geospatial_pose);
    // camera_geospatial_pose contains geodetic location, rotation, and
    // confidences values.
    ArGeospatialPose_destroy(camera_geospatial_pose);
  }
}

Wird ArEarth.ArTrackingState nicht zu ArTrackingState.AR_TRACKING_STATE_TRACKING, kann ArEarth.ArTrackingState den Wert AR_TRACKING_STATE_PAUSED oder AR_TRACKING_STATE_STOPPED haben. Wenn keine dieser Bedingungen erfüllt ist, klicken Sie auf ArEarth.ArEarthState. Es werden weitere Fehlerstatus angezeigt, die das Tracking des Objekts ArEarth verhindern.

Pose für mehr Genauigkeit anpassen

Wenn sich das Gerät in der Standardausrichtung befindet, sind die Neigungs- (X+) und Rollwinkel (Z+) aufgrund der natürlichen Ausrichtung mit dem AR-Tracking in der Regel präzise. Die Abweichungswinkel (Y+) können jedoch je nach Verfügbarkeit von VPS-Daten und zeitlichen Bedingungen am Standort variieren. Ihre App muss möglicherweise Anpassungen vornehmen, um die Genauigkeit zu verbessern.

ArGeospatialPose_getOrientationYawAccuracy() bietet eine Genauigkeitsschätzung für die Gierwinkel (Y+) für einen bestimmten ArGeospatialPose. Die Gierwinkel-Genauigkeit ist eine Zahl, die den Radius des Konfidenzniveaus des 68. Perzentils um die von ArGeospatialPose_getEastUpSouthQuaternion() zurückgegebenen Gierwinkel in Grad angibt. Mit anderen Worten: Es besteht eine Wahrscheinlichkeit von 68 %, dass der tatsächliche Gierwinkel des ArGeospatialPose genau ist.

Je höher der Wert, desto ungenauer ist die Schätzung. Wenn der geschätzte Gierwinkel beispielsweise 60 Grad beträgt und die Giergenauigkeit 10 Grad, liegt der wahre Gierwinkel mit einer Wahrscheinlichkeit von 68 % zwischen 50 und 70 Grad.

Nächste Schritte