Cadena de nombre
XR_ANDROID_unbounded_reference_space
Tipo de extensión
Extensión de la instancia
Número de extensión registrado
468
Revisión
1
Dependencias de extensiones y versiones
Fecha de última modificación
2024-09-12
Estado de la IP
No hay reclamos de IP conocidos.
Colaboradores
Spencer Quin, Google
Jared Finder, Google
Fengtao Fan, Google
Lachlan Ford, Google
Nihav Jain, Google
Levana Chen, Google
Descripción general
Esta extensión permite que las aplicaciones creen un espacio de referencia UNBOUNDED_ANDROID
. Este espacio de referencia permite que el usuario se mueva libremente por un entorno complejo, a menudo a muchos metros de donde comenzó, y siempre optimiza la estabilidad del sistema de coordenadas cerca del usuario. A medida que el dispositivo detecta más de su entorno para comprender mejor la escena, el origen del espacio de referencia puede desviarse con ajustes enormes según sea necesario para mantener el seguimiento del dispositivo.
Para crear un espacio de referencia UNBOUNDED_ANDROID
, la aplicación puede establecer XrReferenceSpaceCreateInfo::referenceSpaceType
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
y pasarlo a 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));
El espacio de referencia UNBOUNDED_ANDROID
establece un origen bloqueado en el mundo de la posición de los auriculares cuando comienza el seguimiento del dispositivo. Está alineado con la gravedad para excluir el balanceo y el balanceo, con +X a la derecha, +Y hacia arriba y -Z hacia adelante.
El espacio UNBOUNDED_ANDROID
es útil cuando una aplicación necesita renderizar contenido a escala mundial que abarca más allá de los límites de un solo STAGE
, por ejemplo, un piso completo o varios pisos de un edificio.
Un espacio UNBOUNDED_ANDROID
mantiene la estabilidad cerca del usuario ajustando su origen con el tiempo. Puede realizar ajustes ligeros y enormes según sea necesario para mantener el seguimiento de dispositivos.
- El entorno de ejecución no debe poner en cola el evento XrEventDataReferenceSpaceChangePending en respuesta a ajustes menores.
- El entorno de ejecución debe poner en cola el evento XrEventDataReferenceSpaceChangePending en respuesta a ajustes enormes. Por ejemplo, la pose en el espacio
UNBOUNDED_ANDROID
se restablece debido a una pérdida de seguimiento y el seguimiento se restablece en una estimación desconectada del mundo (un "mapa nuevo"). - El sistema actualiza constantemente su comprensión del mundo y ajusta el seguimiento de dispositivos. Si una aplicación requiere una ubicación persistente independientemente de los restablecimientos de seguimiento, se puede usar un ancla en este caso.
Evento de cambio de espacio de referencia
Para los parámetros definidos por la estructura XrEventDataReferenceSpaceChangePending que se devolvieron en eventos de relocalización de cambio de mundo o optimización:
typedef struct XrEventDataReferenceSpaceChangePending {
XrStructureType type;
const void* next;
XrSession session;
XrReferenceSpaceType referenceSpaceType;
XrTime changeTime;
XrBool32 poseValid;
XrPosef poseInPreviousSpace;
} XrEventDataReferenceSpaceChangePending;
Descripciones de los miembros
referenceSpaceType
:XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
.changeTime
representará elXrTime
en el que se completó la relocalización.poseValid
seráfalse
debido a la estimación de desconexión otrue
después de la reconexión.poseInPreviousSpace
no será válido cuandoposeValid
seafalse
.
Cuando las vistas, los controladores y otros espacios experimentan una pérdida de seguimiento en relación con el espacio UNBOUNDED_ANDROID
, las aplicaciones pueden seguir recibiendo valores position
y orientation
inferidos o conocidos por última vez. Estas poses inferidas pueden, por ejemplo, basarse en actualizaciones del modelo del cuello, en la navegación inercial a ciegas o en una posición conocida por última vez. Una aplicación puede suponer que seguirá teniendo configurados XR_SPACE_LOCATION_POSITION_VALID_BIT
y XR_VIEW_STATE_POSITION_VALID_BIT
, pero el entorno de ejecución puede borrar XR_SPACE_LOCATION_POSITION_TRACKED_BIT
y XR_VIEW_STATE_POSITION_TRACKED_BIT
para indicar que la posición se infiere o se conoce por última vez de esta manera.
Cuando se recupera el seguimiento, el entorno de ejecución puede volver a centrar el origen de forma arbitraria, por ejemplo, moverlo para que coincida con el usuario. Una aplicación puede verificar el valor poseValid
que se muestra desde el evento XrEventDataReferenceSpaceChangePending para determinar si está listo para usarse.
Nuevos tipos de objetos
Nuevos tipos de marcas
Nuevas constantes de enum
La enumeración XrReferenceSpaceType se extiende con lo siguiente:
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
Enumeraciones nuevas
Nuevas estructuras
Funciones nuevas
Problemas
Historial de versiones
- Revisión 1, 12/9/2024 (Levana Chen)
- Descripción inicial de la extensión