XR_EXT_spatial_mesh_tracking

Name String

XR_EXT_spatial_mesh_tracking

एक्सटेंशन का टाइप

इंस्टेंस एक्सटेंशन

रजिस्टर किया गया एक्सटेंशन नंबर

784

बदलाव

1

पुष्टि की स्थिति

मंज़ूरी नहीं मिली

एक्सटेंशन और वर्शन डिपेंडेंसी

XR_EXT_spatial_entity

योगदान देने वाले

निहाव जैन, Google
नताली फ़्लूरी, Meta
यूइची तागुची, Meta
रॉन बेसेम्स, Meta
यिन ली, Microsoft
जिमी आलमपरमबिल, ByteDance
ज़ीपेंग लियू, ByteDance
जून यान, ByteDance

खास जानकारी

यह एक्सटेंशन XR_EXT_spatial_entity पर आधारित है. साथ ही, यह एनवायरमेंट के ट्रायंगल मेश को ट्रैक करने के लिए, स्पेशल क्षमताओं को तय करता है. इस एक्सटेंशन में तय की गई क्षमता से मिलने वाले ट्रायंगल मेश का इस्तेमाल, ऐप्लिकेशन करते हैं. इससे उन्हें यह पता लगाने में मदद मिलती है कि वर्चुअल कॉन्टेंट, आस-पास के माहौल से टकरा रहा है या नहीं.

स्पेशल मेश ट्रैकिंग की सुविधा

यह एक्सटेंशन, XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT को एक स्पैशियल क्षमता के तौर पर तय करता है. इससे एनवायरमेंट के ट्रायंगल मेश को ट्रैक किया जा सकता है. इस सुविधा में, प्लेन और ऑब्जेक्ट जैसी इकाइयों के मेश को ट्रैक नहीं किया जाता. इसके बजाय, उन इकाइयों को ट्रैक करने वाली सुविधाओं के लिए, XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT कॉम्पोनेंट की गिनती करके, ज़रूर बताया जाना चाहिए.

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT का इस्तेमाल, ऐप्लिकेशन को वॉटरटाइट और नॉन-वॉटरटाइट मेश, दोनों उपलब्ध कराने के लिए किया जाता है. यह रनटाइम की क्षमताओं और ऐप्लिकेशन के चुने गए कॉन्फ़िगरेशन पर निर्भर करता है.

वॉटरटाइट मेश वह होता है जिसमें सभी साइज़ के गैप और स्कैन न किए गए हिस्सों को भर दिया जाता है. साथ ही, यह एक तय वॉल्यूमेट्रिक ब्लॉक में टाइट मेश बनाता है. जैसा कि नाम से पता चलता है, अगर कोई ऐप्लिकेशन वॉटरटाइट मेश में पानी भरता है, तो वॉटरटाइट वॉल्यूम से पानी बाहर नहीं निकलना चाहिए. स्कैन की गई मेश को वॉटरटाइट बनाने के लिए, अक्सर बहुत ज़्यादा कंप्यूट की ज़रूरत होती है. हालांकि, कुछ रनटाइम मेश को पहले से प्रोसेस करके, उस लागत को कम कर देते हैं.

रनटाइम से जुड़ी सहायता

