XR_EXT_spatial_mesh_tracking

Name String

XR_EXT_spatial_mesh_tracking

Type d'extension

Extension d'instance

Numéro d'extension enregistré

784

Révision

1

État de la ratification

Non ratifié

Dépendances d'extension et de version

XR_EXT_spatial_entity

Participants

Nihav Jain, Google
Natalie Fleury, Meta
Yuichi Taguchi, Meta
Ron Bessems, Meta
Yin Li, Microsoft
Jimmy Alamparambil, ByteDance
Zhipeng Liu, ByteDance
Jun Yan, ByteDance

Présentation

Cette extension s'appuie sur XR_EXT_spatial_entity et définit des fonctionnalités spatiales pour suivre le maillage triangulaire de l'environnement. Le maillage triangulaire fourni par la fonctionnalité définie dans cette extension est destiné à être utilisé par les applications pour déterminer les collisions du contenu virtuel avec l'environnement.

Capacité de suivi du maillage spatial

Cette extension définit XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT comme une fonctionnalité spatiale permettant de suivre le maillage triangulaire de l'environnement. Le suivi du maillage d'entités telles que des plans et des objets n'est pas couvert par cette fonctionnalité et doit être indiqué par l'énumération du composant XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT pour les fonctionnalités respectives qui suivent ces entités.

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT permet de fournir à l'application un maillage étanche et un maillage non étanche, en fonction des capacités de l'environnement d'exécution et de la configuration sélectionnée par l'application.

Un maillage étanche est un maillage dans lequel les espaces et les régions non scannées de toutes tailles ont été comblés, et qui forme un maillage serré dans un certain bloc volumétrique. Comme son nom l'indique, si une application remplit d'eau un maillage étanche, l'eau ne doit pas s'échapper du volume étanche. La création d'un maillage étanche à partir d'un scan nécessite souvent une puissance de calcul très élevée, bien que certains environnements d'exécution compensent ce coût en traitant le maillage au préalable.

Compatibilité des environnements d'exécution

Si l'environnement d'exécution est compatible avec le suivi du maillage triangulaire de l'environnement, il doit l'indiquer en énumérant XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT dans xrEnumerateSpatialCapabilitiesEXT .

Un environnement d'exécution compatible avec XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT peut avoir trois capacités :

  • L'environnement d'exécution n'est compatible qu'avec le suivi de maillage non étanche. Dans ce cas, l'environnement d'exécution énumère XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT dans xrEnumerateSpatialCapabilitiesEXT, mais ne doit pas énumérer XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT dans xrEnumerateSpatialCapabilityFeaturesEXT (voir Suivre un maillage étanche).
  • L'environnement d'exécution est compatible avec le suivi des maillages étanches et non étanches. Dans ce cas, l'environnement d'exécution énumère XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT dans xrEnumerateSpatialCapabilitiesEXT et doit également énumérer XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT dans xrEnumerateSpatialCapabilityFeaturesEXT (voir Suivre un maillage étanche) afin d'activer les requêtes de suivi de maillage étanche de l'application.
  • L'environnement d'exécution n'est compatible qu'avec le suivi de maillage étanche. Dans ce cas, l'environnement d'exécution énumère XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT dans xrEnumerateSpatialCapabilitiesEXT et doit également énumérer XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT dans xrEnumerateSpatialCapabilityFeaturesEXT (voir Suivre un maillage étanche) pour indiquer à l'application qu'il est compatible avec le suivi de maillage étanche. Dans ce cas particulier, l'environnement d'exécution renvoie toujours un maillage étanche à l'application, quelle que soit la configuration de XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT .

Configuration

La structure XrSpatialCapabilityConfigurationMeshTrackingEXT est définie comme suit :

typedef struct XrSpatialCapabilityConfigurationMeshTrackingEXT {
    XrStructureType                     type;
    const void*                         next;
    XrSpatialCapabilityEXT              capability;
    uint32_t                            enabledComponentCount;
    const XrSpatialComponentTypeEXT*    enabledComponents;
} XrSpatialCapabilityConfigurationMeshTrackingEXT;

