Sprawdź pozycję aparatu urządzenia w orientacji geoprzestrzennej

Po skonfigurowaniu ustawień aplikacji pod kątem używania interfejsu Geospatial API możesz wywołać ArEarth_getCameraGeospatialPose, aby uzyskać ArGeospatialPose opisujący położenie geoprzestrzenne kamery w najnowszej klatce. Ta pozycja zarządzana w obiekcie ArEarth zawiera te informacje:

  • Lokalizacja wyrażona w postaci szerokości i długości geograficznej
  • Wysokość
  • Orientacja przybliżona do kierunku, w którym skierowany jest użytkownik w układzie współrzędnych UES – X+ wskazuje wschód, Y+ jest skierowany w górę, a Z+ – 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 bloku sterującym 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, zaznacz pozycję ArEarth.ArEarthState, która wyświetla inne stany błędu, które mogą uniemożliwiać śledzenie obiektu ArEarth.

Dostosuj pozycję, aby uzyskać dokładność

Gdy urządzenie jest ustawione pionowo w orientacji domyślnej, kąty nachylenia (X+) i obrócenia (Z+) są zazwyczaj precyzyjne ze względu na naturalne dopasowanie 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. Aplikacja może wymagać dostosowania dokładności.

ArGeospatialPose_getOrientationYawAccuracy() podaje oszacowanie dokładności kątów odchylenia (Y+) dla określonych elementów ArGeospatialPose. Dokładność odchylenia orientacji to liczba opisująca promień (w stopniach) 68 centyla poziomu ufności wokół kątów odchylenia zwróconych z ArGeospatialPose_getEastUpSouthQuaternion(). Oznacza to 68-procentowe prawdopodobieństwo, że rzeczywiste odchylenie obiektu ArGeospatialPose jest dokładne.

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, istnieje prawdopodobieństwo na poziomie 68%, że rzeczywisty kąt odchylenia wynosi od 50 do 70 stopni.

Co dalej?