XR_EXT_spatial_mesh_tracking
Name String
XR_EXT_spatial_mesh_tracking
Tipo de extensión
Extensión de instancia
Número de extensión registrado
784
Revisión
1
Estado de ratificación
No ratificado
Dependencias de extensiones y versiones
XR_EXT_spatial_entity
Colaboradores
Nihav Jain, Google
Natalie Fleury, Meta
Yuichi Taguchi, Meta
Ron Bessems, Meta
Yin Li, Microsoft
Jimmy Alamparambil, ByteDance
Zhipeng Liu, ByteDance
Jun Yan, ByteDance
Descripción general
Esta extensión se basa en XR_EXT_spatial_entity y define las capacidades espaciales para hacer un seguimiento de la malla de triángulos del entorno. La malla de triángulos que proporciona la capacidad definida en esta extensión está diseñada para que las aplicaciones la usen para determinar las colisiones del contenido virtual con el entorno.
Capacidad de seguimiento de malla espacial
Esta extensión define XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT como una capacidad espacial para hacer un seguimiento de la malla de triángulos del entorno. Esta función no abarca el seguimiento de la malla de entidades, como planos y objetos, y, en su lugar, debe indicarse mediante la enumeración del componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT para las funciones respectivas de las que se hace un seguimiento de esas entidades.
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT se usa para proporcionar una malla hermética y no hermética a la aplicación, según las capacidades del entorno de ejecución y la configuración que seleccione la aplicación.
Una malla hermética es aquella en la que se rellenaron los espacios vacíos y las regiones no escaneadas de todos los tamaños, y forma una malla ajustada dentro de un determinado bloque volumétrico. Como sugiere el nombre, si una aplicación llena de agua una malla hermética, no debería haber agua que se filtre fuera del volumen hermético. Hacer que una malla escaneada sea hermética suele requerir un procesamiento muy alto, aunque algunos entornos de ejecución compensan ese costo procesando la malla de antemano.
Asistencia del entorno de ejecución
Si el entorno de ejecución admite el seguimiento de la malla de triángulos del entorno, debe indicarlo enumerando XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT en xrEnumerateSpatialCapabilitiesEXT .
Existen 3 capacidades posibles de un entorno de ejecución que admite XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT:
- El entorno de ejecución solo admite el seguimiento de mallas no herméticas. En este caso, el entorno de ejecución enumera
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTen xrEnumerateSpatialCapabilitiesEXT, pero no debe enumerarXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTen xrEnumerateSpatialCapabilityFeaturesEXT (consulta Cómo hacer un seguimiento de una malla hermética). - El entorno de ejecución admite el seguimiento de mallas herméticas y no herméticas. En este caso, el entorno de ejecución enumera
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTen xrEnumerateSpatialCapabilitiesEXT y también debe enumerarXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTen xrEnumerateSpatialCapabilityFeaturesEXT (consulta Cómo hacer un seguimiento de una malla hermética) para habilitar las solicitudes de seguimiento de mallas herméticas de la aplicación. - El entorno de ejecución solo admite el seguimiento de mallas herméticas. En este caso, el entorno de ejecución enumera
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTen xrEnumerateSpatialCapabilitiesEXT y también debe enumerarXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTen xrEnumerateSpatialCapabilityFeaturesEXT (consulta Cómo hacer un seguimiento de una malla hermética) para indicarle a la aplicación que admite el seguimiento de mallas herméticas. En este caso particular, el entorno de ejecución siempre devuelve una malla hermética a la aplicación, independientemente de la configuración deXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT.
Configuración
La estructura XrSpatialCapabilityConfigurationMeshTrackingEXT se define de la siguiente manera:
typedef struct XrSpatialCapabilityConfigurationMeshTrackingEXT {
XrStructureType type;
const void* next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationMeshTrackingEXT;
Descripciones de los miembros
typees el XrStructureType de esta estructura.nextesNULLo un puntero a la siguiente estructura en una cadena de estructuras.capabilityes un XrSpatialCapabilityEXT y debe serXR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT.enabledComponentCountes unuint32_tque describe el recuento de elementos en el arrayenabledComponents.enabledComponentses un puntero a un array de XrSpatialComponentTypeEXT .
Las aplicaciones pueden habilitar la capacidad espacial XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT incluyendo un puntero a una estructura XrSpatialCapabilityConfigurationMeshTrackingEXT en XrSpatialContextCreateInfoEXT :: capabilityConfigs .
El entorno de ejecución debe devolver XR_ERROR_VALIDATION_FAILURE si capability no es XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT .
Uso válido (implícito)
- La extensión
XR_EXT_spatial_mesh_trackingdebe estar habilitada antes de usar XrSpatialCapabilityConfigurationMeshTrackingEXT. -
typedebe serXR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXT -
nextdebe serNULLo un puntero válido a la siguiente estructura en una cadena de estructuras . Consulta también: XrSpatialFeatureTrackWatertightMeshEXT -
capabilitydebe ser un valor XrSpatialCapabilityEXT válido -
enabledComponentsdebe ser un puntero a un array de valoresenabledComponentCountXrSpatialComponentTypeEXT válidos - El parámetro
enabledComponentCountdebe ser mayor que0.
Cómo hacer un seguimiento de una malla hermética
La estructura XrSpatialFeatureTrackWatertightMeshEXT se define de la siguiente manera:
typedef struct XrSpatialFeatureTrackWatertightMeshEXT {
XrStructureType type;
const void* next;
XrBool32 enableWatertightMeshTracking;
} XrSpatialFeatureTrackWatertightMeshEXT;
Descripciones de los miembros
typees el XrStructureType de esta estructura.nextesNULLo un puntero a la siguiente estructura en una cadena de estructuras.enableWatertightMeshTrackingindica si el entorno de ejecución debe calcular una malla hermética para el entorno analizado.
Los entornos de ejecución que admiten el seguimiento de mallas herméticas deben enumerar XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT en xrEnumerateSpatialCapabilityFeaturesEXT . La función XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT permite que las aplicaciones habiliten de forma opcional el seguimiento de mallas herméticas y que acepten de forma explícita cualquier procesamiento adicional en el que pueda incurrir la generación de mallas herméticas.
Si xrEnumerateSpatialCapabilityFeaturesEXT enumera XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT para una capacidad determinada, la aplicación puede encadenar XrSpatialFeatureTrackWatertightMeshEXT a la estructura de configuración correspondiente de esa capacidad para indicar si desea que la malla con seguimiento sea hermética o no. Si la aplicación establece enableWatertightMeshTracking en XR_TRUE , el entorno de ejecución debe calcular y proporcionar a la aplicación una malla hermética del entorno. Si la aplicación establece enableWatertightMeshTracking en XR_FALSE, es posible que la malla con seguimiento sea hermética si el entorno de ejecución solo admite el seguimiento de mallas herméticas, p.ej., en los casos en que el entorno de ejecución proporciona una malla procesada de un entorno escaneado previamente.
Uso válido (implícito)
- La extensión
XR_EXT_spatial_mesh_trackingdebe estar habilitada antes de usar XrSpatialFeatureTrackWatertightMeshEXT. -
typedebe serXR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT -
nextdebe serNULLo un puntero válido a la siguiente estructura en una cadena de estructuras
Flujo de la aplicación
En el siguiente diagrama, se muestra cómo una aplicación puede configurar el contexto espacial si quiere hacer un seguimiento de una malla hermética del entorno.
Sí
Sí
La app necesita una malla hermética de
La app necesita…
Sí
Sí
No
No
El entorno de ejecución
admite la capacidad de "seguimiento de malla"
Entorno de ejecución…
Sí
Sí
No
No
El entorno de ejecución
admite la función "seguimiento de malla hermética"
Entorno de ejecución…
La app crea un contexto espacial con la "capacidad de seguimiento de malla" Y la función "seguimiento de malla hermética"
La app crea un espacio…
La app controla la falta de compatibilidad con funciones en el entorno de ejecución actual
La app controla la falta de…
La app procesa la malla registrada para crear una malla hermética, tal vez con la ayuda del usuario para parchar los agujeros en la malla.
La app procesa la tr... El texto no es SVG, por lo que no se puede mostrar
Figura 29. Flujo de la app para solicitar una malla hermética
Componentes garantizados
Un entorno de ejecución que admita XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT debe proporcionar los siguientes componentes espaciales como componentes garantizados de todas las entidades descubiertas por esta función y debe enumerarlos en xrEnumerateSpatialCapabilityComponentTypesEXT :
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
Componente 3D delimitado
El componente 3D delimitado proporciona el centro y las extensiones de la entidad en la que se encuentra. Los datos que proporciona este componente facilitan que las aplicaciones eliminen las entidades que están fuera de su tronco de vista.
Consulta Bounded 3D para obtener más detalles.
Componente de malla 3D
El componente de malla 3D proporciona la malla 3D de la entidad en la que se encuentra. Consulta Malla 3D para obtener más detalles.
Segmentación volumétrica (división en fragmentos)
El entorno de ejecución puede segmentar la malla en bloques volumétricos (fragmentos) para que las aplicaciones puedan descartar con mayor facilidad los bloques de malla que se encuentran fuera de su tronco de vista. En ese caso, el entorno de ejecución debe tratar cada bloque volumétrico como una entidad independiente y tener el conjunto de componentes garantizados en cada una de esas entidades (bloque volumétrico). Si el entorno de ejecución proporciona una malla hermética de esta manera, cada bloque volumétrico individual no es hermético, pero un grupo de bloques juntos forman una malla hermética. En ese caso, el entorno de ejecución debe agregar el componente XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT en cada entidad (bloque volumétrico), y el valor de la entidad principal en los bloques que forman una malla hermética debe ser el mismo. Esto permite que la aplicación identifique qué fragmentos forman una malla hermética.
Las mallas de los bloques volumétricos adyacentes pueden compartir vértices, pero los triángulos de un bloque volumétrico no deben superponerse con los triángulos de su volumen adyacente.
Componentes opcionales
Normales de la malla
Datos de componentes
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT usa XrSpatialBufferEXT para sus datos. XrSpatialBufferEXT :: bufferId representa el búfer que contiene las normales de vértices de la malla de la entidad en la que se encuentra este componente. XrSpatialBufferEXT :: bufferType debe ser XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT . Una entidad que tiene XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT también debe tener XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Las normales que proporciona este componente deben corresponder a los vértices proporcionados en XrSpatialMeshDataEXT :: vertexBuffer del componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.
Estructura de la lista de componentes para consultar datos
La estructura XrSpatialComponentMesh3DNormalsListEXT se define de la siguiente manera:
typedef struct XrSpatialComponentMesh3DNormalsListEXT {
XrStructureType type;
void* next;
uint32_t meshNormalsCount;
XrSpatialBufferEXT* meshNormals;
} XrSpatialComponentMesh3DNormalsListEXT;
Descripciones de los miembros
typees el XrStructureType de esta estructura.nextesNULLo un puntero a la siguiente estructura en una cadena de estructuras. No se definen tales estructuras en OpenXR principal ni en esta extensión.meshNormalsCountes unuint32_tque describe el recuento de elementos en el arraymeshNormals.meshNormalses un array de XrVector3f .
El entorno de ejecución debe devolver XR_ERROR_VALIDATION_FAILURE de xrQuerySpatialComponentDataEXT si XrSpatialComponentMesh3DNormalsListEXT está en la siguiente cadena de XrSpatialComponentDataQueryResultEXT :: next, pero XrSpatialComponentDataQueryConditionEXT :: componentTypeCount no es cero y XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT no se incluye en XrSpatialComponentDataQueryConditionEXT :: componentTypes .
El entorno de ejecución debe devolver XR_ERROR_SIZE_INSUFFICIENT de xrQuerySpatialComponentDataEXT si meshNormalsCount es menor que XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
Uso válido (implícito)
- La extensión
XR_EXT_spatial_mesh_trackingdebe estar habilitada antes de usar XrSpatialComponentMesh3DNormalsListEXT. -
typedebe serXR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT -
nextdebe serNULLo un puntero válido a la siguiente estructura en una cadena de estructuras -
meshNormalsdebe ser un puntero a un array de estructurasmeshNormalsCountXrSpatialBufferEXT. - El parámetro
meshNormalsCountdebe ser mayor que0.
Configuración
Si XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT se enumera en XrSpatialCapabilityComponentTypesEXT :: componentTypes para alguna función, la aplicación puede habilitarla incluyendo la enumeración en la lista XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Este componente no requiere ninguna configuración especial para incluirse en la siguiente cadena de XrSpatialCapabilityConfigurationBaseHeaderEXT . Sin embargo, se recomienda que las aplicaciones usen este componente y sus datos junto con el componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.
Etiquetas semánticas de malla
typedef enum XrSpatialMeshSemanticLabelEXT {
XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT = 1,
XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT = 2,
XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT = 3,
XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT = 4,
XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT = 5,
XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT = 6,
XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT = 7,
XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT = 8,
XR_SPATIAL_MESH_SEMANTIC_LABEL_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialMeshSemanticLabelEXT;
La enumeración XrSpatialMeshSemanticLabelEXT describe un conjunto de etiquetas semánticas para una malla. Diferentes componentes espaciales lo usan para dar significado a los valores uint8_t de un XrSpatialBufferEXT para etiquetas semánticas por vértice o por triángulo. Consulta Etiquetas semánticas de vértices de malla y Etiquetas semánticas de triángulos de malla
Las extensiones que quieran ampliar este conjunto de etiquetas semánticas o agregar su propio conjunto nuevo para mallas deben seguir los lineamientos que se indican en Lineamientos de diseño y extensión de etiquetas semánticas .
Descripción de enum
XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT
El entorno de ejecución no pudo clasificar el vértice ni el triángulo.
XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT
El vértice o el triángulo se asigna a un piso.
XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT
El vértice o triángulo se asigna a una pared.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT
El vértice o triángulo se asigna a un techo.
XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT
El vértice o triángulo se asigna a una tabla.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT
El vértice o triángulo se asigna a una silla.
XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT
El vértice o triángulo se asigna a un sofá.
XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT
El vértice o triángulo se asigna a una cama.
Etiquetas semánticas de vértices de malla
Descripción general de los componentes
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT proporciona una sola etiqueta semántica para cada vértice de la malla de una entidad espacial.
Datos de componentes
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT usa XrSpatialBufferEXT para sus datos. XrSpatialBufferEXT :: bufferId representa el búfer que contiene las etiquetas semánticas de vértices de la malla de la entidad en la que se encuentra este componente. XrSpatialBufferEXT :: bufferType debe ser XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . Los valores del búfer corresponden a los valores de la enumeración XrSpatialMeshSemanticLabelEXT. Una entidad que tiene XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT también debe tener el componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Las etiquetas semánticas que proporciona este componente deben corresponder a los vértices proporcionados en XrSpatialMeshDataEXT :: vertexBuffer del componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Esto implica que la etiqueta semántica en un índice determinado de los datos del búfer espacial que proporciona este componente corresponde al vértice en el mismo índice que proporciona XrSpatialMeshDataEXT :: vertexBuffer . Esto también implica que xrGetSpatialBufferUint8EXT :: bufferCountOutput debe ser el mismo valor para el búfer de etiquetas semánticas de vértices y XrSpatialMeshDataEXT :: vertexBuffer .
Estructura de la lista de componentes para consultar datos
La estructura XrSpatialComponentMesh3DVertexSemanticLabelsListEXT se define de la siguiente manera:
typedef struct XrSpatialComponentMesh3DVertexSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DVertexSemanticLabelsListEXT;
Descripciones de los miembros
typees el XrStructureType de esta estructura.nextesNULLo un puntero a la siguiente estructura en una cadena de estructuras. No se definen tales estructuras en OpenXR principal ni en esta extensión.meshSemanticLabelsCountes unuint32_tque describe el recuento de elementos en el arraymeshSemanticLabels.meshSemanticLabelses un array de XrSpatialBufferEXT .
El entorno de ejecución debe devolver XR_ERROR_VALIDATION_FAILURE de xrQuerySpatialComponentDataEXT si XrSpatialComponentMesh3DVertexSemanticLabelsListEXT está en la siguiente cadena de XrSpatialComponentDataQueryResultEXT :: next, pero XrSpatialComponentDataQueryConditionEXT :: componentTypeCount no es cero y XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT no se incluye en XrSpatialComponentDataQueryConditionEXT :: componentTypes .
El entorno de ejecución debe devolver XR_ERROR_SIZE_INSUFFICIENT de xrQuerySpatialComponentDataEXT si meshSemanticLabelsCount es menor que XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
Uso válido (implícito)
- La extensión
XR_EXT_spatial_mesh_trackingdebe estar habilitada antes de usar XrSpatialComponentMesh3DVertexSemanticLabelsListEXT. -
typedebe serXR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT -
nextdebe serNULLo un puntero válido a la siguiente estructura en una cadena de estructuras -
meshSemanticLabelsdebe ser un puntero a un array de estructurasmeshSemanticLabelsCountXrSpatialBufferEXT. - El parámetro
meshSemanticLabelsCountdebe ser mayor que0.
Configuración
Si XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT se enumera en XrSpatialCapabilityComponentTypesEXT :: componentTypes para alguna función, la aplicación puede habilitarla incluyendo la enumeración en la lista XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Este componente no requiere ninguna configuración especial para incluirse en la siguiente cadena de XrSpatialCapabilityConfigurationBaseHeaderEXT . Sin embargo, se recomienda que las aplicaciones usen este componente y sus datos junto con el componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Este componente no se puede habilitar junto con XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT . Si una aplicación agrega XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT y XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT a XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents , el entorno de ejecución debe devolver XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . El entorno de ejecución también debe devolver XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT si la aplicación intenta habilitar ambos componentes en XrSpatialContextEXT independientes.
Etiquetas semánticas de triángulos de malla
Descripción general de los componentes
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT proporciona una sola etiqueta semántica para cada triángulo de la malla de una entidad espacial.
Datos de componentes
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT usa XrSpatialBufferEXT para sus datos. XrSpatialBufferEXT :: bufferId representa el búfer que contiene las etiquetas semánticas de triángulo de la malla de la entidad en la que se encuentra este componente. XrSpatialBufferEXT :: bufferType debe ser XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . Los valores del búfer corresponden a los valores de la enumeración XrSpatialMeshSemanticLabelEXT. Una entidad que tiene XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT también debe tener el componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Las etiquetas semánticas que proporciona este componente deben corresponder a los triángulos que se proporcionan en el XrSpatialMeshDataEXT del componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. El recuento de elementos del búfer espacial que contiene las etiquetas semánticas de triángulos es el recuento de elementos de XrSpatialMeshDataEXT :: indexBuffer dividido por 3. Esto implica que la etiqueta semántica en un índice determinado de los datos del búfer espacial proporcionados por este componente corresponde al triángulo representado por [index * 3], [index * 3 + 1], [index * 3 + 2] en XrSpatialMeshDataEXT :: indexBuffer .
Estructura de la lista de componentes para consultar datos
La estructura XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT se define de la siguiente manera:
typedef struct XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT;
Descripciones de los miembros
typees el XrStructureType de esta estructura.nextesNULLo un puntero a la siguiente estructura en una cadena de estructuras. No se definen tales estructuras en OpenXR principal ni en esta extensión.meshSemanticLabelsCountes unuint32_tque describe el recuento de elementos en el arraymeshSemanticLabels.meshSemanticLabelses un array de XrSpatialBufferEXT .
El entorno de ejecución debe devolver XR_ERROR_VALIDATION_FAILURE de xrQuerySpatialComponentDataEXT si XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT está en la siguiente cadena de XrSpatialComponentDataQueryResultEXT :: next, pero XrSpatialComponentDataQueryConditionEXT :: componentTypeCount no es cero y XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT no se incluye en XrSpatialComponentDataQueryConditionEXT :: componentTypes .
El entorno de ejecución debe devolver XR_ERROR_SIZE_INSUFFICIENT de xrQuerySpatialComponentDataEXT si meshSemanticLabelsCount es menor que XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
Uso válido (implícito)
- La extensión
XR_EXT_spatial_mesh_trackingdebe estar habilitada antes de usar XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT. -
typedebe serXR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT -
nextdebe serNULLo un puntero válido a la siguiente estructura en una cadena de estructuras -
meshSemanticLabelsdebe ser un puntero a un array de estructurasmeshSemanticLabelsCountXrSpatialBufferEXT. - El parámetro
meshSemanticLabelsCountdebe ser mayor que0.
Configuración
Si XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT se enumera en XrSpatialCapabilityComponentTypesEXT :: componentTypes para alguna función, la aplicación puede habilitarla incluyendo la enumeración en la lista XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Este componente no requiere ninguna configuración especial para incluirse en la siguiente cadena de XrSpatialCapabilityConfigurationBaseHeaderEXT . Sin embargo, se recomienda que las aplicaciones usen este componente y sus datos junto con el componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Este componente no se puede habilitar junto con XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT . Si una aplicación agrega XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT y XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT a XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents , el entorno de ejecución debe devolver XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . El entorno de ejecución también debe devolver XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT si la aplicación intenta habilitar ambos componentes en XrSpatialContextEXT independientes.
Estructuras nuevas
- XrSpatialCapabilityConfigurationMeshTrackingEXT
Extensión de XrSpatialCapabilityConfigurationMeshTrackingEXT :
Extiende XrSpatialComponentDataQueryResultEXT :
Enums nuevas
Nuevas constantes de enum
XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAMEXR_EXT_spatial_mesh_tracking_SPEC_VERSIONExtiende XrSpatialCapabilityEXT :
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
Extensión de XrSpatialCapabilityFeatureEXT :
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
Extiende XrSpatialComponentTypeEXT :
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT
Extiende XrStructureType :
XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXTXR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT
Problemas
Historial de versiones
Revisión 1, 2 de noviembre de 2025 (Nihav Jain, Google)
- Descripción inicial de la extensión