Depois de configurar o app para usar a API Geoespacial, chame ArEarth_getCameraGeospatialPose
para receber um ArGeospatialPose
que descreve o posicionamento geoespacial do dispositivo para a câmera no frame mais recente. Essa pose, gerenciada em um objeto ArEarth
, contém as seguintes informações:
- Localização, expressa em latitude e longitude
- Altitude
- Orientação aproximada da direção para a qual o usuário está voltado no sistema de coordenadas EUS, com X+ apontando para o leste, Y+ apontando para cima e Z+ apontando para o sul
Verificar o estado do acompanhamento
Os valores geoespaciais são válidos apenas quando ArEarth.ArTrackingState
é ArTrackingState.AR_TRACKING_STATE_TRACKING
e ArEarth.ArEarthState
é AR_EARTH_STATE_ENABLED
. Una todas as chamadas da API Geospatial em um bloco de controle 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
não se tornar ArTrackingState.AR_TRACKING_STATE_TRACKING
, ArEarth.ArTrackingState
poderá ser AR_TRACKING_STATE_PAUSED
ou AR_TRACKING_STATE_STOPPED
. Se nenhuma dessas condições for verdadeira, marque ArEarth.ArEarthState
, que mostra outros estados de erro que podem impedir o rastreamento do objeto ArEarth
.
Ajustar a pose para mais precisão
Quando o dispositivo está na posição vertical na orientação padrão, os ângulos de inclinação (X+) e de rolagem (Z+) tendem a ser precisos devido a um alinhamento natural com rastreamento em RA. No entanto, os ângulos de guinada (Y+) podem variar dependendo da disponibilidade de dados de VPS e das condições temporais no local. Talvez seja necessário fazer ajustes para aumentar a precisão.
ArGeospatialPose_getOrientationYawAccuracy()
fornece uma estimativa de precisão para os ângulos de guinada (Y+) de um determinado ArGeospatialPose
. A precisão da guinada de orientação é um número que descreve o raio, em graus, do nível de confiança do 68o percentil ao redor dos ângulos de guinada retornados de ArGeospatialPose_getEastUpSouthQuaternion()
. Em outras palavras, há 68% de chance de que o ângulo de guinada real da ArGeospatialPose
seja preciso.
Valores maiores indicam menor precisão. Por exemplo, se o ângulo de guinada estimado for 60 graus e a precisão de guinada for 10 graus, haverá 68% de probabilidade de que o ângulo de guinada verdadeiro esteja entre 50 e 70 graus.
A seguir
- Coloque uma âncora geoespacial obtendo a pose geoespacial dela.