Ottenere la posizione geospaziale della fotocamera del dispositivo

Dopo aver configurato le impostazioni dell'app per l'utilizzo dell'API Geospaziale, puoi chiamare ArEarth_getCameraGeospatialPose per ottenere un ArGeospatialPose che descriva la posizione geospaziale del dispositivo per la videocamera nell'ultimo fotogramma. Questa posa, gestita in un oggetto ArEarth, contiene le seguenti informazioni:

  • Posizione, espressa in latitudine e longitudine
  • Altitudine
  • Orientamento che approssimativamente la direzione in cui l'utente è rivolto nel sistema di coordinate EUS, con X+ rivolto a est, Y+ rivolto verso l'alto e Z+ rivolto a sud

Controllare lo stato del monitoraggio

I valori geospaziali sono validi solo, mentre ArEarth.ArTrackingState è ArTrackingState.AR_TRACKING_STATE_TRACKING e ArEarth.ArEarthState è AR_EARTH_STATE_ENABLED. Assicurati di aggregare tutte le chiamate API Geospatial in un blocco di controllo ArEarth.ArTrackingState.

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);
  }
}

Se ArEarth.ArTrackingState non diventa ArTrackingState.AR_TRACKING_STATE_TRACKING, ArEarth.ArTrackingState potrebbe essere AR_TRACKING_STATE_PAUSED o AR_TRACKING_STATE_STOPPED. Se nessuna di queste condizioni è vera, controlla ArEarth.ArEarthState, che mostra altri stati di errore che potrebbero impedire il monitoraggio dell'oggetto ArEarth.

Regola la posa per una maggiore precisione

Quando il dispositivo è in posizione verticale con l'orientamento predefinito, gli angoli di inclinazione (X+) e roll (Z+) tendono a essere precisi grazie a un allineamento naturale con il tracciamento AR. Tuttavia, gli angoli di scarto (Y+) possono variare a seconda della disponibilità dei dati VPS e delle condizioni temporali della località. È possibile che l'app debba apportare modifiche per garantire la precisione.

ArGeospatialPose_getOrientationYawAccuracy() fornisce una stima dell'accuratezza per gli angoli di scarto (Y+) per una determinata ArGeospatialPose. La precisione di scarto dell'orientamento è un numero che descrive il raggio, in gradi, del livello di confidenza del 68° percentile attorno agli angoli di scarto restituiti da ArGeospatialPose_getEastUpSouthQuaternion(). In altre parole, esiste una probabilità del 68% che l'angolo di scarto effettivo della ArGeospatialPose sia accurato.

Valori più grandi indicano una precisione minore. Ad esempio, se l'angolo di scarto stimato è di 60 gradi e l'accuratezza di scarto è di 10 gradi, c'è una probabilità del 68% che l'angolo di scarto reale sia compreso tra 50 e 70 gradi.

Passaggi successivi