Une fois que vous avez configuré les paramètres de votre application pour utiliser l'API Geospatial, vous pouvez appeler ArEarth_getCameraGeospatialPose
afin d'obtenir un ArGeospatialPose
qui décrit la position géospatiale de l'appareil photo dans le dernier frame. Cette posture, gérée dans un objet ArEarth
, contient les informations suivantes:
- Emplacement, exprimé à la latitude et à la longitude
- Altitude
- Orientation approximative correspondant à la direction vers laquelle l'utilisateur est dirigé dans le système de coordonnées EUS (X+ pointant vers l'est, Y+ pointant vers le haut et Z+ pointant vers le sud)
Vérifier l'état du suivi
Les valeurs géospatiales ne sont valides que lorsque ArEarth.ArTrackingState
correspond à ArTrackingState.AR_TRACKING_STATE_TRACKING
et que ArEarth.ArEarthState
correspond à AR_EARTH_STATE_ENABLED
. Veillez à encapsuler tous les appels d'API Geospatial dans un bloc de contrôle 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); } }
Si ArEarth.ArTrackingState
ne devient pas ArTrackingState.AR_TRACKING_STATE_TRACKING
, ArEarth.ArTrackingState
peut être AR_TRACKING_STATE_PAUSED
ou AR_TRACKING_STATE_STOPPED
. Si aucune de ces conditions n'est remplie, vérifiez ArEarth.ArEarthState
, qui indique d'autres états d'erreur susceptibles d'empêcher le suivi de l'objet ArEarth
.
Ajustez la posture pour plus de précision
Lorsque l'appareil est à la verticale dans l'orientation par défaut, les angles d'inclinaison (X+) et de roulis (Z+) ont tendance à être précis en raison d'un alignement naturel avec le suivi en RA. Cependant, les angles du lacet (Y+) peuvent varier en fonction de la disponibilité des données VPS et des conditions temporelles sur le site. Votre application devra peut-être effectuer des ajustements pour plus de précision.
ArGeospatialPose_getOrientationYawAccuracy()
fournit une estimation de la précision des angles du lacet (Y+) pour un ArGeospatialPose
spécifique. La précision du lacet d'orientation est un nombre qui décrit le rayon, en degrés, du niveau de confiance du 68e centile autour des angles de lacets renvoyés par ArGeospatialPose_getEastUpSouthQuaternion()
. En d'autres termes, il y a 68% de chances que l'angle de lacet réel de ArGeospatialPose
soit précis.
Plus la valeur est élevée, plus la précision est faible. Par exemple, si l'angle de lacet estimé est de 60 degrés et que la précision du lacet est de 10 degrés, il y a une probabilité de 68% que le véritable angle du lacet soit compris entre 50 et 70 degrés.
Étapes suivantes
- Placez une ancre géospatiale en obtenant la position géospatiale de l'ancre.