Sprawdź pozycję aparatu urządzenia w orientacji geoprzestrzennej

Po skonfigurowaniu ustawień aplikacji pod kątem korzystania z interfejsu Geospatial API możesz wywołać funkcję ArEarth_getCameraGeospatialPose, aby uzyskać wartość ArGeospatialPose, która opisuje pozycjonowanie geoprzestrzenne urządzenia dla aparatu w najnowszym ujęciu. Ta poza, zarządzana w obiekcie ArEarth, zawiera te informacje:

  • lokalizacja wyrażona w szerokości i długości geograficznej;
  • Wysokość
  • Orientacja zbliżona do kierunku, w którym zwrócony jest użytkownik w systemie współrzędnych EUS, gdzie X+ wskazuje na wschód, Y+ na górę, a Z+ na południe.

Sprawdzanie stanu śledzenia

Wartości geoprzestrzenne są prawidłowe tylko wtedy, gdy parametr ArEarth.ArTrackingState ma wartość ArTrackingState.AR_TRACKING_STATE_TRACKING, a parametr ArEarth.ArEarthState ma wartość AR_EARTH_STATE_ENABLED. Zawijaj wszystkie wywołania interfejsu Geospatial API w blok sterujący 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 stanie się ArTrackingState.AR_TRACKING_STATE_TRACKING, ArEarth.ArTrackingState może być AR_TRACKING_STATE_PAUSED lub AR_TRACKING_STATE_STOPPED. Jeśli żaden z tych warunków nie jest spełniony, sprawdź ArEarth.ArEarthState, aby wyświetlić inne stany błędów, które mogą uniemożliwiać śledzenie obiektu ArEarth.

Dostosuj pozę, aby uzyskać dokładność.

Gdy urządzenie jest ustawione w domyślnej orientacji pionowej, kąty pochylenia (X+) i odchylenia (Z+) są zwykle dokładne ze względu na naturalne dopasowanie do śledzenia AR. Jednak kąty yaw (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ć wprowadzenia korekty w celu zwiększenia dokładności.

ArGeospatialPose_getOrientationYawAccuracy() podaje szacunkowy poziom dokładności kątów yaw (Y+) dla określonego ArGeospatialPose. Dokładność orientacji skręcenia to liczba określająca promień (w stopniach) 68. percentyla poziomu ufności wokół kątów skręcenia zwróconych przez funkcję ArGeospatialPose_getEastUpSouthQuaternion(). Innymi słowy, istnieje 68% prawdopodobieństwo, że rzeczywisty kąt yaw 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ść 10 stopni, prawdopodobieństwo, że rzeczywisty kąt odchylenia mieści się w przedziale od 50 do 70 stopni, wynosi 68%.

Co dalej?