Sprawdź pozycję aparatu urządzenia w orientacji geoprzestrzennej

Po skonfigurowaniu w ustawieniach aplikacji korzystania z interfejsu Geospatial API możesz wywołać metodę ArEarth_getCameraGeospatialPose, aby uzyskać kod ArGeospatialPose opisujący położenie geoprzestrzenne kamery w ostatniej ramce. Ta pozycja zarządzana w obiekcie ArEarth zawiera te informacje:

  • Lokalizacja wyrażona w długości i szerokości geograficznej
  • Wysokość
  • Orientacja w przybliżeniu kierunku, w którym znajduje się użytkownik w układzie współrzędnych EUS, z wartością X+ na wschód, Y + w górę, a Z+ na południe

Sprawdzanie stanu śledzenia

Wartości geoprzestrzenne są prawidłowe tylko wtedy, gdy ArEarth.ArTrackingState ma wartość ArTrackingState.AR_TRACKING_STATE_TRACKING, a ArEarth.ArEarthState ma wartość AR_EARTH_STATE_ENABLED. Pamiętaj, aby umieścić wszystkie wywołania interfejsu Geospatial API w blok kontrolny 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);
  }
}

Jeśli ArEarth.ArTrackingState nie zmieni się na ArTrackingState.AR_TRACKING_STATE_TRACKING, ArEarth.ArTrackingState może mieć wartość AR_TRACKING_STATE_PAUSED lub AR_TRACKING_STATE_STOPPED. Jeśli żaden z tych warunków nie jest spełniony, sprawdź pole ArEarth.ArEarthState, które wyświetla inne stany błędu, które mogą uniemożliwić śledzenie obiektu ArEarth.

Dostosuj pozycję, aby zwiększyć precyzję

Gdy urządzenie jest ustawione pionowo i w domyślnej orientacji, kąty nachylenia (X+) i przechylenia (Z+) zwykle są precyzyjne, ponieważ zapewnia to naturalny wyrównanie do śledzenia AR. Jednak kąty odchylenia (Y+) mogą się różnić w zależności od dostępności danych VPS i warunków czasowych w danej lokalizacji. Być może trzeba będzie wprowadzić poprawki w dokładności.

ArGeospatialPose_getOrientationYawAccuracy() podaje szacunkową dokładność kątów odchylenia (Y+) dla określonego elementu ArGeospatialPose. Dokładność odchylenia orientacji to liczba opisująca w stopniach promień 68. percentyla poziomu ufności wokół kątów odchylenia zwróconych z ArGeospatialPose_getEastUpSouthQuaternion(). Oznacza to, że istnieje 68% prawdopodobieństwa, że rzeczywisty kąt odchylenia obiektu ArGeospatialPose jest prawidłowy.

Większe wartości oznaczają mniejszą dokładność. Jeśli na przykład szacowany kąt odchylenia wynosi 60 stopni, a dokładność odchylenia wynosi 10 stopni, prawdopodobieństwo, że rzeczywisty kąt odchylenia wynosi od 50 do 70 stopni, wynosi 68%.

Co dalej