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
. 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 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 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ć 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% prawdopodobieństwa, że rzeczywisty kąt odchylenia komponentu ArGeospatialPose
jest dokładny.
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, występuje prawdopodobieństwo na poziomie 68%, że rzeczywisty kąt odchylenia mieści się w zakresie od 50 do 70 stopni.
Co dalej?
- Umieść punkt kotwiczenia geoprzestrzennego, uzyskując jego pozycję geoprzestrzenną.