Una vez que hayas configurado los parámetros de tu app para usar la API de Geospatial, puedes llamar a ArEarth_getCameraGeospatialPose
para obtener un ArGeospatialPose
que describa la posición geoespacial del dispositivo para la cámara en el fotograma más reciente. Esta pose, administrada en un objeto ArEarth
, contiene la siguiente información:
- Ubicación, expresada en latitud y longitud
- Altitud
- Una orientación que se aproxima a la dirección a la que apunta el usuario en el sistema de coordenadas del EUS, con X+ apuntando hacia el este, Y+ hacia arriba y Z+ hacia el sur
Cómo comprobar el estado de seguimiento
Los valores geoespaciales solo son válidos mientras ArEarth.ArTrackingState
es ArTrackingState.AR_TRACKING_STATE_TRACKING
y ArEarth.ArEarthState
es AR_EARTH_STATE_ENABLED
. Asegúrate de unir todas las llamadas a la API de Geospatial en un bloque de control 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
no se convierte en ArTrackingState.AR_TRACKING_STATE_TRACKING
, ArEarth.ArTrackingState
puede ser AR_TRACKING_STATE_PAUSED
o AR_TRACKING_STATE_STOPPED
. Si no se cumple ninguna de estas condiciones, revisa ArEarth.ArEarthState
, que muestra otros estados de error que podrían impedir que se realice el seguimiento del objeto ArEarth
.
Ajusta la postura para lograr una mayor precisión
Cuando el dispositivo está derecho en la orientación predeterminada, los ángulos de inclinación (X+) y enrollado (Z+) tienden a ser precisos debido a una alineación natural con el seguimiento de RA. Sin embargo, los ángulos de guiñada (Y+) pueden variar según la disponibilidad de datos de VPS y las condiciones temporales de la ubicación. Es posible que tu app deba realizar ajustes para mejorar su precisión.
ArGeospatialPose_getOrientationYawAccuracy()
proporciona una estimación de precisión de los ángulos de Yaw (Y+) para un ArGeospatialPose
determinado. La precisión de la guiñada de orientación es un número que describe el radio, en grados, del nivel de confianza del percentil 68 alrededor de los ángulos de guiñada que se muestran de ArGeospatialPose_getEastUpSouthQuaternion()
. En otras palabras, hay una probabilidad del 68% de que el ángulo de guiñada verdadero de ArGeospatialPose
sea preciso.
Los valores más altos indican una menor exactitud. Por ejemplo, si el ángulo de guiñada estimado es de 60 grados y la precisión de la guiñada es de 10 grados, hay un 68% de probabilidad de que el ángulo de guiñada verdadero esté entre 50 y 70 grados.
¿Qué sigue?
- Para colocar un ancla geoespacial, obtén su pose geoespacial.