अगर रनटाइम, एनवायरमेंट के ट्रायंगल मेश को ट्रैक करने की सुविधा के साथ काम करता है, तो उसे xrEnumerateSpatialCapabilitiesEXT में XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT को शामिल करके, यह जानकारी ज़रूर देनी चाहिए.

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT के साथ काम करने वाले रनटाइम की तीन संभावित क्षमताएं होती हैं -

  • रनटाइम में सिर्फ़ नॉन-वॉटरटाइट मेश ट्रैकिंग की सुविधा काम करती है. इस मामले में, रनटाइम xrEnumerateSpatialCapabilitiesEXT में XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT की गिनती करता है, लेकिन xrEnumerateSpatialCapabilityFeaturesEXT में XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT की गिनती नहीं करनी चाहिए (वॉटरटाइट मेश को ट्रैक करना देखें).
  • रनटाइम, वॉटरटाइट और नॉन-वॉटरटाइट मेश ट्रैकिंग, दोनों के साथ काम करता है. इस मामले में, रनटाइम xrEnumerateSpatialCapabilitiesEXT में XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT को शामिल करता है. साथ ही, xrEnumerateSpatialCapabilityFeaturesEXT में XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT को ज़रूर शामिल करना चाहिए (वॉटरटाइट मेश को ट्रैक करना देखें), ताकि ऐप्लिकेशन से वॉटरटाइट मेश ट्रैकिंग के अनुरोधों को चालू किया जा सके.
  • रनटाइम में सिर्फ़ वॉटरटाइट मेश ट्रैकिंग की सुविधा काम करती है. इस मामले में, रनटाइम xrEnumerateSpatialCapabilitiesEXT में XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT की गिनती करता है. साथ ही, ज़रूरी है कि वह xrEnumerateSpatialCapabilityFeaturesEXT में XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT की गिनती भी करे (वॉटरटाइट मेश को ट्रैक करना देखें), ताकि ऐप्लिकेशन को यह बताया जा सके कि वह वॉटरटाइट मेश ट्रैकिंग के साथ काम करता है. इस मामले में, रनटाइम हमेशा ऐप्लिकेशन को वॉटरटाइट मेश दिखाता है. भले ही, XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT के लिए कॉन्फ़िगरेशन कुछ भी हो.

कॉन्फ़िगरेशन

XrSpatialCapabilityConfigurationMeshTrackingEXT स्ट्रक्चर को इस तरह से तय किया गया है:

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

सदस्यों की जानकारी

  • type, इस स्ट्रक्चर का XrStructureType है.
  • next, NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.
  • capability, XrSpatialCapabilityEXT है और यह XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT होना चाहिए .
  • enabledComponentCount एक uint32_t है, जो enabledComponents कलेक्शन में मौजूद एलिमेंट की संख्या बताता है.
  • enabledComponents, XrSpatialComponentTypeEXT के कलेक्शन का पॉइंटर है.

ऐप्लिकेशन, XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT की स्पेशल कैपेबिलिटी को चालू कर सकते हैं. इसके लिए, उन्हें XrSpatialContextCreateInfoEXT :: capabilityConfigs में XrSpatialCapabilityConfigurationMeshTrackingEXT स्ट्रक्चर का पॉइंटर शामिल करना होगा.

अगर capability, XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT नहीं है, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना ज़रूरी है.

सही इस्तेमाल (इंप्लिसिट)

वॉटरटाइट मेश को ट्रैक करना

XrSpatialFeatureTrackWatertightMeshEXT स्ट्रक्चर को इस तरह से तय किया गया है:

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

सदस्यों की जानकारी

  • type, इस स्ट्रक्चर का XrStructureType है.
  • next, NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.
  • enableWatertightMeshTracking से पता चलता है कि रनटाइम को स्कैन किए गए एनवायरमेंट के लिए, वॉटरटाइट मेश की गणना ज़रूर करनी चाहिए.

वॉटरटाइट मेश ट्रैकिंग की सुविधा के साथ काम करने वाले रनटाइम को xrEnumerateSpatialCapabilityFeaturesEXT में XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT को शामिल करना ज़रूरी है . XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT सुविधा की मदद से, ऐप्लिकेशन में वॉटरटाइट मेश ट्रैकिंग को चालू किया जा सकता है. साथ ही, वॉटरटाइट मेश जनरेट करने के लिए, किसी भी अतिरिक्त कंप्यूट के लिए साफ़ तौर पर ऑप्ट-इन किया जा सकता है. हालांकि, इसके लिए शुल्क लिया जा सकता है.

