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 दिखाना ज़रूरी है.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialCapabilityConfigurationMeshTrackingEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_mesh_trackingएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXTहोनी चाहिए -
nextकोNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए. यह भी देखें: XrSpatialFeatureTrackWatertightMeshEXT -
capabilityकी वैल्यू, XrSpatialCapabilityEXT की मान्य वैल्यू होनी चाहिए -
enabledComponentsकोenabledComponentCountमान्य XrSpatialComponentTypeEXT वैल्यू के कलेक्शन का पॉइंटर होना चाहिए -
enabledComponentCountपैरामीटर की वैल्यू,0से ज़्यादा होनी चाहिए
वॉटरटाइट मेश को ट्रैक करना
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 पर सेट करता है, तो ट्रैक किया गया मेश अब भी वॉटरटाइट हो सकता है. ऐसा तब होता है, जब रनटाइम सिर्फ़ वॉटरटाइट मेश ट्रैकिंग के साथ काम करता हो. उदाहरण के लिए, ऐसे मामलों में जहां रनटाइम, पहले से स्कैन किए गए एनवायरमेंट से प्रोसेस किया गया मेश उपलब्ध करा रहा हो.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialFeatureTrackWatertightMeshEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_mesh_trackingएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
आवेदन करने का फ़्लो
नीचे दिए गए डायग्राम में बताया गया है कि अगर किसी ऐप्लिकेशन को आस-पास के माहौल के वॉटरटाइट मेश को ट्रैक करना है, तो वह स्पेसियल कॉन्टेक्स्ट को कैसे कॉन्फ़िगर कर सकता है.
हां
हां
ऐप्लिकेशन को
वॉटरटाइट मेश की ज़रूरत है
ऐप्लिकेशन को...
हां
हां
नहीं
नहीं
रनटाइम
"मेश ट्रैकिंग"
सुविधा के साथ काम करता है
रनटाइम...
हां
हां
नहीं
नहीं
रनटाइम
"ट्रैक वॉटरटाइट मेश"
सुविधा के साथ काम करता है
रनटाइम...
ऐप्लिकेशन, "मेश ट्रैकिंग की सुविधा" और "वॉटरटाइट मेश को ट्रैक करने" की सुविधा की मदद से, स्पेशल कॉन्टेक्स्ट बनाता है
ऐप्लिकेशन, स्पेशल...
ऐप्लिकेशन, मौजूदा रनटाइम पर सुविधा के काम न करने की समस्या को मैनेज करता है
ऐप्लिकेशन में... की कमी है
ऐप्लिकेशन, ट्रैक किए गए मेश को प्रोसेस करके, खुद ही वॉटरटाइट मेश बनाता है. इसके लिए, वह मेश में मौजूद छेद को भरने में उपयोगकर्ता की मदद ले सकता है
ऐप्लिकेशन, लेन-देन को प्रोसेस करता है... टेक्स्ट, एसवीजी फ़ॉर्मैट में नहीं है - इसे नहीं दिखाया जा सकता
इमेज 29. वॉटरटाइट मेश का अनुरोध करने के लिए ऐप्लिकेशन फ़्लो
गारंटी वाले कॉम्पोनेंट
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT के साथ काम करने वाले रनटाइम को, इस सुविधा से खोजी गई सभी इकाइयों के गारंटी वाले कॉम्पोनेंट के तौर पर, ये स्पेशल कॉम्पोनेंट उपलब्ध कराने होंगे. साथ ही, उन्हें xrEnumerateSpatialCapabilityComponentTypesEXT में शामिल करना होगा :
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTXR_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होनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
meshNormalsmust be a pointer to an array ofmeshNormalsCountXrSpatialBufferEXT 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 को ज़रूर दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialComponentMesh3DVertexSemanticLabelsListEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_mesh_trackingएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
meshSemanticLabelsmust be a pointer to an array ofmeshSemanticLabelsCountXrSpatialBufferEXT structures -
meshSemanticLabelsCountपैरामीटर की वैल्यू,0से ज़्यादा होनी चाहिए
कॉन्फ़िगरेशन
अगर किसी क्षमता के लिए, 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 को ज़रूर दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_mesh_trackingएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
meshSemanticLabelsmust be a pointer to an array ofmeshSemanticLabelsCountXrSpatialBufferEXT structures -
meshSemanticLabelsCountपैरामीटर की वैल्यू,0से ज़्यादा होनी चाहिए
कॉन्फ़िगरेशन
अगर किसी क्षमता के लिए, 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 भी दिखाना चाहिए.
नए स्ट्रक्चर
- XrSpatialCapabilityConfigurationMeshTrackingEXT
XrSpatialCapabilityConfigurationMeshTrackingEXT को एक्सटेंड करना :
XrSpatialComponentDataQueryResultEXT को एक्सटेंड करना :
नए Enum
नए Enum कॉन्सटेंट
XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAMEXR_EXT_spatial_mesh_tracking_SPEC_VERSIONXrSpatialCapabilityEXT को एक्सटेंड करना :
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
XrSpatialCapabilityFeatureEXT को एक्सटेंड करना :
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
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
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
समस्याएं
वर्शन हिस्ट्री
पहला संशोधन, 02-11-2025 (निहाव जैन, Google)
- एक्सटेंशन का शुरुआती ब्यौरा