Obtén la pose geoespacial de la cámara del dispositivo

Una vez que hayas establecido la configuración de tu app para usar la API de Geospatial, puedes llamar a ArEarth_getCameraGeospatialPose para obtener un ArGeospatialPose que describa el posicionamiento geoespacial del dispositivo para la cámara en el fotograma más reciente. Esta postura, 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 hacia la que apunta el usuario en el sistema de coordenadas EUS, en la que X+ apunta hacia el este, Y+ apunta hacia arriba y Z+ apunta al sur

Verifica 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, verifica ArEarth.ArEarthState, que muestra otros estados de error que podrían impedir que el objeto ArEarth realice el seguimiento.

Ajusta la pose para lograr precisión.

Cuando el dispositivo está en posición vertical en la orientación predeterminada, los ángulos de inclinación (X+) y giro (Z+) suelen ser precisos debido a una alineación natural con seguimiento de RA. Sin embargo, los ángulos de guiñada (Y+) pueden variar según la disponibilidad de datos de los VPS y las condiciones temporales de la ubicación. Es posible que tu app deba realizar ajustes para mejorar la precisión.

ArGeospatialPose_getOrientationYawAccuracy() proporciona una estimación de exactitud para los ángulos de guiñada (Y+) para un determinado ArGeospatialPose. 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 muestra ArGeospatialPose_getEastUpSouthQuaternion(). En otras palabras, hay una probabilidad del 68% de que el ángulo de guiñada real de ArGeospatialPose sea preciso.

Los valores más altos indican una precisión menor. Por ejemplo, si el ángulo de guiñada estimado es de 60 grados y la precisión de guiñada es de 10 grados, hay una probabilidad del 68% de que el ángulo de guiñada verdadero esté entre 50 y 70 grados.

Próximos pasos