अगर किसी क्षमता के लिए xrEnumerateSpatialCapabilityFeaturesEXT, XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT की गिनती करता है, तो ऐप्लिकेशन उस क्षमता के कॉन्फ़िगरेशन स्ट्रक्चर में XrSpatialFeatureTrackWatertightMeshEXT को चेन कर सकता है. इससे यह पता चलता है कि ट्रैक की गई मेश, वॉटरटाइट होनी चाहिए या नहीं. अगर ऐप्लिकेशन enableWatertightMeshTracking को XR_TRUE पर सेट करता है, तो रनटाइम को आस-पास के माहौल का वॉटरटाइट मेश कंप्यूट करके ऐप्लिकेशन को उपलब्ध कराना चाहिए. अगर ऐप्लिकेशन enableWatertightMeshTracking को XR_FALSE पर सेट करता है, तो ट्रैक किया गया मेश अब भी वॉटरटाइट हो सकता है. ऐसा तब होता है, जब रनटाइम सिर्फ़ वॉटरटाइट मेश ट्रैकिंग के साथ काम करता हो. उदाहरण के लिए, ऐसे मामलों में जहां रनटाइम, पहले से स्कैन किए गए एनवायरमेंट से प्रोसेस किया गया मेश उपलब्ध करा रहा हो.

सही इस्तेमाल (इंप्लिसिट)

आवेदन करने का फ़्लो

नीचे दिए गए डायग्राम में बताया गया है कि अगर किसी ऐप्लिकेशन को आस-पास के माहौल के वॉटरटाइट मेश को ट्रैक करना है, तो वह स्पेसियल कॉन्टेक्स्ट को कैसे कॉन्फ़िगर कर सकता है.

हां

हां

ऐप्लिकेशन को
वॉटरटाइट मेश की ज़रूरत है

ऐप्लिकेशन को...

हां

हां

नहीं

नहीं

रनटाइम
"मेश ट्रैकिंग"
सुविधा के साथ काम करता है

रनटाइम...

हां

हां

नहीं

नहीं

रनटाइम
"ट्रैक वॉटरटाइट मेश"
सुविधा के साथ काम करता है

रनटाइम...

ऐप्लिकेशन, "मेश ट्रैकिंग की सुविधा" और "वॉटरटाइट मेश को ट्रैक करने" की सुविधा की मदद से, स्पेशल कॉन्टेक्स्ट बनाता है

ऐप्लिकेशन, स्पेशल...

ऐप्लिकेशन, मौजूदा रनटाइम पर सुविधा के काम न करने की समस्या को मैनेज करता है

ऐप्लिकेशन में... की कमी है

ऐप्लिकेशन, ट्रैक किए गए मेश को प्रोसेस करके, खुद ही वॉटरटाइट मेश बनाता है. इसके लिए, वह मेश में मौजूद छेद को भरने में उपयोगकर्ता की मदद ले सकता है

ऐप्लिकेशन, लेन-देन को प्रोसेस करता है... टेक्स्ट, एसवीजी फ़ॉर्मैट में नहीं है - इसे नहीं दिखाया जा सकता

इमेज 29. वॉटरटाइट मेश का अनुरोध करने के लिए ऐप्लिकेशन फ़्लो

गारंटी वाले कॉम्पोनेंट

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT के साथ काम करने वाले रनटाइम को, इस सुविधा से खोजी गई सभी इकाइयों के गारंटी वाले कॉम्पोनेंट के तौर पर, ये स्पेशल कॉम्पोनेंट उपलब्ध कराने होंगे. साथ ही, उन्हें xrEnumerateSpatialCapabilityComponentTypesEXT में शामिल करना होगा :

  • XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT
  • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
बाउंडेड 3D कॉम्पोनेंट

बाउंडेड 3D कॉम्पोनेंट, उस इकाई का सेंटर और दायरा बताता है जिस पर वह मौजूद है. इस कॉम्पोनेंट से मिलने वाले डेटा की मदद से, ऐप्लिकेशन उन इकाइयों को आसानी से हटा सकते हैं जो उनके व्यू फ़्रस्टम से बाहर हैं.

ज़्यादा जानकारी के लिए, बाउंडेड 3D देखें.

मेश 3D कॉम्पोनेंट

मेश 3D कॉम्पोनेंट, उस इकाई का 3D मेश उपलब्ध कराता है जिस पर वह मौजूद है. ज़्यादा जानकारी के लिए, मेश 3D देखें.

