XR_EXT_spatial_mesh_tracking
Name String
XR_EXT_spatial_mesh_tracking
Tipo di estensione
Estensione dell'istanza
Numero di interno registrato
784
Revisione
1
Stato della ratifica
Non ratificato
Dipendenze di estensioni e versioni
XR_EXT_spatial_entity
Collaboratori
Nihav Jain, Google
Natalie Fleury, Meta
Yuichi Taguchi, Meta
Ron Bessems, Meta
Yin Li, Microsoft
Jimmy Alamparambil, ByteDance
Zhipeng Liu, ByteDance
Jun Yan, ByteDance
Panoramica
Questa estensione si basa su XR_EXT_spatial_entity e definisce le funzionalità spaziali per il monitoraggio della mesh triangolare dell'ambiente. La mesh triangolare fornita dalla funzionalità definita in questa estensione è destinata a essere utilizzata dalle applicazioni per determinare le collisioni dei contenuti virtuali con l'ambiente.
Funzionalità di tracciamento della mesh spaziale
Questa estensione definisce XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT come funzionalità spaziale per il monitoraggio della mesh triangolare dell'ambiente. Il monitoraggio della mesh di entità come piani e oggetti non è coperto da questa funzionalità e deve essere indicato dall'enumerazione del componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT per le rispettive funzionalità che monitorano queste entità.
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT viene utilizzato per fornire all'applicazione una mesh impermeabile e una non impermeabile, a seconda delle funzionalità del runtime e della configurazione selezionata dall'applicazione.
Una mesh impermeabile è una mesh in cui gli spazi vuoti e le regioni non scansionate di tutte le dimensioni sono stati riempiti e formano una mesh stretta all'interno di un determinato blocco volumetrico. Come suggerisce il nome, se un'applicazione riempie d'acqua una mesh impermeabile, l'acqua non dovrebbe fuoriuscire dal volume impermeabile. Rendere una mesh scansionata impermeabile spesso richiede un'elevata potenza di calcolo, anche se alcuni runtime compensano questo costo elaborando la mesh in anticipo.
Supporto di runtime
Se il runtime supporta il monitoraggio della mesh triangolare dell'ambiente, deve indicarlo enumerando XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT in xrEnumerateSpatialCapabilitiesEXT .
Esistono tre possibili funzionalità di un runtime che supporta XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT:
- Il runtime supporta solo il monitoraggio di mesh non impermeabili. In questo caso, il runtime enumera
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTin xrEnumerateSpatialCapabilitiesEXT, ma non deve enumerareXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTin xrEnumerateSpatialCapabilityFeaturesEXT (vedi Tracciamento di una mesh impermeabile). - Il runtime supporta il monitoraggio delle mesh sia watertight che non watertight. In questo caso, il runtime enumera
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTin xrEnumerateSpatialCapabilitiesEXT e deve anche enumerareXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTin xrEnumerateSpatialCapabilityFeaturesEXT (vedi Tracciamento di una mesh impermeabile) per attivare le richieste di tracciamento della mesh impermeabile dall'applicazione. - Il runtime supporta solo il tracciamento di mesh impermeabili. In questo caso, il runtime enumera
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTin xrEnumerateSpatialCapabilitiesEXT e deve anche enumerareXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTin xrEnumerateSpatialCapabilityFeaturesEXT (vedi Tracciamento di una mesh impermeabile) per indicare all'applicazione che supporta il tracciamento di una mesh impermeabile. In questo caso specifico, il runtime restituisce sempre una mesh impermeabile all'applicazione, indipendentemente dalla configurazione diXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT.
Configurazione
La struttura XrSpatialCapabilityConfigurationMeshTrackingEXT è definita come:
typedef struct XrSpatialCapabilityConfigurationMeshTrackingEXT {
XrStructureType type;
const void* next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationMeshTrackingEXT;
Descrizioni dei membri
typeè l'XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture.capabilityè un XrSpatialCapabilityEXT e deve essereXR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT.enabledComponentCountè unuint32_tche descrive il conteggio degli elementi nell'arrayenabledComponents.enabledComponentsè un puntatore a un array di XrSpatialComponentTypeEXT .
Le applicazioni possono attivare la funzionalità spaziale XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT includendo un puntatore a una struttura XrSpatialCapabilityConfigurationMeshTrackingEXT in XrSpatialContextCreateInfoEXT :: capabilityConfigs .
Il runtime deve restituire XR_ERROR_VALIDATION_FAILURE se capability non è XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT .
Utilizzo valido (implicito)
- L'estensione
XR_EXT_spatial_mesh_trackingdeve essere attivata prima di utilizzare XrSpatialCapabilityConfigurationMeshTrackingEXT -
typedeve essereXR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXT -
nextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutture . Vedi anche: XrSpatialFeatureTrackWatertightMeshEXT -
capabilitydeve essere un valore XrSpatialCapabilityEXT valido -
enabledComponentsdeve essere un puntatore a un array dienabledComponentCountvalori XrSpatialComponentTypeEXT validi - Il parametro
enabledComponentCountdeve essere maggiore di0
Tracciamento di una mesh impermeabile
La struttura XrSpatialFeatureTrackWatertightMeshEXT è definita come:
typedef struct XrSpatialFeatureTrackWatertightMeshEXT {
XrStructureType type;
const void* next;
XrBool32 enableWatertightMeshTracking;
} XrSpatialFeatureTrackWatertightMeshEXT;
Descrizioni dei membri
typeè l'XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture.enableWatertightMeshTrackingindica se il runtime deve calcolare una mesh chiusa per l'ambiente scansionato.
I runtime che supportano il monitoraggio della mesh watertight devono enumerare XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT in xrEnumerateSpatialCapabilityFeaturesEXT . La funzionalità XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT consente alle applicazioni di attivare facoltativamente il tracciamento della mesh watertight e di attivare esplicitamente qualsiasi calcolo aggiuntivo che la generazione della mesh watertight potrebbe comportare.
Se XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT viene enumerato da xrEnumerateSpatialCapabilityFeaturesEXT per una determinata funzionalità, l'applicazione può concatenare XrSpatialFeatureTrackWatertightMeshEXT alla struttura di configurazione corrispondente di quella funzionalità per indicare se vuole che la mesh monitorata sia impermeabile o meno. Se l'applicazione imposta enableWatertightMeshTracking su XR_TRUE , il runtime deve calcolare e fornire all'applicazione una mesh impermeabile dell'ambiente. Se l'applicazione imposta enableWatertightMeshTracking su XR_FALSE , la mesh monitorata potrebbe comunque essere impermeabile se il runtime supporta solo il monitoraggio della mesh impermeabile, ad esempio nei casi in cui il runtime fornisce una mesh elaborata da un ambiente pre-scansionato.
Utilizzo valido (implicito)
- L'estensione
XR_EXT_spatial_mesh_trackingdeve essere abilitata prima di utilizzare XrSpatialFeatureTrackWatertightMeshEXT -
typedeve essereXR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT -
nextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutture
Flusso di richiesta
Il diagramma seguente mostra come un'applicazione può configurare il contesto spaziale se vuole monitorare una mesh impermeabile dell'ambiente.
Sì
Sì
L'app richiede una mesh
watertight
L'app richiede…
Sì
Sì
No
No
Il runtime
supporta la funzionalità
"mesh tracking"
Runtime…
Sì
Sì
No
No
Il runtime
supporta la funzionalità
"traccia mesh impermeabile"
Runtime…
L'app crea un contesto spaziale con la funzionalità "mesh tracking capability" (funzionalità di monitoraggio della mesh) E la funzionalità "track watertight mesh" (monitoraggio della mesh impermeabile)
L'app crea audio spaziale…
L'app gestisce la mancanza di supporto delle funzionalità nel runtime corrente
L'app gestisce la mancanza di…
L'app elabora la mesh tracciata per creare una mesh impermeabile, magari con l'aiuto dell'utente per tappare i fori nella mesh.
L'app elabora la tr… Il testo non è SVG, impossibile visualizzarlo
Figura 29. Flusso dell'app per la richiesta di mesh impermeabile
Componenti garantiti
Un runtime che supporta XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT deve fornire i seguenti componenti spaziali come componenti garantiti di tutte le entità rilevate da questa funzionalità e deve enumerarli in xrEnumerateSpatialCapabilityComponentTypesEXT :
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
Componente 3D delimitato
Il componente 3D delimitato fornisce il centro e le estensioni dell'entità su cui si trova. I dati forniti da questo componente semplificano l'eliminazione da parte delle applicazioni delle entità che si trovano al di fuori del frustum di visualizzazione.
Per ulteriori dettagli, consulta 3D delimitato.
Componente Mesh 3D
Il componente mesh 3D fornisce la mesh 3D dell'entità su cui si trova. Per ulteriori dettagli, consulta Mesh 3D.
Segmentazione volumetrica (chunking)
Il runtime può segmentare la mesh in blocchi volumetrici (chunk) per semplificare l'eliminazione dei blocchi della mesh al di fuori del frustum di visualizzazione da parte delle applicazioni. In questo caso, il runtime deve trattare ogni blocco volumetrico come un'entità separata e avere l'insieme di Componenti garantiti su ogni entità (blocco volumetrico). Se il runtime fornisce una mesh impermeabile in questo modo, ogni blocco volumetrico non è impermeabile singolarmente, ma un gruppo di blocchi forma una mesh impermeabile. In questo scenario, il runtime deve aggiungere il componente XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT su ogni entità (blocco volumetrico) e il valore dell'entità principale nei blocchi che insieme formano una mesh impermeabile deve essere lo stesso. In questo modo, l'applicazione può identificare quali blocchi formano insieme una mesh impermeabile.
Le mesh di blocchi volumetrici adiacenti possono condividere i vertici, ma i triangoli di un blocco volumetrico non devono sovrapporsi ai triangoli del volume adiacente.
Componenti facoltativi
Normali mesh
Dati dei componenti
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT utilizza XrSpatialBufferEXT per i suoi dati. XrSpatialBufferEXT :: bufferId rappresenta il buffer contenente le normali dei vertici della mesh dell'entità su cui si trova questo componente. XrSpatialBufferEXT :: bufferType deve essere XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT . Un'entità che ha XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT deve avere anche XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Le normali fornite da questo componente devono corrispondere ai vertici forniti in XrSpatialMeshDataEXT :: vertexBuffer del componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.
Struttura dell'elenco dei componenti per eseguire query sui dati
La struttura XrSpatialComponentMesh3DNormalsListEXT è definita come:
typedef struct XrSpatialComponentMesh3DNormalsListEXT {
XrStructureType type;
void* next;
uint32_t meshNormalsCount;
XrSpatialBufferEXT* meshNormals;
} XrSpatialComponentMesh3DNormalsListEXT;
Descrizioni dei membri
typeè l'XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture. Nessuna struttura di questo tipo è definita in OpenXR di base o in questa estensione.meshNormalsCountè unuint32_tche descrive il conteggio degli elementi nell'arraymeshNormals.meshNormalsè un array di XrVector3f .
Il runtime deve restituire XR_ERROR_VALIDATION_FAILURE da xrQuerySpatialComponentDataEXT se XrSpatialComponentMesh3DNormalsListEXT si trova nella catena successiva di XrSpatialComponentDataQueryResultEXT :: next, ma XrSpatialComponentDataQueryConditionEXT :: componentTypeCount non è zero e XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT non è incluso in XrSpatialComponentDataQueryConditionEXT :: componentTypes .
Il runtime deve restituire XR_ERROR_SIZE_INSUFFICIENT da xrQuerySpatialComponentDataEXT se meshNormalsCount è inferiore a XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
Utilizzo valido (implicito)
- L'estensione
XR_EXT_spatial_mesh_trackingdeve essere attivata prima di utilizzare XrSpatialComponentMesh3DNormalsListEXT -
typedeve essereXR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT -
nextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutture -
meshNormalsdeve essere un puntatore a un array di strutturemeshNormalsCountXrSpatialBufferEXT - Il parametro
meshNormalsCountdeve essere maggiore di0
Configurazione
Se XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT è enumerato in XrSpatialCapabilityComponentTypesEXT :: componentTypes per una funzionalità, l'applicazione può attivarla includendo l'enum nell'elenco XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Questo componente non richiede alcuna configurazione speciale per essere incluso nella catena successiva di XrSpatialCapabilityConfigurationBaseHeaderEXT . Tuttavia, le applicazioni sono incoraggiate a utilizzare questo componente e i relativi dati insieme al componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.
Etichette semantiche della mesh
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;
L'enumerazione XrSpatialMeshSemanticLabelEXT descrive un insieme di etichette semantiche per una mesh. Questo viene utilizzato da diversi componenti spaziali per dare significato ai valori uint8_t di un XrSpatialBufferEXT per le etichette semantiche per vertice o per triangolo. Consulta Etichette semantiche dei vertici della mesh ed Etichette semantiche dei triangoli della mesh
Le estensioni che vogliono estendere questo set di etichette semantiche o aggiungere un nuovo set per le mesh devono seguire le linee guida fornite in Linee guida per la progettazione e l'estensione delle etichette semantiche .
Descrizione enum
XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT
Il runtime non è riuscito a classificare il vertice o il triangolo.
XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT
Il vertice o il triangolo viene mappato a un piano.
XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT
Il vertice o il triangolo viene mappato su una parete.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT
Il vertice o il triangolo viene mappato a un soffitto.
XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT
Il vertice o il triangolo viene mappato a una tabella.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT
Il vertice o il triangolo viene mappato a una sedia.
XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT
Il vertice o il triangolo viene mappato a un divano.
XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT
Il vertice o il triangolo viene mappato a un letto.
Etichette semantiche dei vertici della mesh
Panoramica dei componenti
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT fornisce una singola etichetta semantica per ogni vertice della mesh di un'entità spaziale.
Dati dei componenti
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT utilizza XrSpatialBufferEXT per i suoi dati. XrSpatialBufferEXT :: bufferId rappresenta il buffer contenente le etichette semantiche dei vertici della mesh dell'entità su cui si trova questo componente. XrSpatialBufferEXT :: bufferType deve essere XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . I valori nel buffer corrispondono ai valori dell'enumerazione XrSpatialMeshSemanticLabelEXT. Un'entità che ha XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT deve avere anche il componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Le etichette semantiche fornite da questo componente devono corrispondere ai vertici forniti in XrSpatialMeshDataEXT :: vertexBuffer del componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Ciò implica che l'etichetta semantica in un determinato indice dei dati del buffer spaziale forniti da questo componente corrisponde al vertice nello stesso indice fornito da XrSpatialMeshDataEXT :: vertexBuffer . Ciò implica anche che xrGetSpatialBufferUint8EXT :: bufferCountOutput deve essere lo stesso valore per il buffer dell'etichetta semantica del vertice e XrSpatialMeshDataEXT :: vertexBuffer .
Struttura dell'elenco dei componenti per eseguire query sui dati
La struttura XrSpatialComponentMesh3DVertexSemanticLabelsListEXT è definita come:
typedef struct XrSpatialComponentMesh3DVertexSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DVertexSemanticLabelsListEXT;
Descrizioni dei membri
typeè l'XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture. Nessuna struttura di questo tipo è definita in OpenXR di base o in questa estensione.meshSemanticLabelsCountè unuint32_tche descrive il conteggio degli elementi nell'arraymeshSemanticLabels.meshSemanticLabelsè un array di XrSpatialBufferEXT .
Il runtime deve restituire XR_ERROR_VALIDATION_FAILURE da xrQuerySpatialComponentDataEXT se XrSpatialComponentMesh3DVertexSemanticLabelsListEXT si trova nella catena successiva di XrSpatialComponentDataQueryResultEXT :: next, ma XrSpatialComponentDataQueryConditionEXT :: componentTypeCount non è zero e XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT non è incluso in XrSpatialComponentDataQueryConditionEXT :: componentTypes .
Il runtime deve restituire XR_ERROR_SIZE_INSUFFICIENT da xrQuerySpatialComponentDataEXT se meshSemanticLabelsCount è inferiore a XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
Utilizzo valido (implicito)
- L'estensione
XR_EXT_spatial_mesh_trackingdeve essere abilitata prima di utilizzare XrSpatialComponentMesh3DVertexSemanticLabelsListEXT -
typedeve essereXR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT -
nextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutture -
meshSemanticLabelsdeve essere un puntatore a un array di strutturemeshSemanticLabelsCountXrSpatialBufferEXT - Il parametro
meshSemanticLabelsCountdeve essere maggiore di0
Configurazione
Se XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT è enumerato in XrSpatialCapabilityComponentTypesEXT :: componentTypes per una funzionalità, l'applicazione può attivarla includendo l'enum nell'elenco XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Questo componente non richiede alcuna configurazione speciale per essere incluso nella catena successiva di XrSpatialCapabilityConfigurationBaseHeaderEXT . Tuttavia, le applicazioni sono incoraggiate a utilizzare questo componente e i relativi dati insieme al componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Questo componente non può essere attivato insieme a XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT . Se un'applicazione aggiunge sia XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT sia XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT a XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents , il runtime deve restituire XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . Il runtime deve anche restituire XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT se l'applicazione tenta di attivare entrambi i componenti in XrSpatialContextEXT separati.
Etichette semantiche dei triangoli della mesh
Panoramica dei componenti
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT fornisce un'unica etichetta semantica per ogni triangolo della mesh di un'entità spaziale.
Dati dei componenti
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT utilizza XrSpatialBufferEXT per i suoi dati. XrSpatialBufferEXT :: bufferId rappresenta il buffer contenente le etichette semantiche dei triangoli della mesh dell'entità su cui si trova questo componente. XrSpatialBufferEXT :: bufferType deve essere XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . I valori nel buffer corrispondono ai valori dell'enumerazione XrSpatialMeshSemanticLabelEXT. Un'entità che ha XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT deve avere anche il componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Le etichette semantiche fornite da questo componente devono corrispondere ai triangoli forniti in XrSpatialMeshDataEXT del componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Il conteggio degli elementi del buffer spaziale contenente le etichette semantiche dei triangoli è il conteggio degli elementi di XrSpatialMeshDataEXT :: indexBuffer diviso per 3. Ciò implica che l'etichetta semantica in un determinato indice dei dati del buffer spaziale forniti da questo componente corrisponde al triangolo rappresentato da [index * 3], [index * 3 + 1], [index * 3 + 2] in XrSpatialMeshDataEXT :: indexBuffer .
Struttura dell'elenco dei componenti per eseguire query sui dati
La struttura XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT è definita come:
typedef struct XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT;
Descrizioni dei membri
typeè l'XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture. Nessuna struttura di questo tipo è definita in OpenXR di base o in questa estensione.meshSemanticLabelsCountè unuint32_tche descrive il conteggio degli elementi nell'arraymeshSemanticLabels.meshSemanticLabelsè un array di XrSpatialBufferEXT .
Il runtime deve restituire XR_ERROR_VALIDATION_FAILURE da xrQuerySpatialComponentDataEXT se XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT si trova nella catena successiva di XrSpatialComponentDataQueryResultEXT :: next, ma XrSpatialComponentDataQueryConditionEXT :: componentTypeCount non è zero e XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT non è incluso in XrSpatialComponentDataQueryConditionEXT :: componentTypes .
Il runtime deve restituire XR_ERROR_SIZE_INSUFFICIENT da xrQuerySpatialComponentDataEXT se meshSemanticLabelsCount è inferiore a XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
Utilizzo valido (implicito)
- L'estensione
XR_EXT_spatial_mesh_trackingdeve essere abilitata prima di utilizzare XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT -
typedeve essereXR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT -
nextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutture -
meshSemanticLabelsdeve essere un puntatore a un array di strutturemeshSemanticLabelsCountXrSpatialBufferEXT - Il parametro
meshSemanticLabelsCountdeve essere maggiore di0
Configurazione
Se XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT è enumerato in XrSpatialCapabilityComponentTypesEXT :: componentTypes per una funzionalità, l'applicazione può attivarla includendo l'enum nell'elenco XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Questo componente non richiede alcuna configurazione speciale per essere incluso nella catena successiva di XrSpatialCapabilityConfigurationBaseHeaderEXT . Tuttavia, le applicazioni sono incoraggiate a utilizzare questo componente e i relativi dati insieme al componente XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Questo componente non può essere attivato insieme a XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT . Se un'applicazione aggiunge sia XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT sia XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT a XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents , il runtime deve restituire XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . Il runtime deve anche restituire XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT se l'applicazione tenta di attivare entrambi i componenti in XrSpatialContextEXT separati.
Nuove strutture
- XrSpatialCapabilityConfigurationMeshTrackingEXT
Estensione di XrSpatialCapabilityConfigurationMeshTrackingEXT :
Estensione di XrSpatialComponentDataQueryResultEXT :
Nuovi enum
Nuove costanti enum
XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAMEXR_EXT_spatial_mesh_tracking_SPEC_VERSIONEstensione di XrSpatialCapabilityEXT :
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
Estensione di XrSpatialCapabilityFeatureEXT :
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
Estensione di 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
Estensione di 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
Problemi
Cronologia delle versioni
Revisione 1, 02/11/2025 (Nihav Jain, Google)
- Descrizione iniziale dell'estensione