XR_ANDROID_spatial_anchor_space
Name String
XR_ANDROID_spatial_anchor_space
Typ rozszerzenia
Rozszerzenie instancji
Zarejestrowany numer wewnętrzny
796
Wersja
1
Stan ratyfikacji
Nie ratyfikowano
Zależności rozszerzeń i wersji
XR_EXT_spatial_anchor
Data ostatniej modyfikacji
2025-09-15
Stan IP
Brak znanych roszczeń dotyczących własności intelektualnej.
Twórcy
YuSheng Chang, Google
Kyle Chen, Google
Levana Chen, Google
Nihav Jain, Google
Spencer Quin, Google
Przegląd
Funkcja xrCreateSpatialAnchorEXT zdefiniowana w rozszerzeniu XR_EXT_spatial_anchor umożliwia aplikacjom tworzenie kotwic przestrzennych z uchwytem XrSpatialEntityEXT, który je reprezentuje. To rozszerzenie tworzy natomiast kotwicę przestrzenną, która jest reprezentowana przez uchwyt XrSpace. Jest to przydatne w przypadkach, gdy aplikacja ma:
- Aby uzyskać lokalizację kotwicy, użyj xrLocateSpaces.
- Zlokalizuj inne przestrzenie względem kotwicy.
- Wyeksportuj kotwicę za pomocą
XR_ANDROID_anchor_sharing_export. - Aplikacja umieściła kotwice i teraz interesuje ją tylko ich lokalizacja (aby dołączyć treści wirtualne). Nie interesuje jej żaden inny komponent żadnych innych elementów wykrytych za pomocą XrSpatialContextEXT użytego do utworzenia kotwicy, co pozwala aplikacji na zniszczenie kontekstu przestrzennego.
Kotwice utworzone za pomocą tego rozszerzenia nie mogą być utrwalane za pomocą rozszerzenia XR_ANDROID_device_anchor_persistence, a aplikacja musi zamiast tego używać XR_EXT_spatial_persistence_operations . Środowisko wykonawcze musi zwracać XR_ERROR_VALIDATION_FAILURE z xrPersistAnchorANDROID, jeśli XrPersistedAnchorSpaceInfoANDROID :: anchor jest tworzony za pomocą xrCreateSpatialAnchorSpaceANDROID lub xrCreateSpatialAnchorSpaceFromIdANDROID .
Tworzenie XrSpace dla kotwicy przestrzennej
Tworzenie kotwicy przestrzennej i przestrzeni
Funkcja xrCreateSpatialAnchorSpaceANDROID jest zdefiniowana w ten sposób:
XrResult xrCreateSpatialAnchorSpaceANDROID(
XrSession session,
XrSpatialContextEXT spatialContext,
const XrSpatialAnchorCreateInfoEXT* createInfo,
XrSpatialEntityIdEXT* anchorEntityId,
XrSpace* anchorSpace);
Opisy parametrów
sessionto uchwyt do obiektu XrSession utworzonego wcześniej za pomocą xrCreateSession.spatialContextto obiekt XrSpatialContextEXT utworzony wcześniej za pomocą xrCreateSpatialContextAsyncEXT .createInfoto wskaźnik do XrSpatialAnchorCreateInfoEXT .anchorEntityIdto wskaźnik doXrSpatialEntityIdEXT.anchorSpaceto wskaźnik do XrSpace .
Funkcja xrCreateSpatialAnchorSpaceANDROID tworzy kotwicę, która zwraca uchwyt XrSpatialEntityIdEXT i XrSpace. xrCreateSpatialAnchorSpaceANDROID ma takie same wymagania dotyczące weryfikacji jak xrCreateSpatialAnchorEXT .
Środowisko wykonawcze musi zwracać XR_ERROR_VALIDATION_FAILURE, jeśli element XrSpatialContextEXT przekazany do xrCreateSpatialAnchorSpaceANDROID nie został skonfigurowany z XR_SPATIAL_CAPABILITY_ANCHOR_EXT .
W odniesieniu do możliwości wykrywania kotwicy utworzonej przez xrCreateSpatialAnchorSpaceANDROID obowiązuje ostatni akapit specyfikacji xrCreateSpatialAnchorEXT.
Prawidłowe użycie (pośrednie)
- Rozszerzenie
XR_ANDROID_spatial_anchor_spacemusi być włączone przed wywołaniem xrCreateSpatialAnchorSpaceANDROID. -
sessionmusi być prawidłowym uchwytem XrSession -
spatialContextmusi być prawidłowym uchwytem XrSpatialContextEXT -
createInfomusi być wskaźnikiem do prawidłowej struktury XrSpatialAnchorCreateInfoEXT. -
anchorEntityIdmusi być wskaźnikiem do wartościXrSpatialEntityIdEXT -
anchorSpacemusi być wskaźnikiem do uchwytu XrSpace -
spatialContextmusi zostać utworzony, przydzielony lub pobrany z:session
Kody zwrotu
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_POSE_INVALIDXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_ANCHOR_ATTACHABLE_COMPONENT_NOT_FOUND_ANDROIDXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXTXR_ERROR_TIME_INVALIDXR_ERROR_VALIDATION_FAILURE
Tworzenie XrSpace na podstawie istniejącej kotwicy przestrzennej
Funkcja xrCreateSpatialAnchorSpaceFromIdANDROID jest zdefiniowana w ten sposób:
XrResult xrCreateSpatialAnchorSpaceFromIdANDROID(
XrSession session,
XrSpatialContextEXT spatialContext,
const XrSpatialAnchorSpaceFromIdCreateInfoANDROID* createInfo,
XrSpace* anchorSpace);
Opisy parametrów
sessionto uchwyt do obiektu XrSession utworzonego wcześniej za pomocą xrCreateSession.spatialContextto obiekt XrSpatialContextEXT utworzony wcześniej za pomocą xrCreateSpatialContextAsyncEXT .createInfoto wskaźnik do XrSpatialAnchorSpaceFromIdCreateInfoANDROID .anchorSpaceto wskaźnik do XrSpace .
W przypadkach, gdy encje kotwic przestrzennych już istnieją (np. ze względu na trwałość), aplikacje mogą utworzyć XrSpace z tych kotwic przestrzennych, podając ich identyfikatory encji przestrzennych.
Funkcja xrCreateSpatialAnchorSpaceFromIdANDROID tworzy uchwyt XrSpace, podając XrSpatialEntityIdEXT w polu XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId.
Środowisko wykonawcze musi zwracać XR_ERROR_VALIDATION_FAILURE, jeśli element XrSpatialContextEXT przekazany do xrCreateSpatialAnchorSpaceFromIdANDROID nie został skonfigurowany z XR_SPATIAL_CAPABILITY_ANCHOR_EXT .
Prawidłowe użycie (pośrednie)
- Rozszerzenie
XR_ANDROID_spatial_anchor_spacemusi być włączone przed wywołaniem xrCreateSpatialAnchorSpaceFromIdANDROID. -
sessionmusi być prawidłowym uchwytem XrSession -
spatialContextmusi być prawidłowym uchwytem XrSpatialContextEXT -
createInfomusi być wskaźnikiem do prawidłowej struktury XrSpatialAnchorSpaceFromIdCreateInfoANDROID -
anchorSpacemusi być wskaźnikiem do uchwytu XrSpace -
spatialContextmusi zostać utworzony, przydzielony lub pobrany z:session
Kody zwrotu
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_ANCHOR_ENTITY_ID_INVALID_ANDROIDXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
Struktura XrSpatialAnchorSpaceFromIdCreateInfoANDROID jest zdefiniowana w ten sposób:
typedef struct XrSpatialAnchorSpaceFromIdCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSpatialEntityIdEXT anchorEntityId;
} XrSpatialAnchorSpaceFromIdCreateInfoANDROID;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur.anchorEntityIdtoXrSpatialEntityIdEXTistniejącej kotwicy przestrzennej, z której ma zostać utworzony obiekt XrSpace .
Środowisko wykonawcze musi zwracać XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT, jeśli XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId nie jest prawidłowym identyfikatorem dla spatialContext .
Środowisko wykonawcze musi zwracać XR_ERROR_SPATIAL_ANCHOR_ENTITY_ID_INVALID_ANDROID, jeśli XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId nie jest prawidłowym identyfikatorem encji kotwicy.
Prawidłowe użycie (pośrednie)
- Rozszerzenie
XR_ANDROID_spatial_anchor_spacemusi być włączone przed użyciem XrSpatialAnchorSpaceFromIdCreateInfoANDROID. -
typemusi mieć wartośćXR_TYPE_SPATIAL_ANCHOR_SPACE_FROM_ID_CREATE_INFO_ANDROID -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur
Cykl życia kotwicy
Uchwytem nadrzędnym uchwytu XrSpace jest XrSession . Oznacza to, że uchwyt XrSpace reprezentujący kotwicę pozostaje ważny nawet po zniszczeniu xrCreateSpatialAnchorSpaceFromIdANDROID :: spatialContext lub xrCreateSpatialAnchorSpaceANDROID :: spatialContext. Utworzenie XrSpace do reprezentowania kotwicy elementu przestrzennego umożliwia aplikacji zniszczenie XrSpatialContextEXT, który został skonfigurowany za pomocą XR_SPATIAL_CAPABILITY_ANCHOR_EXT, przy jednoczesnym dalszym uzyskiwaniu najnowszej pozycji kotwicy za pomocą XrSpace z xrLocateSpaces, tzn. środowisko wykonawcze musi nadal śledzić kotwicę, dopóki wszystkie uchwyty XrSpace, które ją reprezentują, nie zostaną zniszczone.
Przykładowy kod
Tworzenie kotwicy przestrzennej jako XrSpace
Poniższy przykładowy kod pokazuje, jak utworzyć kotwicę przestrzenną i zwrócić ją jako XrSpace .
XrSpatialEntityIdEXT spatialAnchorEntityId;
XrSpace spatialAnchorSpace {XR_NULL_HANDLE}; // XrSpace handle of anchor
// Spatial anchor create info
XrSpatialAnchorCreateInfoEXT createInfo{
.type = XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_EXT,
.baseSpace = localSpace,
.time = predictedDisplayTime,
.pose = {{0, 0, 0, 1}, {1, 1, 1}},
};
// Create spatial anchor using the new API
CHK_XR(xrCreateSpatialAnchorSpaceANDROID(session, spatialContext, &createInfo, &spatialAnchorEntityId, &spatialAnchorSpace));
// ...
Utwórz XrSpace na podstawie identyfikatora elementu zakotwiczonego
Poniższy przykładowy kod pokazuje, jak utworzyć obiekt XrSpace na podstawie istniejącego identyfikatora encji kotwicy.
XrSpace anchorSpace = XR_NULL_HANDLE;
// Spatial anchor from XrSpace create info
XrSpatialAnchorSpaceFromIdCreateInfoANDROID createInfoFromId{
.type = XR_TYPE_SPATIAL_ANCHOR_SPACE_FROM_ID_CREATE_INFO_ANDROID,
.anchorEntityId = spatialAnchorEntityId,
};
// Create XrSpace handle from spatial anchor ID
CHK_XR(xrCreateSpatialAnchorSpaceFromIdANDROID(session, spatialContext, &createInfoFromId, &anchorSpace));
// ...
Nowe polecenia
Nowe domy
Nowe stałe typu wyliczeniowego
XR_ANDROID_SPATIAL_ANCHOR_SPACE_EXTENSION_NAMEXR_ANDROID_spatial_anchor_space_SPEC_VERSIONRozszerzenie XrResult :
XR_ERROR_SPATIAL_ANCHOR_ENTITY_ID_INVALID_ANDROID
Rozszerzanie XrStructureType :
XR_TYPE_SPATIAL_ANCHOR_SPACE_FROM_ID_CREATE_INFO_ANDROID
Problemy
Historia zmian
Wersja 1, 15 września 2025 r. (YuSheng Chang, Kyle Chen)
- Początkowy opis rozszerzenia.