वॉल्यूमेट्रिक सेगमेंटेशन (चंकिंग)

रनटाइम, मेश को वॉल्यूमेट्रिक ब्लॉक (चंक) में सेगमेंट कर सकता है, ताकि ऐप्लिकेशन के लिए अपने व्यू फ़्रस्टम के बाहर के मेश ब्लॉक को हटाना आसान हो सके. ऐसे मामले में, रनटाइम को हर वॉल्यूमेट्रिक ब्लॉक को एक अलग इकाई के तौर पर मानना चाहिए. साथ ही, हर इकाई (वॉल्यूमेट्रिक ब्लॉक) पर गारंटी वाले कॉम्पोनेंट का सेट होना चाहिए. अगर रनटाइम इस तरह से वॉटरटाइट मेश उपलब्ध करा रहा है, तो हर वॉल्यूमेट्रिक ब्लॉक अलग-अलग वॉटरटाइट नहीं होता. हालांकि, ब्लॉक का एक ग्रुप मिलकर वॉटरटाइट मेश बनाता है. ऐसे मामले में, रनटाइम को हर इकाई (वॉल्यूमेट्रिक ब्लॉक) पर XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT कॉम्पोनेंट जोड़ना चाहिए. साथ ही, वॉटरटाइट मेश बनाने वाले ब्लॉक में पैरंट इकाई की वैल्यू एक जैसी होनी चाहिए. इससे ऐप्लिकेशन को यह पहचानने में मदद मिलती है कि कौनसे चंक मिलकर एक वॉटरटाइट मेश बनाते हैं.

आस-पास के वॉल्यूमेट्रिक ब्लॉक के मेश, वर्टिसेस शेयर कर सकते हैं. हालांकि, एक वॉल्यूमेट्रिक ब्लॉक के ट्रायंगल, आस-पास के वॉल्यूम के ट्रायंगल के साथ ओवरलैप नहीं होने चाहिए.

वैकल्पिक कॉम्पोनेंट

मेश नॉर्मल

कॉम्पोनेंट का डेटा

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT अपने डेटा के लिए XrSpatialBufferEXT का इस्तेमाल करता है. XrSpatialBufferEXT :: bufferId उस बफ़र को दिखाता है जिसमें उस इकाई के मेश के वर्टेक्स नॉर्मल होते हैं जिस पर यह कॉम्पोनेंट मौजूद है. XrSpatialBufferEXT :: bufferType must be XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT . जिस इकाई में XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT है उसमें XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT भी होना चाहिए. इस कॉम्पोनेंट से मिले नॉर्मल, XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT कॉम्पोनेंट के XrSpatialMeshDataEXT :: vertexBuffer में दिए गए वर्टिस से मेल खाने चाहिए.

डेटा के बारे में क्वेरी करने के लिए कॉम्पोनेंट की सूची का स्ट्रक्चर

XrSpatialComponentMesh3DNormalsListEXT स्ट्रक्चर को इस तरह से तय किया गया है:

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

सदस्यों की जानकारी

  • type, इस स्ट्रक्चर का XrStructureType है.
  • next, NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.
  • meshNormalsCount एक uint32_t है, जो meshNormals कलेक्शन में मौजूद एलिमेंट की संख्या बताता है.
  • meshNormals, XrVector3f का कलेक्शन है.

अगर XrSpatialComponentMesh3DNormalsListEXT, XrSpatialComponentDataQueryResultEXT :: next की अगली चेन में है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_VALIDATION_FAILURE को ज़रूर रिटर्न करना चाहिए. हालांकि, ऐसा तब होना चाहिए, जब XrSpatialComponentDataQueryConditionEXT :: componentTypeCount शून्य न हो और XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT को XrSpatialComponentDataQueryConditionEXT :: componentTypes में शामिल न किया गया हो.

अगर meshNormalsCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput से कम है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_SIZE_INSUFFICIENT को ज़रूर दिखाना चाहिए.