Descriptions des membres

  • type est le XrStructureType de cette structure.
  • next est NULL ou un pointeur vers la structure suivante dans une chaîne de structures.
  • capability est un XrSpatialCapabilityEXT et doit être XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT .
  • enabledComponentCount est un uint32_t décrivant le nombre d'éléments dans le tableau enabledComponents.
  • enabledComponents est un pointeur vers un tableau de XrSpatialComponentTypeEXT .

Les applications peuvent activer la fonctionnalité spatiale XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT en incluant un pointeur vers une structure XrSpatialCapabilityConfigurationMeshTrackingEXT dans XrSpatialContextCreateInfoEXT :: capabilityConfigs .

L'environnement d'exécution doit renvoyer XR_ERROR_VALIDATION_FAILURE si capability n'est pas XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT .

Utilisation valide (implicite)

Suivi d'un maillage étanche

La structure XrSpatialFeatureTrackWatertightMeshEXT est définie comme suit :

typedef struct XrSpatialFeatureTrackWatertightMeshEXT {
    XrStructureType    type;
    const void*        next;
    XrBool32           enableWatertightMeshTracking;
} XrSpatialFeatureTrackWatertightMeshEXT;

Descriptions des membres

  • type est le XrStructureType de cette structure.
  • next est NULL ou un pointeur vers la structure suivante dans une chaîne de structures.
  • enableWatertightMeshTracking indique si l'environnement d'exécution doit calculer un maillage étanche pour l'environnement scanné.

Les environnements d'exécution compatibles avec le suivi de maillage étanche doivent énumérer XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT dans xrEnumerateSpatialCapabilityFeaturesEXT . La fonctionnalité XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT permet aux applications d'activer éventuellement le suivi du maillage étanche et d'accepter explicitement tout calcul supplémentaire que la génération du maillage étanche peut entraîner.

Si XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT est énuméré par xrEnumerateSpatialCapabilityFeaturesEXT pour une certaine capacité, l'application peut associer XrSpatialFeatureTrackWatertightMeshEXT à la structure de configuration correspondante de cette capacité pour indiquer si elle souhaite que le maillage suivi soit étanche ou non. Si l'application définit enableWatertightMeshTracking sur XR_TRUE , l'environnement d'exécution doit calculer et fournir à l'application un maillage étanche de l'environnement. Si l'application définit enableWatertightMeshTracking sur XR_FALSE , le maillage suivi peut toujours être étanche si l'environnement d'exécution n'est compatible qu'avec le suivi de maillage étanche, par exemple lorsque l'environnement d'exécution fournit un maillage traité à partir d'un environnement préanalysé.

Utilisation valide (implicite)

Flux d'application

Le schéma ci-dessous montre comment une application peut configurer le contexte spatial si elle souhaite suivre un maillage étanche de l'environnement.

Oui

Oui

L'application nécessite un maillage étanche

L'appli a besoin de...

Oui

Oui

Non

Non

L'environnement d'exécution
est compatible avec la fonctionnalité de "suivi du maillage"

Environnement d'exécution…

Oui

Oui

Non

Non

L'environnement d'exécution
est compatible avec la fonctionnalité "Suivre le maillage étanche"

Environnement d'exécution…

L'application crée un contexte spatial avec la fonctionnalité "mesh tracking capability" ET la fonctionnalité "track watertight mesh"

L'application crée des...

L'application gère l'absence de prise en charge des fonctionnalités sur l'environnement d'exécution actuel

L'application gère le manque de...

L'application traite le maillage suivi pour créer un maillage étanche, éventuellement avec l'aide de l'utilisateur pour boucher les trous dans le maillage.

L'application traite la transaction… Le texte n'est pas au format SVG. Impossible de l'afficher.

Figure 29. Flux de l'application pour demander un maillage étanche

Composants garantis

Un environnement d'exécution compatible avec XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT doit fournir les composants spatiaux suivants en tant que composants garantis de toutes les entités découvertes par cette fonctionnalité et doit les énumérer dans xrEnumerateSpatialCapabilityComponentTypesEXT :

  • XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT
  • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
Composant 3D limité

Le composant 3D délimité fournit le centre et l'étendue de l'entité sur laquelle il se trouve. Les données fournies par ce composant permettent aux applications de supprimer plus facilement les entités qui se trouvent en dehors de leur tronc de vue.

Pour en savoir plus, consultez 3D délimitée.

Composant Maillage 3D

