XR_ANDROID_spatial_anchor_space
String de nome
XR_ANDROID_spatial_anchor_space
Tipo de extensão
Extensão de instância
Número de ramal registrado
796
Revisão
1
Status de ratificação
Não ratificado
Dependências de extensão e versão
XR_EXT_spatial_anchor
Data da última modificação
2025-09-15
Status do IP
Nenhuma reivindicação de PI conhecida.
Colaboradores
YuSheng Chang, Google
Kyle Chen, Google
Levana Chen, Google
Nihav Jain, Google
Spencer Quin, Google
Visão geral
A função xrCreateSpatialAnchorEXT definida na extensão XR_EXT_spatial_anchor permite que os aplicativos criem âncoras espaciais com um identificador XrSpatialEntityEXT para representá-las. Em contraste, essa extensão cria uma âncora espacial representada por um identificador XrSpace. Isso é útil para casos em que o aplicativo quer:
- Use xrLocateSpaces para encontrar o local da âncora.
- Localizar outros espaços em relação à âncora.
- Exporte a âncora usando
XR_ANDROID_anchor_sharing_export. - O aplicativo colocou âncoras e agora só se importa com a localização delas (para anexar conteúdo virtual) e não se importa com nenhum outro componente de outras entidades descobertas pelo XrSpatialContextEXT usado para criar a âncora, permitindo que o aplicativo destrua o contexto espacial.
As âncoras criadas com essa extensão não podem ser mantidas usando a extensão XR_ANDROID_device_anchor_persistence, e o aplicativo precisa usar XR_EXT_spatial_persistence_operations . O ambiente de execução precisa retornar XR_ERROR_VALIDATION_FAILURE de xrPersistAnchorANDROID se XrPersistedAnchorSpaceInfoANDROID :: anchor for criado usando xrCreateSpatialAnchorSpaceANDROID ou xrCreateSpatialAnchorSpaceFromIdANDROID .
Criar um XrSpace para uma âncora espacial
Criar uma âncora espacial e um espaço
A função xrCreateSpatialAnchorSpaceANDROID é definida como:
XrResult xrCreateSpatialAnchorSpaceANDROID(
XrSession session,
XrSpatialContextEXT spatialContext,
const XrSpatialAnchorCreateInfoEXT* createInfo,
XrSpatialEntityIdEXT* anchorEntityId,
XrSpace* anchorSpace);
Descrições dos parâmetros
sessioné um identificador para uma XrSession criada anteriormente com xrCreateSession.spatialContexté um XrSpatialContextEXT criado anteriormente usando xrCreateSpatialContextAsyncEXT .createInfoé um ponteiro para um XrSpatialAnchorCreateInfoEXT .anchorEntityIdé um ponteiro para umXrSpatialEntityIdEXT.anchorSpaceé um ponteiro para um XrSpace .
A função xrCreateSpatialAnchorSpaceANDROID cria uma âncora que gera um XrSpatialEntityIdEXT e um identificador XrSpace. xrCreateSpatialAnchorSpaceANDROID tem os mesmos requisitos de validação que xrCreateSpatialAnchorEXT .
O ambiente de execução precisa retornar XR_ERROR_VALIDATION_FAILURE se o XrSpatialContextEXT transmitido para xrCreateSpatialAnchorSpaceANDROID não tiver sido configurado com XR_SPATIAL_CAPABILITY_ANCHOR_EXT .
Com relação à facilidade de descoberta da âncora criada por xrCreateSpatialAnchorSpaceANDROID , o último parágrafo da especificação xrCreateSpatialAnchorEXT se aplica.
Uso válido (implícito)
- A extensão
XR_ANDROID_spatial_anchor_spaceprecisa ser ativada antes de chamar xrCreateSpatialAnchorSpaceANDROID. -
sessionprecisa ser um identificador XrSession válido -
spatialContextprecisa ser um identificador XrSpatialContextEXT válido -
createInfoprecisa ser um ponteiro para uma estrutura XrSpatialAnchorCreateInfoEXT válida. -
anchorEntityIdprecisa ser um ponteiro para um valorXrSpatialEntityIdEXT -
anchorSpaceprecisa ser um ponteiro para um identificador XrSpace. -
spatialContextprecisa ter sido criado, alocado ou recuperado desession
Códigos de retorno
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
Criar XrSpace com base em uma âncora espacial atual
A função xrCreateSpatialAnchorSpaceFromIdANDROID é definida como:
XrResult xrCreateSpatialAnchorSpaceFromIdANDROID(
XrSession session,
XrSpatialContextEXT spatialContext,
const XrSpatialAnchorSpaceFromIdCreateInfoANDROID* createInfo,
XrSpace* anchorSpace);
Descrições dos parâmetros
sessioné um identificador para uma XrSession criada anteriormente com xrCreateSession.spatialContexté um XrSpatialContextEXT criado anteriormente usando xrCreateSpatialContextAsyncEXT .createInfoé um ponteiro para um XrSpatialAnchorSpaceFromIdCreateInfoANDROID .anchorSpaceé um ponteiro para um XrSpace .
Em cenários em que as entidades de âncora espacial já existem (por exemplo, devido à persistência), os aplicativos podem criar um XrSpace com base nessas âncoras espaciais, fornecendo os IDs de entidade espacial.
A função xrCreateSpatialAnchorSpaceFromIdANDROID cria um identificador XrSpace fornecendo um XrSpatialEntityIdEXT no campo XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId.
O ambiente de execução precisa retornar XR_ERROR_VALIDATION_FAILURE se o XrSpatialContextEXT transmitido para xrCreateSpatialAnchorSpaceFromIdANDROID não tiver sido configurado com XR_SPATIAL_CAPABILITY_ANCHOR_EXT .
Uso válido (implícito)
- A extensão
XR_ANDROID_spatial_anchor_spaceprecisa ser ativada antes de chamar xrCreateSpatialAnchorSpaceFromIdANDROID. -
sessionprecisa ser um identificador XrSession válido -
spatialContextprecisa ser um identificador XrSpatialContextEXT válido -
createInfoprecisa ser um ponteiro para uma estrutura XrSpatialAnchorSpaceFromIdCreateInfoANDROID válida -
anchorSpaceprecisa ser um ponteiro para um identificador XrSpace. -
spatialContextprecisa ter sido criado, alocado ou recuperado desession
Códigos de retorno
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
A estrutura XrSpatialAnchorSpaceFromIdCreateInfoANDROID é definida como:
typedef struct XrSpatialAnchorSpaceFromIdCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSpatialEntityIdEXT anchorEntityId;
} XrSpatialAnchorSpaceFromIdCreateInfoANDROID;
Descrições dos membros
typeé o XrStructureType dessa estrutura.nextéNULLou um ponteiro para a próxima estrutura em uma cadeia de estruturas.anchorEntityIdé oXrSpatialEntityIdEXTda âncora espacial atual de onde o XrSpace será criado.
O ambiente de execução precisa retornar XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT se XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId não for um ID válido para spatialContext .
O ambiente de execução precisa retornar XR_ERROR_SPATIAL_ANCHOR_ENTITY_ID_INVALID_ANDROID se XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId não for um ID de entidade válido para uma âncora.
Uso válido (implícito)
- A extensão
XR_ANDROID_spatial_anchor_spaceprecisa ser ativada antes de usar XrSpatialAnchorSpaceFromIdCreateInfoANDROID. -
typeprecisa serXR_TYPE_SPATIAL_ANCHOR_SPACE_FROM_ID_CREATE_INFO_ANDROID -
nextprecisa serNULLou um ponteiro válido para a próxima estrutura em uma cadeia de estruturas
Ciclo de vida da âncora
O pai de um identificador XrSpace é uma XrSession . Isso significa que um identificador XrSpace que representa a âncora permanece válido mesmo depois que xrCreateSpatialAnchorSpaceFromIdANDROID :: spatialContext ou xrCreateSpatialAnchorSpaceANDROID :: spatialContext são destruídos. Criar um XrSpace para representar uma âncora de entidade espacial permite que o aplicativo destrua o XrSpatialContextEXT que foi configurado com XR_SPATIAL_CAPABILITY_ANCHOR_EXT, mas continue recebendo a pose mais recente da âncora usando o XrSpace com xrLocateSpaces. Ou seja, o ambiente de execução precisa continuar rastreando a âncora até que todos os identificadores XrSpace que a representam sejam destruídos.
Exemplo de código
Criar uma âncora espacial como um XrSpace
O exemplo de código a seguir demonstra como criar uma âncora espacial e retorná-la como um 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));
// ...
Criar XrSpace com base no ID da entidade de âncora
O exemplo de código a seguir demonstra como criar um XrSpace usando um ID de entidade de âncora preexistente.
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));
// ...
Novos comandos
Novas estruturas
Novas constantes de tipo enumerado
XR_ANDROID_SPATIAL_ANCHOR_SPACE_EXTENSION_NAMEXR_ANDROID_spatial_anchor_space_SPEC_VERSIONEstendendo XrResult :
XR_ERROR_SPATIAL_ANCHOR_ENTITY_ID_INVALID_ANDROID
Estendendo XrStructureType :
XR_TYPE_SPATIAL_ANCHOR_SPACE_FROM_ID_CREATE_INFO_ANDROID
Problemas
Histórico de versões
Revisão 1, 15/09/2025 (YuSheng Chang, Kyle Chen)
- Descrição inicial da extensão.