सही इस्तेमाल (इंप्लिसिट)

  • XrSpatialComponentMesh3DNormalsListEXT का इस्तेमाल करने से पहले, XR_EXT_spatial_mesh_tracking एक्सटेंशन चालू करना ज़रूरी है
  • type की वैल्यू XR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT होनी चाहिए
  • next NULL या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
  • meshNormals must be a pointer to an array of meshNormalsCount XrSpatialBufferEXT structures
  • meshNormalsCount पैरामीटर की वैल्यू, 0 से ज़्यादा होनी चाहिए

कॉन्फ़िगरेशन

अगर किसी क्षमता के लिए, XrSpatialCapabilityComponentTypesEXT :: componentTypes में XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT को शामिल किया गया है, तो ऐप्लिकेशन उसे चालू कर सकता है. इसके लिए, उसे XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents सूची में enum को शामिल करना होगा. इस कॉम्पोनेंट को XrSpatialCapabilityConfigurationBaseHeaderEXT की अगली चेन में शामिल करने के लिए, किसी खास कॉन्फ़िगरेशन की ज़रूरत नहीं होती. हालांकि, ऐप्लिकेशन को इस कॉम्पोनेंट और इसके डेटा का इस्तेमाल, XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT कॉम्पोनेंट के साथ करने का सुझाव दिया जाता है.

मेश सिमैंटिक लेबल

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;

XrSpatialMeshSemanticLabelEXT एन्यूमरेशन, मेश के लिए सिमैंटिक लेबल के सेट के बारे में बताता है. इसका इस्तेमाल अलग-अलग स्पेशल कॉम्पोनेंट करते हैं, ताकि हर वर्टेक्स या हर ट्रायंगल के सिमैंटिक लेबल के लिए, XrSpatialBufferEXT से मिली uint8_t वैल्यू को समझा जा सके. मेश वर्टेक्स सिमैंटिक लेबल और मेश ट्राएंगल सिमैंटिक लेबल देखें

अगर किसी एक्सटेंशन को इस सिमैंटिक लेबल सेट को बढ़ाना है या मेश के लिए अपना नया सेट जोड़ना है, तो उसे सिमैंटिक लेबल डिज़ाइन और एक्सटेंशन से जुड़े दिशा-निर्देशों में दिए गए दिशा-निर्देशों का पालन करना चाहिए.

Enum की जानकारी

XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT

रनटाइम, वर्टेक्स या ट्रायंगल को क्लासिफ़ाई नहीं कर सका.

XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT

वर्टेक्स या ट्रायंगल, किसी फ़्लोर से मैप होता है.

XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT

वर्टेक्स या ट्रायंगल को किसी दीवार पर मैप किया गया है.

XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT

वर्टेक्स या ट्रायंगल, सीलिंग से मैप होता है.

XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT

वर्टेक्स या ट्रायंगल, किसी टेबल से मैप होता है.

XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT

वर्टेक्स या ट्रायंगल, कुर्सी पर मैप होता है.

XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT

वर्टेक्स या ट्रायंगल, सोफ़े पर मैप होता है.

XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT

वर्टेक्स या ट्रायंगल, क्यारी से मैप होता है.

मेश वर्टेक्स के सिमैंटिक लेबल

कॉम्पोनेंट की खास जानकारी

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT, किसी स्पेशल एंटिटी के मेश के हर वर्टेक्स के लिए एक सिमैंटिक लेबल उपलब्ध कराता है.

कॉम्पोनेंट का डेटा

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT अपने डेटा के लिए XrSpatialBufferEXT का इस्तेमाल करता है. XrSpatialBufferEXT :: bufferId उस बफ़र को दिखाता है जिसमें उस इकाई के मेश के वर्टेक्स सिमैंटिक लेबल होते हैं जिस पर यह कॉम्पोनेंट मौजूद है. XrSpatialBufferEXT :: bufferType must be XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . बफ़र में मौजूद वैल्यू, XrSpatialMeshSemanticLabelEXT एन्यूमरेशन की वैल्यू से मेल खाती हैं. जिस इकाई में XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT है उसमें XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT कॉम्पोनेंट भी होना चाहिए. इस कॉम्पोनेंट से मिले सिमैंटिक लेबल, XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT कॉम्पोनेंट के XrSpatialMeshDataEXT :: vertexBuffer में दिए गए वर्टिस से मेल खाने चाहिए. इसका मतलब है कि इस कॉम्पोनेंट से मिले स्पेशल बफ़र डेटा के किसी इंडेक्स पर मौजूद सिमैंटिक लेबल, XrSpatialMeshDataEXT :: vertexBuffer से मिले उसी इंडेक्स पर मौजूद वर्टेक्स से मेल खाता है. इसका यह भी मतलब है कि xrGetSpatialBufferUint8EXT :: bufferCountOutput की वैल्यू, वर्टेक्स सिमैंटिक लेबल बफ़र और XrSpatialMeshDataEXT :: vertexBuffer के लिए एक जैसी होनी चाहिए.