Le composant de maillage 3D fournit le maillage 3D de l'entité sur laquelle il se trouve. Pour en savoir plus, consultez Mesh 3D.

Segmentation volumétrique (chunking)

L'environnement d'exécution peut segmenter le maillage en blocs volumétriques (chunks) pour permettre aux applications de supprimer plus facilement les blocs de maillage situés en dehors de son tronc de vue. Dans ce cas, l'environnement d'exécution doit traiter chaque bloc volumétrique comme une entité distincte et disposer de l'ensemble des composants garantis sur chacune de ces entités (bloc volumétrique). Si l'environnement d'exécution fournit un maillage étanche de cette manière, chaque bloc volumétrique n'est pas étanche individuellement, mais un groupe de blocs forme un maillage étanche. Dans ce cas, l'environnement d'exécution doit ajouter le composant XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT sur chaque entité (bloc volumétrique), et la valeur de l'entité parente sur les blocs qui forment ensemble un maillage étanche doit être la même. Cela permet à l'application d'identifier les fragments qui forment ensemble un maillage étanche.

Les maillages de blocs volumétriques adjacents peuvent partager des sommets, mais les triangles d'un bloc volumétrique ne doivent pas chevaucher les triangles de son volume adjacent.

Composants facultatifs

Normales du maillage

Données du composant

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT utilise XrSpatialBufferEXT pour ses données. XrSpatialBufferEXT :: bufferId représente le tampon contenant les normales des sommets du maillage de l'entité sur laquelle se trouve ce composant. XrSpatialBufferEXT :: bufferType doit être XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT . Une entité qui possède XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT doit également posséder XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Les normales fournies par ce composant doivent correspondre aux sommets fournis dans XrSpatialMeshDataEXT :: vertexBuffer du composant XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.

Structure de la liste des composants pour interroger les données

La structure XrSpatialComponentMesh3DNormalsListEXT est définie comme suit :

typedef struct XrSpatialComponentMesh3DNormalsListEXT {
    XrStructureType        type;
    void*                  next;
    uint32_t               meshNormalsCount;
    XrSpatialBufferEXT*    meshNormals;
} XrSpatialComponentMesh3DNormalsListEXT;

Descriptions des membres

  • type est le XrStructureType de cette structure.
  • next est NULL ou un pointeur vers la structure suivante dans une chaîne de structures. Aucune structure de ce type n'est définie dans OpenXR de base ou dans cette extension.
  • meshNormalsCount est un uint32_t décrivant le nombre d'éléments dans le tableau meshNormals.
  • meshNormals est un tableau de XrVector3f .

L'environnement d'exécution doit renvoyer XR_ERROR_VALIDATION_FAILURE à partir de xrQuerySpatialComponentDataEXT si XrSpatialComponentMesh3DNormalsListEXT se trouve dans la chaîne suivante de XrSpatialComponentDataQueryResultEXT :: next, mais que XrSpatialComponentDataQueryConditionEXT :: componentTypeCount n'est pas égal à zéro et que XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT n'est pas inclus dans XrSpatialComponentDataQueryConditionEXT :: componentTypes .

L'environnement d'exécution doit renvoyer XR_ERROR_SIZE_INSUFFICIENT à partir de xrQuerySpatialComponentDataEXT si meshNormalsCount est inférieur à XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .

Utilisation valide (implicite)

Configuration

Si XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT est énuméré dans XrSpatialCapabilityComponentTypesEXT :: componentTypes pour une fonctionnalité, l'application peut l'activer en incluant l'énumération dans la liste XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Ce composant ne nécessite aucune configuration spéciale pour être inclus dans la chaîne suivante de XrSpatialCapabilityConfigurationBaseHeaderEXT . Toutefois, nous encourageons les applications à utiliser ce composant et ses données conjointement avec le composant XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.

Libellés sémantiques du maillage

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'énumération XrSpatialMeshSemanticLabelEXT décrit un ensemble de libellés sémantiques pour un maillage. Il est utilisé par différents composants spatiaux pour donner un sens aux valeurs uint8_t d'un XrSpatialBufferEXT pour les étiquettes sémantiques par sommet ou par triangle. Consultez Étiquettes sémantiques des sommets de maillage et Étiquettes sémantiques des triangles de maillage.

