Ciąg znaków nazwy
XR_ANDROID_unbounded_reference_space
Typ rozszerzenia
Rozszerzenie instancji
Zarejestrowany numer wewnętrzny
468
Weryfikacja
1
Zależności rozszerzenia i wersji
Data ostatniej modyfikacji
2024-09-12
Stan adresu IP
Brak znanych roszczeń dotyczących adresu IP.
Twórcy
Spencer Quin, Google
Jared Finder, Google
Fengtao Fan, Google
Lachlan Ford, Google
Nihav Jain, Google
Levana Chen, Google
Omówienie
To rozszerzenie umożliwia aplikacjom tworzenie przestrzeni referencyjnej UNBOUNDED_ANDROID
. To metryczne środowisko odniesienia umożliwia widzowi swobodne poruszanie się w złożonym środowisku, często wiele metrów od miejsca, w którym się znajdował na początku, przy jednoczesnym optymalizowaniu stabilności układu współrzędnych w pobliżu widza. Gdy urządzenie rejestruje więcej informacji o otoczeniu, aby lepiej zrozumieć scenę, punkt początkowy przestrzeni odniesienia może się przesuwać, wprowadzając znaczne korekty, aby zachować śledzenie urządzenia.
Aby utworzyć UNBOUNDED_ANDROID
przestrzeń referencyjną, aplikacja może ustawić XrReferenceSpaceCreateInfo::referenceSpaceType
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
i przekazać go do xrCreateReferenceSpace.
XrInstance instance; // previously initialized
XrSession session; // previously initialized
XrPosef pose; // previously initialized
// Use the new reference space type in the create info struct
XrReferenceSpaceCreateInfo createInfo = {
.type = XR_REFERENCE_SPACE_CREATE_INFO;
.next = nullptr;
.referenceSpaceType = XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID;
.poseInReferenceSpace = pose;
}
XrSpace referenceSpace;
CHK_XR(xrCreateReferenceSpace(session, &createInfo, &referenceSpace));
// After usage
CHK_XR(xrDestroySpace(referenceSpace));
Przestrzeń odniesienia UNBOUNDED_ANDROID
określa punkt początkowy na mapie świata, w którym znajduje się słuchawka, gdy rozpoczyna się śledzenie urządzenia. Jest ona dopasowana do grawitacji, aby wykluczyć pochylenie i obrót. Oś X jest skierowana w prawo, oś Y w górę, a oś Z do przodu.
UNBOUNDED_ANDROID
jest przydatna, gdy aplikacja musi renderować treści na skalę światową, które wykraczają poza granice pojedynczego STAGE
, na przykład całą kondygnację lub kilka kondygnacji budynku.
UNBOUNDED_ANDROID
przestrzeń zachowuje stabilność w pobliżu widza, dostosowując swoje położenie w czasie. Może wprowadzić niewielkie i znaczne zmiany w miarę potrzeby, aby zachować śledzenie urządzenia.
- W ramach działania nie należy umieszczać w kole zdarzeń XrEventDataReferenceSpaceChangePending w odpowiedzi na niewielkie zmiany.
- W ramach działania należy umieścić w kole zdarzenie XrEventDataReferenceSpaceChangePending w odpowiedzi na duże zmiany. Na przykład pozycja w pomieszczenie
UNBOUNDED_ANDROID
jest resetowana z powodu utraty śledzenia, a śledzenie jest ponownie ustanawiane na podstawie niespójnych szacunków świata (tzw. „nowej mapy”). - System stale aktualizuje swoją wiedzę o świecie i dostosowuje śledzenie urządzeń. Jeśli aplikacja wymaga trwałej lokalizacji niezależnie od resetowania śledzenia, w tym przypadku można użyć kotwicy.
Zdarzenie zmiany pokoju odniesienia
W przypadku parametrów zdefiniowanych przez strukturę XrEventDataReferenceSpaceChangePending zwróconą w przypadku zdarzeń zmiany świata lub optymalizacji zdarzeń relokalizacji:
typedef struct XrEventDataReferenceSpaceChangePending {
XrStructureType type;
const void* next;
XrSession session;
XrReferenceSpaceType referenceSpaceType;
XrTime changeTime;
XrBool32 poseValid;
XrPosef poseInPreviousSpace;
} XrEventDataReferenceSpaceChangePending;
Opisy członków
referenceSpaceType
:XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
.changeTime
będzie reprezentować wartośćXrTime
, przy której zakończono relokalizację.poseValid
będziefalse
z powodu prognozy po odłączeniu lubtrue
po ponownym połączeniu.- Wartość
poseInPreviousSpace
nie będzie prawidłowa, jeśli wartośćposeValid
tofalse
.
Gdy widoki, kontrolery lub inne przestrzenie tracą możliwość śledzenia w stosunku do przestrzeni UNBOUNDED_ANDROID
, aplikacje mogą nadal otrzymywać wywnioskowane lub ostatnie znane wartości position
i orientation
. Te wywnioskowane pozy mogą być na przykład oparte na aktualizacjach modelu szyi, bezwładności lub ostatniej znanej pozycji. Aplikacja może założyć, że nadal będzie mieć ustawione wartości XR_SPACE_LOCATION_POSITION_VALID_BIT
i XR_VIEW_STATE_POSITION_VALID_BIT
, ale XR_SPACE_LOCATION_POSITION_TRACKED_BIT
i XR_VIEW_STATE_POSITION_TRACKED_BIT
mogą zostać wyczyszczone w czasie działania, aby wskazać, że pozycja jest wywnioskowana lub ostatnio znana.
Gdy śledzenie zostanie przywrócone, środowisko uruchomieniowe może dowolnie wyśrodkować punkt początkowy, np. przesuwając go, aby pokrywał się z widżetem. Aplikacja może sprawdzić wartość poseValid
zwracaną przez zdarzenie XrEventDataReferenceSpaceChangePending, aby określić, czy jest gotowa do użycia.
Nowe typy obiektów
Nowe typy flag
Nowe stałe typu wyliczeniowego
Wyliczenie XrReferenceSpaceType zostało rozszerzone o:
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
Nowe wartości w polu enum
Nowe struktury
Nowe funkcje
Problemy
Historia wersji
- Wersja 1, 12 września 2024 r. (Levana Chen)
- Wstępny opis rozszerzenia