Conseguir a pose geoespacial da câmera do dispositivo

Depois de definir as configurações do app para usar a API Geospatial, chame Earth.getCameraGeospatialPose() para receber um GeospatialPose que descreva o posicionamento geoespacial da câmera no frame mais recente. Essa pose, gerenciada em um objeto Earth, 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

Valores geoespaciais são válidos apenas enquanto Earth.TrackingState é TrackingState.TRACKING. Una todas as chamadas da API Geospatial em um bloco de controle Earth.TrackingState.

Java

if (earth != null && earth.getTrackingState() == TrackingState.TRACKING) {
  GeospatialPose cameraGeospatialPose = earth.getCameraGeospatialPose();
  // cameraGeospatialPose contains geodetic location, rotation, and confidences values.
}

Kotlin

if (earth.trackingState == TrackingState.TRACKING) {
  val cameraGeospatialPose = earth.cameraGeospatialPose
  // cameraGeospatialPose contains geodetic location, rotation, and confidences values.
}

Se Earth.TrackingState não se tornar TrackingState.TRACKING, Earth.TrackingState pode ser TrackingState.PAUSED ou TrackingState.STOPPED. Se nenhuma dessas condições for verdadeira, marque Earth.Earthstate, que mostra outros estados de erro que podem impedir o rastreamento do objeto Earth.

Ajustar a pose para mais precisão

Quando o dispositivo está na orientação vertical padrão, os ângulos de inclinação (X+) e de rolagem (Z+) tendem a ser precisos devido a um alinhamento natural com o rastreamento de RA. No entanto, os ângulos de guinada (Y+) podem variar dependendo da disponibilidade dos dados do VPS e das condições temporais no local. Talvez seja necessário fazer ajustes para aumentar a precisão.

GeospatialPose.getOrientationYawAccuracy() fornece uma estimativa de precisão para os ângulos de guinada (Y+) de uma determinada GeospatialPose. A precisão de guinada da orientação é um número que descreve o raio, em graus, do nível de confiança do 68º percentil em torno dos ângulos de guinada retornados de GeospatialPose.getEastUpSouthQuaternion(). Em outras palavras, há 68% de chance de que o ângulo de guinada real da GeospatialPose seja preciso.

Valores maiores indicam menor precisão. Por exemplo, se o ângulo de guinada estimado for de 60 graus e a precisão da guinada for de 10 graus, haverá uma probabilidade de 68% de que o ângulo de guinada real esteja entre 50 e 70 graus.

A seguir