Les extensions qui souhaitent étendre cet ensemble d'étiquettes sémantiques ou ajouter leur propre ensemble pour les maillages doivent suivre les consignes fournies dans Consignes de conception et d'extension des étiquettes sémantiques .

Description de l'enum

XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT

L'environnement d'exécution n'a pas pu classer le sommet ou le triangle.

XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT

Le sommet ou le triangle est mappé à un sol.

XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT

Le sommet ou le triangle correspond à un mur.

XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT

Le sommet ou le triangle correspond à un plafond.

XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT

Le sommet ou le triangle correspond à une table.

XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT

Le sommet ou le triangle correspond à une chaise.

XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT

Le sommet ou le triangle correspond à un canapé.

XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT

Le sommet ou le triangle correspond à un lit.

Libellés sémantiques des sommets du maillage

Présentation des composants

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT fournit une seule étiquette sémantique pour chaque sommet du maillage d'une entité spatiale.

Données du composant

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT utilise XrSpatialBufferEXT pour ses données. XrSpatialBufferEXT :: bufferId représente le tampon contenant les étiquettes sémantiques de sommet du maillage de l'entité sur laquelle se trouve ce composant. XrSpatialBufferEXT :: bufferType doit être XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . Les valeurs du tampon correspondent à celles de l'énumération XrSpatialMeshSemanticLabelEXT. Une entité qui possède XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT doit également posséder le composant XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Les étiquettes sémantiques fournies par ce composant doivent correspondre aux sommets fournis dans XrSpatialMeshDataEXT :: vertexBuffer du composant XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Cela implique que l'étiquette sémantique à un index donné des données du tampon spatial fournies par ce composant correspond au sommet au même index fourni par XrSpatialMeshDataEXT :: vertexBuffer . Cela implique également que xrGetSpatialBufferUint8EXT :: bufferCountOutput doit être la même valeur pour le tampon d'étiquette sémantique de sommet et XrSpatialMeshDataEXT :: vertexBuffer .

Structure de la liste des composants pour interroger les données

La structure XrSpatialComponentMesh3DVertexSemanticLabelsListEXT est définie comme suit :

typedef struct XrSpatialComponentMesh3DVertexSemanticLabelsListEXT {
    XrStructureType        type;
    void*                  next;
    uint32_t               meshSemanticLabelsCount;
    XrSpatialBufferEXT*    meshSemanticLabels;
} XrSpatialComponentMesh3DVertexSemanticLabelsListEXT;

Descriptions des membres

  • type est le XrStructureType de cette structure.
  • next est NULL ou un pointeur vers la structure suivante dans une chaîne de structures. Aucune structure de ce type n'est définie dans OpenXR de base ou dans cette extension.
  • meshSemanticLabelsCount est un uint32_t décrivant le nombre d'éléments dans le tableau meshSemanticLabels.
  • meshSemanticLabels est un tableau de XrSpatialBufferEXT .

L'environnement d'exécution doit renvoyer XR_ERROR_VALIDATION_FAILURE à partir de xrQuerySpatialComponentDataEXT si XrSpatialComponentMesh3DVertexSemanticLabelsListEXT se trouve dans la chaîne suivante de XrSpatialComponentDataQueryResultEXT :: next, mais que XrSpatialComponentDataQueryConditionEXT :: componentTypeCount n'est pas égal à zéro et que XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT n'est pas inclus dans XrSpatialComponentDataQueryConditionEXT :: componentTypes .

L'environnement d'exécution doit renvoyer XR_ERROR_SIZE_INSUFFICIENT à partir de xrQuerySpatialComponentDataEXT si meshSemanticLabelsCount est inférieur à XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .

Utilisation valide (implicite)

Configuration

Si XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT est énuméré dans XrSpatialCapabilityComponentTypesEXT :: componentTypes pour une fonctionnalité, l'application peut l'activer en incluant l'énumération dans la liste XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Ce composant ne nécessite aucune configuration spéciale pour être inclus dans la chaîne suivante de XrSpatialCapabilityConfigurationBaseHeaderEXT . Toutefois, nous encourageons les applications à utiliser ce composant et ses données conjointement avec le composant XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Ce composant ne peut pas être activé en même temps que XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT . Si une application ajoute à la fois XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT et XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT à XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents , l'environnement d'exécution doit renvoyer XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . L'environnement d'exécution doit également renvoyer XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT si l'application tente d'activer les deux composants dans des XrSpatialContextEXT distincts.