डेटा के बारे में क्वेरी करने के लिए कॉम्पोनेंट की सूची का स्ट्रक्चर

XrSpatialComponentMesh3DVertexSemanticLabelsListEXT स्ट्रक्चर को इस तरह से तय किया गया है:

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

सदस्यों की जानकारी

  • type, इस स्ट्रक्चर का XrStructureType है.
  • next, NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.
  • meshSemanticLabelsCount एक uint32_t है, जो meshSemanticLabels कलेक्शन में मौजूद एलिमेंट की संख्या बताता है.
  • meshSemanticLabels, XrSpatialBufferEXT का कलेक्शन है.

अगर XrSpatialComponentMesh3DVertexSemanticLabelsListEXT, XrSpatialComponentDataQueryResultEXT :: next की अगली चेन में है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_VALIDATION_FAILURE ज़रूर दिखाना चाहिए. हालांकि, ऐसा तब होना चाहिए, जब XrSpatialComponentDataQueryConditionEXT :: componentTypeCount शून्य न हो और XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT को XrSpatialComponentDataQueryConditionEXT :: componentTypes में शामिल न किया गया हो.

अगर meshSemanticLabelsCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput से कम है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_SIZE_INSUFFICIENT को ज़रूर दिखाना चाहिए.

सही इस्तेमाल (इंप्लिसिट)

कॉन्फ़िगरेशन

अगर किसी क्षमता के लिए, XrSpatialCapabilityComponentTypesEXT :: componentTypes में XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT को शामिल किया गया है, तो ऐप्लिकेशन उसे चालू कर सकता है. इसके लिए, उसे XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents सूची में enum को शामिल करना होगा. इस कॉम्पोनेंट को XrSpatialCapabilityConfigurationBaseHeaderEXT की अगली चेन में शामिल करने के लिए, किसी खास कॉन्फ़िगरेशन की ज़रूरत नहीं होती. हालांकि, ऐप्लिकेशन को इस कॉम्पोनेंट और इसके डेटा का इस्तेमाल, XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT कॉम्पोनेंट के साथ करने का सुझाव दिया जाता है. इस कॉम्पोनेंट को XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT के साथ चालू नहीं किया जा सकता. अगर कोई ऐप्लिकेशन XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents में XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT और XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT, दोनों को जोड़ता है, तो रनटाइम को XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT दिखाना चाहिए . अगर ऐप्लिकेशन, अलग-अलग XrSpatialContextEXT में दोनों कॉम्पोनेंट चालू करने की कोशिश करता है, तो रनटाइम को XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT भी दिखाना चाहिए.

मेश ट्रायंगल के सिमैंटिक लेबल

कॉम्पोनेंट की खास जानकारी

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT, किसी स्पेशल इकाई के मेश के हर त्रिकोण के लिए एक सिमैंटिक लेबल उपलब्ध कराता है.