Libellés sémantiques des triangles du maillage

Présentation des composants

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT fournit une seule étiquette sémantique pour chaque triangle du maillage d'une entité spatiale.

Données du composant

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT utilise XrSpatialBufferEXT pour ses données. XrSpatialBufferEXT :: bufferId représente le tampon contenant les étiquettes sémantiques des triangles du maillage de l'entité sur laquelle se trouve ce composant. XrSpatialBufferEXT :: bufferType doit être XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . Les valeurs du tampon correspondent à celles de l'énumération XrSpatialMeshSemanticLabelEXT. Une entité qui possède XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT doit également posséder le composant XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Les étiquettes sémantiques fournies par ce composant doivent correspondre aux triangles fournis dans le XrSpatialMeshDataEXT du composant XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Le nombre d'éléments du tampon spatial contenant les étiquettes sémantiques des triangles correspond au nombre d'éléments de XrSpatialMeshDataEXT :: indexBuffer divisé par 3. Cela implique que l'étiquette sémantique à un index donné des données du tampon spatial fournies par ce composant correspond au triangle représenté par [index * 3], [index * 3 + 1], [index * 3 + 2] dans XrSpatialMeshDataEXT :: indexBuffer .

Structure de la liste des composants pour interroger les données

La structure XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT est définie comme suit :

typedef struct XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT {
    XrStructureType        type;
    void*                  next;
    uint32_t               meshSemanticLabelsCount;
    XrSpatialBufferEXT*    meshSemanticLabels;
} XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT;

Descriptions des membres

  • type est le XrStructureType de cette structure.
  • next est NULL ou un pointeur vers la structure suivante dans une chaîne de structures. Aucune structure de ce type n'est définie dans OpenXR de base ou dans cette extension.
  • meshSemanticLabelsCount est un uint32_t décrivant le nombre d'éléments dans le tableau meshSemanticLabels.
  • meshSemanticLabels est un tableau de XrSpatialBufferEXT .

L'environnement d'exécution doit renvoyer XR_ERROR_VALIDATION_FAILURE à partir de xrQuerySpatialComponentDataEXT si XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT se trouve dans la chaîne suivante de XrSpatialComponentDataQueryResultEXT :: next, mais que XrSpatialComponentDataQueryConditionEXT :: componentTypeCount n'est pas égal à zéro et que XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT n'est pas inclus dans XrSpatialComponentDataQueryConditionEXT :: componentTypes .

L'environnement d'exécution doit renvoyer XR_ERROR_SIZE_INSUFFICIENT à partir de xrQuerySpatialComponentDataEXT si meshSemanticLabelsCount est inférieur à XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .

Utilisation valide (implicite)

Configuration

Si XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT est énuméré dans XrSpatialCapabilityComponentTypesEXT :: componentTypes pour une fonctionnalité, l'application peut l'activer en incluant l'énumération dans la liste XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Ce composant ne nécessite aucune configuration spéciale pour être inclus dans la chaîne suivante de XrSpatialCapabilityConfigurationBaseHeaderEXT . Toutefois, nous encourageons les applications à utiliser ce composant et ses données conjointement avec le composant XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Ce composant ne peut pas être activé en même temps que XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT . Si une application ajoute à la fois XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT et XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT à XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents , l'environnement d'exécution doit renvoyer XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . L'environnement d'exécution doit également renvoyer XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT si l'application tente d'activer les deux composants dans des XrSpatialContextEXT distincts.

Nouvelles structures

Nouvelles énumérations

Nouvelles constantes d'énumération

  • XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAME
  • XR_EXT_spatial_mesh_tracking_SPEC_VERSION
  • Extension de XrSpatialCapabilityEXT :

    • XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
  • Extension de XrSpatialCapabilityFeatureEXT :

    • XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
  • Extension de XrSpatialComponentTypeEXT :

    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT
    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT
    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT
  • Extension de XrStructureType :

    • XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT
    • XR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT

Problèmes

Historique des versions

  • Révision 1, 02/11/2025 (Nihav Jain, Google)

    • Description initiale de l'extension