कॉम्पोनेंट का डेटा

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT अपने डेटा के लिए XrSpatialBufferEXT का इस्तेमाल करता है. XrSpatialBufferEXT :: bufferId उस बफ़र को दिखाता है जिसमें उस इकाई के मेश के ट्रायंगल सिमैंटिक लेबल होते हैं जिस पर यह कॉम्पोनेंट मौजूद है. XrSpatialBufferEXT :: bufferType must be XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . बफ़र में मौजूद वैल्यू, XrSpatialMeshSemanticLabelEXT एन्यूमरेशन की वैल्यू से मेल खाती हैं. जिस इकाई में XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT है उसमें XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT कॉम्पोनेंट भी होना चाहिए. इस कॉम्पोनेंट से मिले सिमैंटिक लेबल, XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT कॉम्पोनेंट के XrSpatialMeshDataEXT में दिए गए ट्रायंगल से मेल खाने चाहिए. ट्रायंगल सिमैंटिक लेबल वाले स्पेशल बफ़र के एलिमेंट की संख्या, XrSpatialMeshDataEXT :: indexBuffer के एलिमेंट की संख्या को तीन से भाग देने पर मिलती है. इसका मतलब है कि इस कॉम्पोनेंट से मिले स्पैशियल बफ़र डेटा के किसी इंडेक्स पर मौजूद सिमैंटिक लेबल, XrSpatialMeshDataEXT :: indexBuffer में [index * 3], [index * 3 + 1], [index * 3 + 2] से दिखाए गए ट्रायंगल से मेल खाता है.

डेटा के बारे में क्वेरी करने के लिए कॉम्पोनेंट की सूची का स्ट्रक्चर

XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT स्ट्रक्चर को इस तरह से तय किया गया है:

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

सदस्यों की जानकारी

  • type, इस स्ट्रक्चर का XrStructureType है.
  • next, NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.
  • meshSemanticLabelsCount एक uint32_t है, जो meshSemanticLabels कलेक्शन में मौजूद एलिमेंट की संख्या बताता है.
  • meshSemanticLabels, XrSpatialBufferEXT का कलेक्शन है.

अगर XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT, XrSpatialComponentDataQueryResultEXT :: next की अगली चेन में है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए. हालांकि, XrSpatialComponentDataQueryConditionEXT :: componentTypeCount शून्य नहीं होना चाहिए और XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT को XrSpatialComponentDataQueryConditionEXT :: componentTypes में शामिल नहीं किया जाना चाहिए.

अगर meshSemanticLabelsCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput से कम है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_SIZE_INSUFFICIENT को ज़रूर दिखाना चाहिए.

सही इस्तेमाल (इंप्लिसिट)

कॉन्फ़िगरेशन

अगर किसी क्षमता के लिए, XrSpatialCapabilityComponentTypesEXT :: componentTypes में XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT को शामिल किया गया है, तो ऐप्लिकेशन उसे चालू कर सकता है. इसके लिए, उसे XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents सूची में enum को शामिल करना होगा. इस कॉम्पोनेंट को XrSpatialCapabilityConfigurationBaseHeaderEXT की अगली चेन में शामिल करने के लिए, किसी खास कॉन्फ़िगरेशन की ज़रूरत नहीं होती. हालांकि, ऐप्लिकेशन को इस कॉम्पोनेंट और इसके डेटा का इस्तेमाल, XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT कॉम्पोनेंट के साथ करने का सुझाव दिया जाता है. इस कॉम्पोनेंट को XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT के साथ चालू नहीं किया जा सकता. अगर कोई ऐप्लिकेशन XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents में XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT और XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT, दोनों को जोड़ता है, तो रनटाइम को XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT दिखाना चाहिए . अगर ऐप्लिकेशन, अलग-अलग XrSpatialContextEXT में दोनों कॉम्पोनेंट चालू करने की कोशिश करता है, तो रनटाइम को XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT भी दिखाना चाहिए.

नए स्ट्रक्चर

नए Enum

नए Enum कॉन्सटेंट

  • XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAME
  • XR_EXT_spatial_mesh_tracking_SPEC_VERSION
  • XrSpatialCapabilityEXT को एक्सटेंड करना :

    • XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
  • XrSpatialCapabilityFeatureEXT को एक्सटेंड करना :

    • XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
  • 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
  • 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

समस्याएं

वर्शन हिस्ट्री

  • पहला संशोधन, 02-11-2025 (निहाव जैन, Google)

    • एक्सटेंशन का शुरुआती ब्यौरा