XR_EXT_spatial_entity
Name String
XR_EXT_spatial_entity
एक्सटेंशन का टाइप
इंस्टेंस एक्सटेंशन
रजिस्टर किया गया एक्सटेंशन नंबर
741
बदलाव
1
पुष्टि की स्थिति
मंज़ूरी दी गई
एक्सटेंशन और वर्शन डिपेंडेंसी
XR_EXT_future
योगदान देने वाले
निहाव जैन, Google
जैरेड फ़ाइंडर, Google
नैटली फ़्ल्यूरी, Meta
यूइची तागुची, Meta
रॉन बेसेम्स, Meta
यिन ली, Microsoft
कार्तिक कडाप्पन, Magic Leap
जिमी आलमपरमबिल, ByteDance
ज़ीपेंग लियू, ByteDance
जून यान, ByteDance
खास जानकारी
यह एक्सटेंशन, OpenXR में सीन को समझने और स्पेशल रीज़निंग के लिए, कॉन्सेप्ट और बुनियादी बातों के बारे में बताता है. यह कई मिलती-जुलती, लेकिन अलग-अलग सुविधाओं को एक साथ लाता है. इन्हें इस एक्सटेंशन के मुताबिक, एक जैसे तरीके से गिना जाता है, कॉन्फ़िगर किया जाता है, और इंटरैक्ट किया जाता है. इस एक्सटेंशन में, इनमें से किसी भी फ़ंक्शनल एरिया की सटीक जानकारी नहीं दी गई है. इसलिए, औपचारिक जानकारी वाला टेक्स्ट कुछ हद तक अस्पष्ट हो सकता है. इस एक्सटेंशन की खास जानकारी वाले टेक्स्ट में शामिल उदाहरण, कभी-कभी आने वाले समय में उपलब्ध होने वाले या काल्पनिक एक्सटेंशन में बताई गई सुविधा के बारे में बताते हैं. ऐसा उदाहरण देने के मकसद से किया जाता है. हालांकि, इसमें इस तरह की अतिरिक्त सुविधा को सीमित या तय नहीं किया जाता.
इस एक्सटेंशन के मुख्य हिस्से ये हैं:
- स्पेशल एंटिटी : यह फ़ंक्शन एंटिटी पर आधारित होता है. ये एंटिटी अपने-आप में बहुत कम फ़ंक्शन उपलब्ध कराती हैं.
- स्पेशल कॉम्पोनेंट : इन इकाइयों से जुड़े कॉम्पोनेंट होते हैं, जो डेटा और व्यवहार उपलब्ध कराते हैं.
- स्पेशल कॉम्पोनेंट के टाइप : हर स्पेशल कॉम्पोनेंट, किसी खास कॉम्पोनेंट टाइप का होता है. साथ ही, किसी भी इकाई में, किसी भी कॉम्पोनेंट टाइप का ज़्यादा से ज़्यादा एक कॉम्पोनेंट होता है.
- स्पेशल कॉन्टेक्स्ट : स्पेशल एंटिटी के सभी इंटरैक्शन, शुरू करने और कॉन्फ़िगरेशन के फ़ेज़ के बाद कॉन्टेक्स्ट में होते हैं.
- स्पेशल कैपेबिलिटी : स्पेशल एंटिटी को मैनिपुलेट करने की सुविधा, आम तौर पर कैपेबिलिटी से मिलती है . क्षमता का मतलब, किसी फ़ंक्शन की यूनिट से है. उदाहरण के लिए, ऐप्लिकेशन के तय किए गए ऐंकर, प्लेन की पहचान करना या इमेज ट्रैकिंग, बिना किसी सीमा के. आम तौर पर, हर सुविधा को एक अलग एक्सटेंशन में तय किया जाता है. यह एक्सटेंशन, इंस्टेंस बनाने के दौरान चालू होता है. साथ ही, इसे बनाने के दौरान किसी खास कॉन्टेक्स्ट के लिए चालू किया जाता है.
- हर कैपेबिलिटी, कॉम्पोनेंट टाइप के सेट से जुड़ी होती है. इसके लिए, कॉम्पोनेंट, उस कैपेबिलिटी से एक्सपोज़ की गई हर इकाई पर मौजूद होते हैं. क्षमता तय करने वाला एक्सटेंशन यह बताता है कि क्षमता ("गारंटी") के लिए कौनसे कॉम्पोनेंट टाइप ज़रूरी हैं. वहीं, वही एक्सटेंशन या अन्य एक्सटेंशन, कुछ संभावित तरीकों से उपलब्ध कराए गए ज़रूरी नहीं कॉम्पोनेंट टाइप के बारे में बता सकते हैं. किसी भी संख्या में कैपेबिलिटी, इकाइयों को किसी दिए गए कॉम्पोनेंट टाइप के कॉम्पोनेंट उपलब्ध करा सकती हैं. ये कॉम्पोनेंट एक जैसे इस्तेमाल किए जा सकते हैं, भले ही इन्हें किसी भी कैपेबिलिटी ने बनाया हो.
- स्पेशल कैपेबिलिटी फ़ीचर : कुछ सुविधाओं को कॉन्फ़िगर करने की ज़रूरत होती है. इसलिए, उन्हें कैपेबिलिटी फ़ीचर के हिसाब से पैरामीटर किया जाता है .
यह एक्सटेंशन, मौजूदा सिस्टम पर काम करने वाली हर सुविधा के लिए उपलब्ध कॉम्पोनेंट की सूची बनाने का तरीका उपलब्ध कराता है. इसमें ज़रूरी और वैकल्पिक कॉम्पोनेंट, दोनों शामिल हैं.
कुछ सिस्टम में क्षमताओं के लिए, पैरामीटर को अलग-अलग लेवल पर सेट करने की ज़रूरत पड़ सकती है. इसलिए, यह एक्सटेंशन मौजूदा सिस्टम में किसी क्षमता से जुड़ी, काम करने वाली क्षमता की सुविधाओं की गिनती करने का तरीका उपलब्ध कराता है.
यह एक्सटेंशन, कई सामान्य कॉम्पोनेंट के बारे में भी बताता है. इनका इस्तेमाल, कई तरह की क्षमताओं के लिए किया जा सकता है.
स्पेशल एंटिटी
स्पेशल इकाइयां ऐसी इकाइयां होती हैं जो किसी स्पेस में मौजूद होती हैं. इनमें अलग-अलग तरह का डेटा होता है, जिसे कॉम्पोनेंट में व्यवस्थित किया जाता है. इनमें से कोई भी वजह हो सकती है:
- फ़िज़िकल (जैसे, दीवार और फ़र्श जैसी समतल सतहें, कुर्सियां और बुककेस जैसी चीज़ें वगैरह)
- वर्चुअल (जैसे, किसी अन्य ऐप्लिकेशन या उपयोगकर्ता की ओर से अपलोड और शेयर किया गया कॉन्टेंट),
- ऐप्लिकेशन से तय किया गया (उदाहरण के लिए, ऐप्लिकेशन किसी जगह को "लिविंग रूम" या "किचन" के तौर पर मार्क करता है या किसी पॉइंट को टीवी वगैरह रखने की जगह के तौर पर मार्क करता है)
ऐक्शन सिस्टम के ज़रिए दिखने वाली चीज़ों को स्पेशल एंटिटी के तौर पर मॉडल नहीं किया जाता. जैसे, कंट्रोलर या आई गेज़.
OpenXR में स्पेशल इकाइयों को एंटिटी-कॉम्पोनेंट सिस्टम के तौर पर मॉडल किया जाता है. हर स्पेशल एंटिटी में कॉम्पोनेंट का एक सेट होता है. साथ ही, हर कॉम्पोनेंट उस एंटिटी के लिए डेटा और व्यवहार का एक यूनीक सेट उपलब्ध कराता है.
स्पेशल एंटिटी को XrSpatialEntityIdEXT ऐटम या XrSpatialEntityEXT हैंडल से दिखाया जाता है. इसकी जानकारी, स्पेशल एंटिटी को दिखाने के तरीके सेक्शन में दी गई है.
स्पेशल कॉम्पोनेंट के टाइप
स्पेशल एंटिटी में एक या उससे ज़्यादा कॉम्पोनेंट होते हैं. ये कॉम्पोनेंट, उस एंटिटी के लिए डेटा या व्यवहार उपलब्ध कराते हैं. इस एक्सटेंशन से तय किए गए कुछ सामान्य कॉम्पोनेंट के लिए, सामान्य कॉम्पोनेंट देखें.
typedef enum XrSpatialComponentTypeEXT {
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT = 1,
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT = 2,
XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT = 3,
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT = 4,
XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT = 1000741000,
XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT = 1000741001,
XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT = 1000741002,
XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT = 1000741003,
XR_SPATIAL_COMPONENT_TYPE_MARKER_EXT = 1000743000,
XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_EXT = 1000744000,
XR_SPATIAL_COMPONENT_TYPE_KEYBOARD_SEMANTIC_LABEL_EXT = 1000744001,
XR_SPATIAL_COMPONENT_TYPE_MOUSE_SEMANTIC_LABEL_EXT = 1000744002,
XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT = 1000762000,
XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT = 1000763000,
XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT = 1000782000,
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT = 1000783000,
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT = 1000783001,
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT = 1000783002,
XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_ANDROID = 1000785000,
XR_SPATIAL_COMPONENT_TYPE_RAYCAST_RESULT_ANDROID = 1000786000,
XR_SPATIAL_COMPONENT_TYPE_SUBSUMED_BY_ANDROID = 1000791000,
XR_SPATIAL_COMPONENT_TYPE_ROOM_ANDROIDSYS = 1000792002,
XR_SPATIAL_COMPONENT_TYPE_MATERIAL_TYPE_ANDROIDSYS = 1000792003,
XR_SPATIAL_COMPONENT_TYPE_CONFIDENCE_ANDROIDSYS = 1000792004,
XR_SPATIAL_COMPONENT_TYPE_ROOM_EMPTINESS_ANDROIDSYS = 1000792005,
XR_SPATIAL_COMPONENT_TYPE_OCCUPANCY_GRID_ANDROIDX1 = 1000793000,
XR_SPATIAL_COMPONENT_TYPE_ANNOTATION_QUAD_ANDROID = 1000794000,
XR_SPATIAL_COMPONENT_TYPE_STREETSCAPE_GEOMETRY_METADATA_ANDROIDX2 = 1000798000,
XR_SPATIAL_COMPONENT_TYPE_GEOMETRY_POINT_ANDROID = 1000803000,
XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_SCOPES_ANDROIDX1 = 1000808000,
XR_SPATIAL_COMPONENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialComponentTypeEXT;
XrSpatialComponentTypeEXT एन्यूमरेशन, अलग-अलग तरह के कॉम्पोनेंट की पहचान करता है. रनटाइम के दौरान, इनमें से कुछ कॉम्पोनेंट काम कर सकते हैं.
सूची में दिए गए सभी कॉम्पोनेंट टाइप, इस एक्सटेंशन से अपने-आप उपलब्ध नहीं होते: कुछ कॉम्पोनेंट के लिए, इंस्टेंस बनाते समय अतिरिक्त एक्सटेंशन चालू करने की ज़रूरत होती है. इस बारे में दस्तावेज़ में बताया गया है.
इन्यूमरेंट की ये वैल्यू होती हैं:
Enum की जानकारी
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT
यह कॉम्पोनेंट, किसी स्पेशल एंटिटी के लिए 2D बाउंड उपलब्ध कराता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentBounded2DListEXT है ; इससे जुड़े डेटा का स्ट्रक्चर XrSpatialBounded2DDataEXT है
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT
यह कॉम्पोनेंट, किसी स्पेशल इकाई के लिए 3D बाउंड उपलब्ध कराता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentBounded3DListEXT है ; इससे जुड़े डेटा का स्ट्रक्चर XrBoxf है
XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT
ऐसा कॉम्पोनेंट जो किसी स्पेशल इकाई के लिए, पैरंट का XrSpatialEntityIdEXT उपलब्ध कराता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentParentListEXT है ; इससे जुड़ा डेटा स्ट्रक्चर XrSpatialEntityIdEXT है
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
ऐसा कॉम्पोनेंट जो किसी स्पेशल इकाई के लिए 3D मेश उपलब्ध कराता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentMesh3DListEXT है ; इससे जुड़े डेटा का स्ट्रक्चर XrSpatialMeshDataEXT है
XR_SPATIAL_COMPONENT_TYPE_PLANE_ALIGNMENT_EXT
यह कॉम्पोनेंट, किसी स्पेशल एंटिटी के लिए प्लेन अलाइनमेंट एनम उपलब्ध कराता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentPlaneAlignmentListEXT है ; इससे जुड़े डेटा का स्ट्रक्चर XrSpatialPlaneAlignmentEXT है (इसे XR_EXT_spatial_plane_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_MESH_2D_EXT
ऐसा कॉम्पोनेंट जो किसी स्पेशल इकाई के लिए 2D मेश उपलब्ध कराता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentMesh2DListEXT है ; इससे जुड़े डेटा का स्ट्रक्चर XrSpatialMeshDataEXT है (इसे XR_EXT_spatial_plane_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_POLYGON_2D_EXT
यह कॉम्पोनेंट, किसी स्पेशल इकाई के लिए 2D बाउंड्री पॉलीगॉन उपलब्ध कराता है. इससे जुड़ा सूची स्ट्रक्चर XrSpatialComponentPolygon2DListEXT है ; इससे जुड़ा डेटा स्ट्रक्चर XrSpatialPolygon2DDataEXT है (इसे XR_EXT_spatial_plane_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT
यह कॉम्पोनेंट, किसी प्लेन के लिए सिमैंटिक लेबल उपलब्ध कराता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentPlaneSemanticLabelListEXT है ; इससे जुड़े डेटा का स्ट्रक्चर XrSpatialPlaneSemanticLabelEXT है (इसे XR_EXT_spatial_plane_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_MARKER_EXT
मार्कर के टाइप, आईडी, और जगह की जानकारी देने वाला कॉम्पोनेंट. इससे जुड़ा लिस्ट स्ट्रक्चर XrSpatialComponentMarkerListEXT है ; इससे जुड़ा डेटा स्ट्रक्चर XrSpatialMarkerDataEXT है (इसे XR_EXT_spatial_marker_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_EXT
यह कॉम्पोनेंट, किसी सीन के लिए सिमैंटिक लेबल उपलब्ध कराता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentObjectSemanticLabelListEXT है. इससे जुड़ा डेटा स्ट्रक्चर XrSpatialObjectSemanticLabelEXT है. (XR_EXT_spatial_object_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_KEYBOARD_SEMANTIC_LABEL_EXT
यह कॉम्पोनेंट, कीबोर्ड के लिए सिमैंटिक लेबल उपलब्ध कराता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentKeyboardSemanticLabelListEXT है. इससे जुड़ा डेटा स्ट्रक्चर XrSpatialKeyboardSemanticLabelEXT है. इसे XR_EXT_spatial_object_tracking एक्सटेंशन ने जोड़ा है
XR_SPATIAL_COMPONENT_TYPE_MOUSE_SEMANTIC_LABEL_EXT
यह कॉम्पोनेंट, माउस के लिए सिमैंटिक लेबल उपलब्ध कराता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentMouseSemanticLabelListEXT है. इससे जुड़ा डेटा स्ट्रक्चर XrSpatialMouseSemanticLabelEXT है. इसे XR_EXT_spatial_object_tracking एक्सटेंशन ने जोड़ा है
XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT
ऐसा कॉम्पोनेंट जो ऐंकर के लिए जगह की जानकारी देता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentAnchorListEXT है ; इससे जुड़ा डेटा स्ट्रक्चर XrPosef है (इसे XR_EXT_spatial_anchor एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT
यह कॉम्पोनेंट, किसी स्पेशल इकाई के लिए सेव किया गया यूयूआईडी उपलब्ध कराता है. इससे जुड़ा सूची स्ट्रक्चर XrSpatialComponentPersistenceListEXT है ; इससे जुड़ा डेटा स्ट्रक्चर XrSpatialPersistenceDataEXT है (इसे XR_EXT_spatial_persistence एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT
प्लेनर इमेज टाइप के बारे में बताने वाला कॉम्पोनेंट. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentImage2DListEXT है ; इससे जुड़े डेटा का स्ट्रक्चर XrSpatialImageSizeEXT है . (XR_EXT_spatial_image_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT
यह कॉम्पोनेंट, किसी स्पेशल इकाई के 3D मेश के लिए नॉर्मल उपलब्ध कराता है. इससे जुड़ा सूची का स्ट्रक्चर XrSpatialComponentMesh3DNormalsListEXT है ; इससे जुड़ा डेटा स्ट्रक्चर XrSpatialBufferEXT है (इसे XR_EXT_spatial_mesh_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT
यह कॉम्पोनेंट, किसी स्पेशल इकाई के 3D मेश के लिए, हर वर्टेक्स के हिसाब से सिमैंटिक लेबल उपलब्ध कराता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentMesh3DVertexSemanticLabelsListEXT है ; इससे जुड़ा डेटा स्ट्रक्चर XrSpatialBufferEXT है ; बफ़र में मौजूद डेटा, XrSpatialMeshSemanticLabelEXT पर मैप होता है (इसे XR_EXT_spatial_mesh_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT
यह कॉम्पोनेंट, किसी स्पेशल इकाई के 3D मेश के लिए, हर ट्रायंगल-फ़ेस के सिमैंटिक लेबल उपलब्ध कराता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT है ; इससे जुड़ा डेटा स्ट्रक्चर XrSpatialBufferEXT है ; बफ़र में मौजूद डेटा, XrSpatialMeshSemanticLabelEXT पर मैप होता है (इसे XR_EXT_spatial_mesh_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_OBJECT_SEMANTIC_LABEL_ANDROID
यह कॉम्पोनेंट, किसी ऑब्जेक्ट के लिए सिमैंटिक लेबल उपलब्ध कराता है. इससे जुड़ा लिस्ट स्ट्रक्चर XrSpatialComponentObjectSemanticLabelListANDROID है. इससे जुड़ा डेटा स्ट्रक्चर XrSpatialObjectSemanticLabelANDROID है. इसे XR_ANDROID_spatial_object_tracking एक्सटेंशन ने जोड़ा है
XR_SPATIAL_COMPONENT_TYPE_RAYCAST_RESULT_ANDROID
यह कॉम्पोनेंट, किसी इकाई पर रेकास्ट हिट की पोज़िशन की जानकारी देता है. इससे जुड़ा सूची स्ट्रक्चर XrSpatialComponentRaycastResultListANDROID है ; इससे जुड़ा डेटा स्ट्रक्चर XrSpatialRaycastResultDataANDROID है (इसे XR_ANDROID_spatial_discovery_raycast एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_SUBSUMED_BY_ANDROID
यह कॉम्पोनेंट, अटैच की गई इकाई को शामिल करने वाली इकाई का आईडी उपलब्ध कराता है. इससे जुड़ा सूची का स्ट्रक्चर XrSpatialComponentSubsumedByListANDROID है ; इससे जुड़ा डेटा स्ट्रक्चर XrSpatialEntityIdEXT है (इसे XR_ANDROID_spatial_component_subsumed_by एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_ROOM_ANDROIDSYS
ऐसा कॉम्पोनेंट जो शू बॉक्स के डाइमेंशन और रूम टाइप की जानकारी देता है. इससे जुड़ा लिस्ट स्ट्रक्चर XrSpatialComponentRoomListANDROIDSYS है. इससे जुड़ा डेटा स्ट्रक्चर XrSpatialRoomDataANDROIDSYS है. इसे XR_ANDROIDSYS_spatial_room_tracking एक्सटेंशन ने जोड़ा है
XR_SPATIAL_COMPONENT_TYPE_MATERIAL_TYPE_ANDROIDSYS
यह कॉम्पोनेंट, किसी बाउंड्री सरफ़ेस के मटीरियल टाइप की जानकारी देता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentMaterialTypeListANDROIDSYS है. इससे जुड़े डेटा का स्ट्रक्चर XrSpatialMaterialTypeANDROIDSYS है. इसे XR_ANDROIDSYS_spatial_room_tracking एक्सटेंशन ने जोड़ा है
XR_SPATIAL_COMPONENT_TYPE_CONFIDENCE_ANDROIDSYS
यह कॉम्पोनेंट, ट्रैक किए जा सकने वाले ऑब्जेक्ट की विश्वसनीयता की जानकारी देता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentConfidenceListANDROIDSYS है. इससे जुड़े डेटा का स्ट्रक्चर float है. इसे XR_ANDROIDSYS_spatial_room_tracking एक्सटेंशन ने जोड़ा है
XR_SPATIAL_COMPONENT_TYPE_ROOM_EMPTINESS_ANDROIDSYS
यह कॉम्पोनेंट, कमरे के खाली होने की जानकारी देता है. इससे जुड़ा सूची स्ट्रक्चर XrSpatialComponentRoomEmptinessListANDROIDSYS है. इससे जुड़ा डेटा स्ट्रक्चर float है. इसे XR_ANDROIDSYS_spatial_room_tracking एक्सटेंशन ने जोड़ा है
XR_SPATIAL_COMPONENT_TYPE_OCCUPANCY_GRID_ANDROIDX1
यह कॉम्पोनेंट, अटैच की गई इकाई पर ऑक्यूपेंसी ग्रिड की जानकारी देता है. इससे जुड़ा सूची का स्ट्रक्चर XrSpatialComponentOccupancyGridListANDROIDX1 है ; इससे जुड़ा डेटा स्ट्रक्चर XrSpatialOccupancyGridDataANDROIDX1 है (इसे XR_ANDROIDX1_spatial_occupancy_grid एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_ANNOTATION_QUAD_ANDROID
क्वाड एनोटेशन के बारे में जानकारी देने वाला कॉम्पोनेंट. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentAnnotationQuadListANDROID है ; इससे जुड़े डेटा का स्ट्रक्चर XrSpatialAnnotationQuadDataANDROID है (इसे XR_ANDROID_spatial_annotation_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_STREETSCAPE_GEOMETRY_METADATA_ANDROIDX2
यह कॉम्पोनेंट, स्ट्रीटस्केप ज्यामिति के लिए मेटाडेटा उपलब्ध कराता है. इससे जुड़ी सूची का स्ट्रक्चर XrSpatialComponentStreetscapeGeometryMetadataListANDROIDX2 है. इससे जुड़े डेटा का स्ट्रक्चर XrSpatialStreetscapeGeometryMetadataANDROIDX2 है. इसे XR_ANDROIDX2_geospatial_streetscape एक्सटेंशन ने जोड़ा है
XR_SPATIAL_COMPONENT_TYPE_GEOMETRY_POINT_ANDROID
ऐसा कॉम्पोनेंट जो किसी इकाई को ज्यामिति पॉइंट के तौर पर पहचानता है. इस कॉम्पोनेंट टाइप के लिए, कोई सूची या डेटा स्ट्रक्चर मौजूद नहीं है. इस कॉम्पोनेंट की मौजूदगी से सिर्फ़ यह पता चलता है कि किसी इकाई को ऐंकर से अटैच किया जा सकता है. (XR_ANDROID_spatial_geometry_point एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_SCOPES_ANDROIDX1
यह कॉम्पोनेंट, पर्सिस्टेंस स्कोप के बारे में बताता है. इसमें इकाई को सेव किया जाता है. अगर रनटाइम, XR_SPATIAL_COMPONENT_TYPE_PERSISTENCE_EXT के साथ काम करता है, तो यह ज़रूरी है कि वह इस कॉम्पोनेंट के साथ भी काम करे. इससे जुड़ा डेटा स्ट्रक्चर XrSpatialBufferEXT है. सूची का स्ट्रक्चर XrSpatialComponentPersistenceScopeDataListANDROIDX1 है. (XR_ANDROIDX1_spatial_anchor_cloud_sharing एक्सटेंशन ने जोड़ा है)
स्पेशल ऑडियो की सुविधाएं और सेटअप
स्पेशल कैपेबिलिटी से, रनटाइम की उन इकाइयों को खोजने की क्षमता का पता चलता है जिनमें कॉम्पोनेंट का एक सेट मौजूद होता है. ऐप्लिकेशन, XrSpatialContextEXT बनाते समय, स्पेशल क्षमता के कॉम्पोनेंट चालू करते हैं. इसके बाद, रनटाइम को खोजी गई इकाइयों पर सिर्फ़ चालू किए गए कॉम्पोनेंट उपलब्ध कराने चाहिए. उदाहरण के लिए, अगर कोई रनटाइम यह रिपोर्ट करता है कि किसी क्षमता के कॉम्पोनेंट में से एक "सिमैंटिक लेबल" है, तो इसका मतलब है कि ऐप्लिकेशन उस क्षमता के कॉन्फ़िगरेशन के ज़रिए सिमैंटिक लेबल चालू कर सकता है. साथ ही, रनटाइम को सिर्फ़ तब सिमैंटिक लेबल कॉम्पोनेंट उपलब्ध कराना चाहिए, जब उसे कॉन्फ़िगर किया गया हो.
typedef enum XrSpatialCapabilityEXT {
XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT = 1000741000,
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_QR_CODE_EXT = 1000743000,
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_MICRO_QR_CODE_EXT = 1000743001,
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_ARUCO_MARKER_EXT = 1000743002,
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_APRIL_TAG_EXT = 1000743003,
XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_EXT = 1000744000,
XR_SPATIAL_CAPABILITY_ANCHOR_EXT = 1000762000,
XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT = 1000782000,
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT = 1000783000,
XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_ANDROID = 1000785000,
XR_SPATIAL_CAPABILITY_DEPTH_RAYCAST_ANDROID = 1000786000,
XR_SPATIAL_CAPABILITY_ROOM_TRACKING_ANDROIDSYS = 1000792000,
XR_SPATIAL_CAPABILITY_ROOM_BOUNDARY_TRACKING_ANDROIDSYS = 1000792001,
XR_SPATIAL_CAPABILITY_ANNOTATION_TRACKING_ANDROID = 1000794000,
XR_SPATIAL_CAPABILITY_STREETSCAPE_GEOMETRY_ANDROIDX2 = 1000798000,
XR_SPATIAL_CAPABILITY_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialCapabilityEXT;
XrSpatialCapabilityEXT एन्यूमरेशन से, उन अलग-अलग तरह की सुविधाओं की पहचान की जाती है जो रनटाइम के साथ काम कर सकती हैं.
इन्यूमरेंट की ये वैल्यू होती हैं:
Enum की जानकारी
XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT
प्लेन ट्रैकिंग (XR_EXT_spatial_plane_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_QR_CODE_EXT
क्यूआर कोड का पता लगाने और उन्हें ट्रैक करने की सुविधा. (XR_EXT_spatial_marker_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_MICRO_QR_CODE_EXT
माइक्रो क्यूआर कोड का पता लगाने और उन्हें ट्रैक करने की सुविधा. (XR_EXT_spatial_marker_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_ARUCO_MARKER_EXT
Aruco मार्कर का पता लगाने और उन्हें ट्रैक करने की सुविधा. (XR_EXT_spatial_marker_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_MARKER_TRACKING_APRIL_TAG_EXT
AprilTags का पता लगाने और उन्हें ट्रैक करने की सुविधा. (XR_EXT_spatial_marker_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_EXT
ऑब्जेक्ट ट्रैकिंग (XR_EXT_spatial_object_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_ANCHOR_EXT
स्पेशल ऐंकर बनाने की सुविधा (XR_EXT_spatial_anchor एक्सटेंशन ने जोड़ी है)
XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT
समतल रेफ़रंस इमेज का पता लगाने और उन्हें ट्रैक करने की सुविधा. (XR_EXT_spatial_image_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
किसी एनवायरमेंट के मेश को ट्रैक करने की क्षमता. (XR_EXT_spatial_mesh_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_OBJECT_TRACKING_ANDROID
ऑब्जेक्ट ट्रैकिंग (XR_ANDROID_spatial_object_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_DEPTH_RAYCAST_ANDROID
डेप्थ बफ़र के ख़िलाफ़ रेकास्ट (XR_ANDROID_spatial_discovery_raycast एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_ROOM_TRACKING_ANDROIDSYS
XR_ANDROIDSYS_spatial_room_tracking एक्सटेंशन की मदद से, किसी स्पेस को ट्रैक करने की सुविधा जोड़ी गई
XR_SPATIAL_CAPABILITY_ROOM_BOUNDARY_TRACKING_ANDROIDSYS
कमरे की सीमा को ट्रैक करने की सुविधा (XR_ANDROIDSYS_spatial_room_tracking एक्सटेंशन ने जोड़ी है)
XR_SPATIAL_CAPABILITY_ANNOTATION_TRACKING_ANDROID
एनोटेशन ट्रैकिंग (XR_ANDROID_spatial_annotation_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_STREETSCAPE_GEOMETRY_ANDROIDX2
स्ट्रीटस्केप ज्यामिति (XR_ANDROIDX2_geospatial_streetscape एक्सटेंशन से जोड़ी गई)
xrEnumerateSpatialCapabilitiesEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrEnumerateSpatialCapabilitiesEXT(
XrInstance instance,
XrSystemId systemId,
uint32_t capabilityCapacityInput,
uint32_t* capabilityCountOutput,
XrSpatialCapabilityEXT* capabilities);
पैरामीटर की जानकारी
instance, XrInstance का हैंडल है.systemIdवहXrSystemIdहै जिसकी स्पेशल ऑडियो की सुविधाओं की गिनती की जाएगी.capabilityCapacityInput,capabilitiesकलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध को दिखाने के लिए, 0 का इस्तेमाल किया जाता है.capabilityCountOutput, क्षमताओं की संख्या है याcapabilityCapacityInputके कम होने पर ज़रूरी क्षमता है.capabilities, XrSpatialCapabilityEXT का कलेक्शन है. अगरcapabilityCapacityInputकी वैल्यू 0 है, तो यहNULLहो सकती है.- ज़रूरी
capabilitiesसाइज़ को वापस पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, xrEnumerateSpatialCapabilitiesEXT का इस्तेमाल करके, दिए गए XrSystemId के साथ काम करने वाली स्पेशल क्षमताओं की सूची को एन्यूमरेट कर सकता है.
रनटाइम को उन स्पेशल ऑडियो सुविधाओं की गिनती नहीं करनी चाहिए जिनका एक्सटेंशन instance के लिए चालू नहीं है.
सही इस्तेमाल (इंप्लिसिट)
- xrEnumerateSpatialCapabilitiesEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
instanceएक मान्य XrInstance हैंडल होना ज़रूरी है -
capabilityCountOutputकोuint32_tवैल्यू का पॉइंटर होना चाहिए - अगर
capabilityCapacityInputकी वैल्यू0नहीं है, तोcapabilitiesकोcapabilityCapacityInputXrSpatialCapabilityEXT वैल्यू के कलेक्शन का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
xrEnumerateSpatialCapabilityComponentTypesEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrEnumerateSpatialCapabilityComponentTypesEXT(
XrInstance instance,
XrSystemId systemId,
XrSpatialCapabilityEXT capability,
XrSpatialCapabilityComponentTypesEXT* capabilityComponents);
पैरामीटर की जानकारी
instance, XrInstance का हैंडल है.systemIdवहXrSystemIdहै जिसके स्पेशल कैपेबिलिटी कॉम्पोनेंट की गिनती की जाएगी.capability, XrSpatialCapabilityEXT है. इसके लिए, कॉम्पोनेंट की गिनती की जाएगी.capabilityComponents, XrSpatialCapabilityComponentTypesEXT का पॉइंटर है. यह एक इनपुट/आउटपुट स्ट्रक्चर है, जिसमें ऐप्लिकेशन के लिए तय किया गया कलेक्शन भरा जाता है.
यह फ़ंक्शन, कॉम्पोनेंट के उन टाइप की गिनती करता है जो सिस्टम में कॉन्फ़िगर की गई इकाइयों पर, दी गई सुविधा उपलब्ध कराती है.
ऐप्लिकेशन, XrSpatialCapabilityComponentTypesEXT :: componentTypes में बताए गए कॉम्पोनेंट टाइप का इस्तेमाल कर सकता है. इससे कॉम्पोनेंट के पूरे सेट को समझा जा सकता है. systemId, capability के लिए इन कॉम्पोनेंट को इस्तेमाल करने की सुविधा देता है. साथ ही, इस सूची का इस्तेमाल करके यह तय किया जा सकता है कि capability के लिए XrSpatialContextEXT बनाते समय, उसके लिए मान्य कॉन्फ़िगरेशन क्या है.
अगर xrEnumerateSpatialCapabilitiesEXT ने capability को एन्यूमेरेटर नहीं किया है, तो रनटाइम को XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT दिखाना चाहिए.
रनटाइम को उन स्पेशल कॉम्पोनेंट टाइप की गिनती नहीं करनी चाहिए जिनका एक्सटेंशन instance के लिए चालू नहीं है.
सही इस्तेमाल (इंप्लिसिट)
- xrEnumerateSpatialCapabilityComponentTypesEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
instanceएक मान्य XrInstance हैंडल होना ज़रूरी है -
capabilityकी वैल्यू, XrSpatialCapabilityEXT की मान्य वैल्यू होनी चाहिए -
capabilityComponentsको XrSpatialCapabilityComponentTypesEXT स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
XrSpatialCapabilityComponentTypesEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialCapabilityComponentTypesEXT {
XrStructureType type;
void* next;
uint32_t componentTypeCapacityInput;
uint32_t componentTypeCountOutput;
XrSpatialComponentTypeEXT* componentTypes;
} XrSpatialCapabilityComponentTypesEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.componentTypeCapacityInput, कलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध को दिखाने के लिए, 0 का इस्तेमाल किया जाता है.componentTypeCountOutput, कॉम्पोनेंट टाइप की संख्या है याcomponentTypeCapacityInputके कम होने पर ज़रूरी क्षमता है.componentTypes, XrSpatialComponentTypeEXT का कलेक्शन है. अगरcomponentTypeCapacityInputकी वैल्यू 0 है, तो यहNULLहो सकती है.- ज़रूरी
componentTypesसाइज़ को वापस पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialCapabilityComponentTypesEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_CAPABILITY_COMPONENT_TYPES_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए - अगर
componentTypeCapacityInputकी वैल्यू0नहीं है, तोcomponentTypesकोcomponentTypeCapacityInputXrSpatialComponentTypeEXT वैल्यू के कलेक्शन का पॉइंटर होना चाहिए
स्पेशल ऑडियो की सुविधा
typedef enum XrSpatialCapabilityFeatureEXT {
XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_FIXED_SIZE_MARKERS_EXT = 1000743000,
XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_STATIC_MARKERS_EXT = 1000743001,
XR_SPATIAL_CAPABILITY_FEATURE_OBJECT_SEMANTIC_LABEL_SUBSET_EXT = 1000744000,
XR_SPATIAL_CAPABILITY_FEATURE_SPHERE_BOUNDS_FILTER_ANDROID = 1000761000,
XR_SPATIAL_CAPABILITY_FEATURE_BOX_BOUNDS_FILTER_ANDROID = 1000761001,
XR_SPATIAL_CAPABILITY_FEATURE_FRUSTUM_BOUNDS_FILTER_ANDROID = 1000761002,
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT = 1000782000,
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT = 1000782001,
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT = 1000782002,
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT = 1000783000,
XR_SPATIAL_CAPABILITY_FEATURE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialCapabilityFeatureEXT;
कुछ सुविधाओं में ऐसे पैरामीटर होते हैं जो ऐप्लिकेशन को एक्सपोज़ किए जाते हैं. इससे यह कॉन्फ़िगर किया जाता है कि रनटाइम के दौरान कॉम्पोनेंट डेटा की गिनती कैसे की जाती है. पैरामीटर तय करने/कॉन्फ़िगर करने की इन सुविधाओं को कैपेबिलिटी फ़ीचर कहा जाता है. उदाहरण के लिए, इमेज ट्रैक करने की सुविधा के लिए, रनटाइम किसी ऐप्लिकेशन की सुविधा के साथ काम कर सकता है. इससे यह तय किया जा सकता है कि ट्रैक की गई इमेज, स्टेशनरी हैं या नहीं.
कॉन्फ़िगरेशन स्ट्रक्चर के ज़रिए रनटाइम को यह जानकारी देने से, जुड़ी हुई इकाइयों पर मौजूद कॉम्पोनेंट टाइप के सेट में बदलाव नहीं होना चाहिए. उदाहरण के लिए, ट्रैक की गई इमेज पर. हालांकि, रनटाइम शायद इमेज ट्रैकिंग की क्षमता को ऑप्टिमाइज़ कर सके और ऐप्लिकेशन को बेहतर अनुभव दे सके.
ऐसी सुविधाओं को XrSpatialCapabilityFeatureEXT से दिखाया जाता है. साथ ही, ऐप्लिकेशन उन्हें xrEnumerateSpatialCapabilityFeaturesEXT का इस्तेमाल करके दिखाता है.
हर सुविधा को चालू करने के लिए, उससे जुड़ा कॉन्फ़िगरेशन स्ट्रक्चर होता है. इस तरह के कॉन्फ़िगरेशन स्ट्रक्चर, संबंधित क्षमता के XrSpatialCapabilityConfigurationBaseHeaderEXT :: next से जुड़े होने चाहिए.
इन्यूमरेंट की ये वैल्यू होती हैं:
Enum की जानकारी
XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_FIXED_SIZE_MARKERS_EXT
ऐप्लिकेशन को मार्कर का साइज़ तय करने की अनुमति देने वाली सुविधा. इससे जुड़ा कॉन्फ़िगरेशन स्ट्रक्चर XrSpatialMarkerSizeEXT है. इसे XR_EXT_spatial_marker_tracking एक्सटेंशन ने जोड़ा है
XR_SPATIAL_CAPABILITY_FEATURE_MARKER_TRACKING_STATIC_MARKERS_EXT
यह सुविधा, ऐप्लिकेशन को यह बताने की अनुमति देती है कि मार्कर स्टैटिक हैं या नहीं. इससे जुड़ा कॉन्फ़िगरेशन स्ट्रक्चर XrSpatialMarkerStaticOptimizationEXT है. इसे XR_EXT_spatial_marker_tracking एक्सटेंशन ने जोड़ा है
XR_SPATIAL_CAPABILITY_FEATURE_OBJECT_SEMANTIC_LABEL_SUBSET_EXT
स्पेशल फ़ीचर की मदद से, ऐप्लिकेशन XrSpatialObjectSemanticLabelEXT से लेबल के सबसेट की जानकारी दे सकते हैं, ताकि रनटाइम को ट्रैक किया जा सके. इससे जुड़ा कॉन्फ़िगरेशन स्ट्रक्चर XrSpatialFeatureObjectSemanticLabelSubsetEXT है. (XR_EXT_spatial_object_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_FEATURE_SPHERE_BOUNDS_FILTER_ANDROID
रनटाइम, XrSpatialDiscoverySnapshotCreateInfoEXT के लिए XrSpatialBoundsSpherefANDROID फ़िल्टर के साथ काम करता है ; इसके लिए, स्पेशल कॉन्टेक्स्ट बनाने के दौरान किसी कॉन्फ़िगरेशन स्ट्रक्चर को शामिल करने की ज़रूरत नहीं होती. (XR_ANDROID_spatial_discovery_bounds एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_FEATURE_BOX_BOUNDS_FILTER_ANDROID
रनटाइम, XrSpatialDiscoverySnapshotCreateInfoEXT के लिए XrSpatialBoundsBoxfANDROID फ़िल्टर के साथ काम करता है ; इसके लिए, स्पेशल कॉन्टेक्स्ट बनाने के दौरान किसी कॉन्फ़िगरेशन स्ट्रक्चर को शामिल करने की ज़रूरत नहीं होती. (XR_ANDROID_spatial_discovery_bounds एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_FEATURE_FRUSTUM_BOUNDS_FILTER_ANDROID
रनटाइम, XrSpatialDiscoverySnapshotCreateInfoEXT के लिए XrSpatialBoundsFrustumfANDROID फ़िल्टर के साथ काम करता है. इसके लिए, स्पेशल कॉन्टेक्स्ट बनाने के दौरान किसी कॉन्फ़िगरेशन स्ट्रक्चर को शामिल करने की ज़रूरत नहीं होती. (XR_ANDROID_spatial_discovery_bounds एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT
रनटाइम, ट्रैक की गई और पहचानी गई इमेज के साइज़ का अपने-आप पता लगाता है. इससे जुड़ा कॉन्फ़िगरेशन स्ट्रक्चर XrSpatialImageSizeEXT है. इसे XR_EXT_spatial_image_tracking एक्सटेंशन ने जोड़ा है
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT
रनटाइम, XrSpatialImageStaticOptimizationEXT के साथ काम करता है. इससे जुड़ा कॉन्फ़िगरेशन स्ट्रक्चर XrSpatialImageStaticOptimizationEXT है. (XR_EXT_spatial_image_tracking एक्सटेंशन ने जोड़ा है)
XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT
रनटाइम, XrSpatialImageSizeEXT के साथ काम करता है. इससे जुड़ा कॉन्फ़िगरेशन स्ट्रक्चर XrSpatialImageSizeEXT है. इसे XR_EXT_spatial_image_tracking एक्सटेंशन ने जोड़ा है
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
आस-पास के माहौल के वॉटरटाइट मेश को ट्रैक करने की सुविधा. इससे जुड़ा कॉन्फ़िगरेशन स्ट्रक्चर XrSpatialFeatureTrackWatertightMeshEXT है. (XR_EXT_spatial_mesh_tracking एक्सटेंशन ने जोड़ा है)
xrEnumerateSpatialCapabilityFeaturesEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrEnumerateSpatialCapabilityFeaturesEXT(
XrInstance instance,
XrSystemId systemId,
XrSpatialCapabilityEXT capability,
uint32_t capabilityFeatureCapacityInput,
uint32_t* capabilityFeatureCountOutput,
XrSpatialCapabilityFeatureEXT* capabilityFeatures);
पैरामीटर की जानकारी
instance, XrInstance का हैंडल है.systemIdवहXrSystemIdहै जिसकी स्पेशल कैपेबिलिटी की सुविधाओं की गिनती की जाएगी.capability, XrSpatialCapabilityEXT है. इसके लिए, सुविधाओं की गिनती की जाएगी.capabilityFeatureCapacityInput, कलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध को दिखाने के लिए, 0 का इस्तेमाल किया जाता है.capabilityFeatureCountOutput, सुविधाओं की संख्या है याcapabilityFeatureCapacityInputके कम होने पर ज़रूरी क्षमता है.- XrSpatialCapabilityFeatureEXT का कलेक्शन
capabilityFeaturesहै. अगरcapabilityFeatureCapacityInputकी वैल्यू 0 है, तो यहNULLहो सकती है. - ज़रूरी
capabilityFeaturesसाइज़ को वापस पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, xrEnumerateSpatialCapabilityFeaturesEXT का इस्तेमाल करके, XrSpatialCapabilityEXT के लिए किसी सिस्टम में काम करने वाली सुविधाओं का पता लगाता है.
जिन क्षमताओं में सुविधाएं उपलब्ध होती हैं उनके लिए, ऐप्लिकेशन चालू करने के लिए सुविधा या सुविधाएं चुनता है. साथ ही, XrSpatialContextCreateInfoEXT :: capabilityConfigs में क्षमता के कॉन्फ़िगरेशन स्ट्रक्चर की अगली चेन में, उससे जुड़ा कॉन्फ़िगरेशन स्ट्रक्चर उपलब्ध कराता है.
अगर capability, xrEnumerateSpatialCapabilitiesEXT से बताई गई क्षमता नहीं है, तो रनटाइम को XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT दिखाना चाहिए .
रनटाइम को स्पेशल ऑडियो की उन सुविधाओं की गिनती नहीं करनी चाहिए जिनका एक्सटेंशन instance के लिए चालू नहीं है.
सही इस्तेमाल (इंप्लिसिट)
- xrEnumerateSpatialCapabilityFeaturesEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
instanceएक मान्य XrInstance हैंडल होना ज़रूरी है -
capabilityकी वैल्यू, XrSpatialCapabilityEXT की मान्य वैल्यू होनी चाहिए -
capabilityFeatureCountOutputकोuint32_tवैल्यू का पॉइंटर होना चाहिए - अगर
capabilityFeatureCapacityInputकी वैल्यू0नहीं है, तोcapabilityFeaturesकोcapabilityFeatureCapacityInputXrSpatialCapabilityFeatureEXT वैल्यू के कलेक्शन का पॉइंटर होना ज़रूरी है
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
स्पेशल कॉन्टेक्स्ट
स्पेशल कॉन्टेक्स्ट बनाना
XR_DEFINE_HANDLE(XrSpatialContextEXT)
XrSpatialContextEXT हैंडल, उपयोगकर्ता के आस-पास मौजूद कुछ स्पेशल इकाइयों को खोजने और अपडेट करने के लिए संसाधनों को दिखाता है. ऐप्लिकेशन इस हैंडल का इस्तेमाल करके, इस एक्सटेंशन में मौजूद अन्य फ़ंक्शन की मदद से, स्पेशल एंटिटी को खोज सकता है और उन्हें अपडेट कर सकता है.
xrCreateSpatialContextAsyncEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrCreateSpatialContextAsyncEXT(
XrSession session,
const XrSpatialContextCreateInfoEXT* createInfo,
XrFutureEXT* future);
पैरामीटर की जानकारी
sessionएक XrSession है, जिसमें स्पेशल कॉन्टेक्स्ट चालू रहेगा.createInfo, XrSpatialContextCreateInfoEXT है. इसका इस्तेमाल, स्पेशल कॉन्टेक्स्ट पैरामीटर तय करने के लिए किया जाता है.future,XrFutureEXTका पॉइंटर है .
ऐप्लिकेशन, XrSpatialContextEXT हैंडल बना सकता है. इसके लिए, उसे:
- XrSpatialContextCreateInfoEXT ::
capabilityConfigsमें XrSpatialCapabilityConfigurationBaseHeaderEXT से मिले स्ट्रक्चर उपलब्ध कराना, ताकि क्षमताओं को चालू किया जा सके और उन क्षमताओं के लिए कॉम्पोनेंट चालू किए जा सकें. - XrSpatialCapabilityFeatureEXT के कॉन्फ़िगरेशन स्ट्रक्चर के साथ, क्षमताओं को कॉन्फ़िगर करना.
अगर XrSpatialContextCreateInfoEXT ::capabilityConfigCount की वैल्यू 0 है, तो रनटाइम को XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT दिखाना चाहिए. स्पेशल कॉन्टेक्स्ट हैंडल के लिए, कम से कम एक सुविधा ज़रूरी है.
अगर XrSpatialContextCreateInfoEXT :: capabilityConfigs कलेक्शन में मौजूद कोई भी क्षमता, xrEnumerateSpatialCapabilitiesEXT से नहीं मिलती है, तो रनटाइम को XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT दिखाना चाहिए .
अगर XrSpatialContextCreateInfoEXT :: capabilityConfigs में मौजूद कोई भी XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponentCount 0 है, तो रनटाइम को XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT दिखाना चाहिए. किसी सुविधा के लिए कॉम्पोनेंट टाइप की सूची के बिना, उस सुविधा का कॉन्फ़िगरेशन अधूरा होता है.
अगर XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents में मौजूद किसी कॉम्पोनेंट टाइप को xrEnumerateSpatialCapabilityComponentTypesEXT में XrSpatialCapabilityConfigurationBaseHeaderEXT :: capability के लिए नहीं गिना जाता है, तो रनटाइम को XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT दिखाना चाहिए.
अगर XrSpatialContextCreateInfoEXT :: capabilityConfigs की अगली चेन में मौजूद कोई भी स्ट्रक्चर, किसी ऐसे XrSpatialCapabilityFeatureEXT से जुड़ा है जिसे xrEnumerateSpatialCapabilityFeaturesEXT में उस क्षमता के लिए नहीं गिना गया है, तो रनटाइम को उस XrSpatialCapabilityFeatureEXT स्ट्रक्चर को अनदेखा करना होगा.
अगर XrSpatialContextCreateInfoEXT :: capabilityConfigs में एक ही XrSpatialCapabilityConfigurationBaseHeaderEXT :: capability वाले कई स्ट्रक्चर शामिल हैं, तो रनटाइम को XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT दिखाना चाहिए.
सिस्टम के संसाधनों का बेहतर तरीके से इस्तेमाल करने के लिए, रनटाइम XrSpatialContextCreateInfoEXT कलेक्शन में दिए गए कॉन्फ़िगरेशन का इस्तेमाल कर सकता है. इससे वह आने वाले समय में, स्पेशल रिक्वेस्ट के लिए खुद को तैयार कर सकता है. उदाहरण के लिए, प्लेन ट्रैकिंग की सुविधा के साथ काम करने वाला रनटाइम, अपनी प्लेन ट्रैकिंग पाइपलाइन को सिर्फ़ तब शुरू कर सकता है, जब ऐप्लिकेशन ने प्लेन ट्रैकिंग की सुविधा वाला स्पेशल कॉन्टेक्स्ट हैंडल बनाया हो. अगर कॉन्फ़िगर की गई सुविधाओं को वॉर्म-अप होने में ज़्यादा समय लगता है, तो xrCreateSpatialDiscoverySnapshotAsyncEXT को कॉल करने पर, स्नैपशॉट खाली हो सकता है. xrCreateSpatialDiscoverySnapshotAsyncEXT का इस्तेमाल करने से पहले, ऐप्लिकेशन XrEventDataSpatialDiscoveryRecommendedEXT के लिए इंतज़ार कर सकता है. इससे यह पक्का किया जा सकता है कि ट्रैकिंग की मुख्य सेवाएं चालू हो गई हैं.
अगर कोई रनटाइम, XrSpatialContextEXT के लिए कॉन्फ़िगर की जा रही स्पेशल सुविधाओं के ऐप्लिकेशन ऐक्सेस को कंट्रोल करने के लिए, अनुमति सिस्टम लागू करता है, तो रनटाइम को XR_ERROR_PERMISSION_INSUFFICIENT दिखाना चाहिए. ऐसा तब करना चाहिए, जब इस ऐप्लिकेशन को वे अनुमतियां न दी गई हों.
यह फ़ंक्शन, एसिंक्रोनस ऑपरेशन शुरू करता है और उससे जुड़ा XrFutureEXT बनाता है. इसका इस्तेमाल, xrPollFutureEXT और उससे जुड़े फ़ंक्शन के साथ किया जा सकता है. इस फ़ंक्शन की रिटर्न वैल्यू से सिर्फ़ यह पता चलता है कि एसिंक्रोनस ऑपरेशन को शेड्यूल करने के लिए, पैरामीटर स्वीकार किए जा सकते हैं या नहीं. इससे जुड़ा पूरा करने वाला फ़ंक्शन xrCreateSpatialContextCompleteEXT है. इसका इस्तेमाल तब किया जा सकता है, जब इस फ़ंक्शन से मिलने वाला फ़्यूचर, READY स्टेटस में हो. साथ ही, पूरा करने वाले स्ट्रक्चर XrCreateSpatialContextCompletionEXT में, उस फ़ंक्शन से आउटपुट पॉप्युलेट किए गए हों.
सही इस्तेमाल (इंप्लिसिट)
- xrCreateSpatialContextAsyncEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
sessionएक मान्य XrSession हैंडल होना चाहिए -
createInfoको किसी मान्य XrSpatialContextCreateInfoEXT स्ट्रक्चर का पॉइंटर होना चाहिए -
futureकोXrFutureEXTवैल्यू का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_PERMISSION_INSUFFICIENTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXTXR_ERROR_VALIDATION_FAILUREXR_ERROR_TIME_INVALID(अगरXR_ANDROID_spatial_annotation_trackingचालू है)
XrSpatialContextCreateInfoEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialContextCreateInfoEXT {
XrStructureType type;
const void* next;
uint32_t capabilityConfigCount;
const XrSpatialCapabilityConfigurationBaseHeaderEXT* const* capabilityConfigs;
} XrSpatialContextCreateInfoEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.capabilityConfigCountएकuint32_tहै, जोcapabilityConfigsकलेक्शन में मौजूद एलिमेंट की संख्या बताता है.capabilityConfigs, XrSpatialCapabilityConfigurationBaseHeaderEXT पॉइंटर के कलेक्शन का पॉइंटर है.
XrSpatialContextCreateInfoEXT स्ट्रक्चर, XrSpatialContextEXT हैंडल बनाने के लिए ज़रूरी जानकारी देता है.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialContextCreateInfoEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXTहोनी चाहिए -
nextकोNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए. यह भी देखें: XrSpatialContextPersistenceConfigEXT -
capabilityConfigsmust be a pointer to an array ofcapabilityConfigCountvalid XrSpatialCapabilityConfigurationBaseHeaderEXT -based structures. यह भी देखें: XrSpatialCapabilityConfigurationAnchorEXT , XrSpatialCapabilityConfigurationAnnotationTrackingANDROID , XrSpatialCapabilityConfigurationAprilTagEXT , XrSpatialCapabilityConfigurationArucoMarkerEXT , XrSpatialCapabilityConfigurationDepthRaycastANDROID , XrSpatialCapabilityConfigurationImageTrackingEXT , XrSpatialCapabilityConfigurationMeshTrackingEXT , XrSpatialCapabilityConfigurationMicroQrCodeEXT , XrSpatialCapabilityConfigurationObjectTrackingANDROID , XrSpatialCapabilityConfigurationObjectTrackingEXT , XrSpatialCapabilityConfigurationPlaneTrackingEXT , XrSpatialCapabilityConfigurationQrCodeEXT , XrSpatialCapabilityConfigurationRoomBoundaryTrackingANDROIDSYS , XrSpatialCapabilityConfigurationRoomTrackingANDROIDSYS , XrSpatialCapabilityConfigurationStreetscapeGeometryANDROIDX2 -
capabilityConfigCountपैरामीटर की वैल्यू,0से ज़्यादा होनी चाहिए
XrSpatialCapabilityConfigurationBaseHeaderEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialCapabilityConfigurationBaseHeaderEXT {
XrStructureType type;
const void* next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationBaseHeaderEXT;
इस स्ट्रक्चर का इस्तेमाल सीधे तौर पर एपीआई में नहीं किया जाता. इसके बजाय, इसके चाइल्ड स्ट्रक्चर का इस्तेमाल XrSpatialContextCreateInfoEXT के साथ किया जा सकता है, ताकि स्पेशल क्षमताओं को कॉन्फ़िगर किया जा सके.
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.capabilityएक XrSpatialCapabilityEXT है .enabledComponentCountएकuint32_tहै, जोenabledComponentsकलेक्शन में मौजूद एलिमेंट की संख्या बताता है.enabledComponents, XrSpatialComponentTypeEXT के कलेक्शन का पॉइंटर है.
अगर xrEnumerateSpatialCapabilitiesEXT ने capability को एन्यूमेरेटर नहीं किया है, तो रनटाइम को XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT दिखाना चाहिए. अगर enabledComponents में मौजूद किसी कॉम्पोनेंट टाइप को xrEnumerateSpatialCapabilityComponentTypesEXT में capability के लिए नहीं गिना गया है, तो रनटाइम को XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT दिखाना चाहिए .
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialCapabilityConfigurationBaseHeaderEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
capabilityकी वैल्यू, XrSpatialCapabilityEXT की मान्य वैल्यू होनी चाहिए -
enabledComponentsकोenabledComponentCountमान्य XrSpatialComponentTypeEXT वैल्यू के कलेक्शन का पॉइंटर होना चाहिए -
enabledComponentCountपैरामीटर की वैल्यू,0से ज़्यादा होनी चाहिए
xrCreateSpatialContextCompleteEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrCreateSpatialContextCompleteEXT(
XrSession session,
XrFutureEXT future,
XrCreateSpatialContextCompletionEXT* completion);
पैरामीटर की जानकारी
session, XrSession है, जिसे पहले xrCreateSpatialContextAsyncEXT ::sessionको पास किया गया था.future, xrCreateSpatialContextAsyncEXT से मिलाXrFutureEXTहै.completion, XrCreateSpatialContextCompletionEXT का पॉइंटर है.
xrCreateSpatialContextCompleteEXT, xrCreateSpatialContextAsyncEXT से शुरू किए गए एसिंक्रोनस ऑपरेशन को पूरा करता है. अगर future तैयार नहीं है, तो रनटाइम को XR_ERROR_FUTURE_PENDING_EXT दिखाना चाहिए. अगर future पहले ही पूरा हो चुका है या रद्द कर दिया गया है, तो रनटाइम को XR_ERROR_FUTURE_INVALID_EXT दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- xrCreateSpatialContextCompleteEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
sessionएक मान्य XrSession हैंडल होना चाहिए -
completionको XrCreateSpatialContextCompletionEXT स्ट्रक्चर का पॉइंटर होना ज़रूरी है
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_FUTURE_INVALID_EXTXR_ERROR_FUTURE_PENDING_EXTXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
XrCreateSpatialContextCompletionEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrCreateSpatialContextCompletionEXT {
XrStructureType type;
void* next;
XrResult futureResult;
XrSpatialContextEXT spatialContext;
} XrCreateSpatialContextCompletionEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.futureResult, स्पेस के हिसाब से कॉन्टेक्स्ट बनाने की प्रोसेस का XrResult है.spatialContextएक XrSpatialContextEXT है. इसे xrCreateSpatialContextAsyncEXT ::createInfoमें मौजूद डेटा और कॉन्फ़िगरेशन का इस्तेमाल करके बनाया गया है.
आने वाले समय में मिलने वाले रिटर्न कोड
futureResult वैल्यू:
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_RUNTIME_FAILUREXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT
अगर futureResult एक सक्सेस कोड है, तो spatialContext का मान्य होना ज़रूरी है. अगर spatialContext मान्य है, तो यह सिर्फ़ xrCreateSpatialContextAsyncEXT :: session की लाइफ़साइकल के दौरान मान्य रहता है या जब तक ऐप्लिकेशन xrDestroySpatialContextEXT के साथ spatialContext को खत्म नहीं कर देता, इनमें से जो भी पहले हो.
सही इस्तेमाल (इंप्लिसिट)
- XrCreateSpatialContextCompletionEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
futureResultmust be a valid XrResult value - अगर
spatialContext, XR_NULL_HANDLE नहीं है, तोspatialContextएक मान्य XrSpatialContextEXT हैंडल होना चाहिए
स्पेशल कॉन्टेक्स्ट को मिटाना
xrDestroySpatialContextEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrDestroySpatialContextEXT(
XrSpatialContextEXT spatialContext);
पैरामीटर की जानकारी
spatialContextएक XrSpatialContextEXT है, जिसे पहले xrCreateSpatialContextAsyncEXT ने बनाया था.
स्पेशल एंटिटी को खोजने और अपडेट करने के टास्क पूरे होने के बाद, ऐप्लिकेशन xrDestroySpatialContextEXT फ़ंक्शन को कॉल कर सकता है. इससे spatialContext हैंडल और उससे जुड़े संसाधनों को रिलीज़ किया जा सकता है. अगर कोई दूसरा मान्य XrSpatialContextEXT मौजूद नहीं है, जिसे spatialContext जैसी ही स्पेशल कैपेबिलिटी के साथ बनाया गया हो, तो यह कॉल रनटाइम को एक सुझाव देता है. इसमें, उन कैपेबिलिटी के लिए ज़रूरी ट्रैकिंग सेवाओं को बंद करने का सुझाव दिया जाता है ताकि सिस्टम के संसाधनों को बचाया जा सके.
सही इस्तेमाल (इंप्लिसिट)
- xrDestroySpatialContextEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
spatialContextएक मान्य XrSpatialContextEXT हैंडल होना चाहिए
Thread की सुरक्षा
spatialContextऔर किसी भी चाइल्ड हैंडल का ऐक्सेस, बाहरी तौर पर सिंक किया जाना ज़रूरी है
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
स्पेशल एंटिटी के प्रज़ेंटेशन
स्पेशल इकाई का आईडी
XR_DEFINE_ATOM(XrSpatialEntityIdEXT)
XrSpatialEntityIdEXT का इस्तेमाल, उपयोगकर्ता के आस-पास के स्पेस में रनटाइम के दौरान खोजी गई किसी भी तरह की इकाई को दिखाने के लिए किया जाता है. XrSpatialEntityIdEXT, उस XrSpatialContextEXT के लिए मान्य होता है जिसमें इसे खोजा गया है. साथ ही, रनटाइम को एक ही XrSpatialContextEXT में मौजूद अलग-अलग इकाइयों के लिए, एक ही XrSpatialEntityIdEXT का दोबारा इस्तेमाल नहीं करना चाहिए. साथ ही, रनटाइम को एक ही XrSession में मौजूद कई XrSpatialContextEXT में, एक ही XrSpatialEntityIdEXT का फिर से इस्तेमाल नहीं करना चाहिए. भले ही, वह एक ही इकाई को दिखाता हो या अलग-अलग इकाइयों को.
#define XR_NULL_SPATIAL_ENTITY_ID_EXT 0
XR_NULL_SPATIAL_ENTITY_ID_EXT एक रिज़र्व वैल्यू है, जो अमान्य XrSpatialEntityIdEXT को दिखाती है. इसे एपीआई फ़ंक्शन को सिर्फ़ तब पास किया जा सकता है और उनसे वापस लिया जा सकता है, जब इसकी खास तौर पर अनुमति दी गई हो.
स्पेशल एंटिटी हैंडल
XR_DEFINE_HANDLE(XrSpatialEntityEXT)
XrSpatialEntityEXT हैंडल, एक स्पेशल एंटिटी को दिखाता है. कोई ऐप्लिकेशन ऐसा हैंडल बना सकता है, ताकि वह रनटाइम को किसी खास इकाई में अपनी दिलचस्पी के बारे में बता सके.
आईडी से Spatial Entity Handle बनाना
xrCreateSpatialEntityFromIdEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrCreateSpatialEntityFromIdEXT(
XrSpatialContextEXT spatialContext,
const XrSpatialEntityFromIdCreateInfoEXT* createInfo,
XrSpatialEntityEXT* spatialEntity);
पैरामीटर की जानकारी
spatialContextएक XrSpatialContextEXT है, जिसे पहले xrCreateSpatialContextAsyncEXT का इस्तेमाल करके बनाया गया था.createInfo, XrSpatialEntityFromIdCreateInfoEXT स्ट्रक्चर का पॉइंटर है.spatialEntity, वापस किया गया XrSpatialEntityEXT हैंडल है.
ऐप्लिकेशन, XrSpatialEntityEXT हैंडल बनाने के लिए, xrCreateSpatialEntityFromIdEXT का इस्तेमाल कर सकता है. यह हैंडल, उपयोगकर्ता के एनवायरमेंट में मौजूद किसी इकाई का रेफ़रंस होता है.
अगर XrSpatialEntityFromIdCreateInfoEXT :: entityId, spatialContext के लिए मान्य आईडी नहीं है, तो रनटाइम को XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- xrCreateSpatialEntityFromIdEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
spatialContextएक मान्य XrSpatialContextEXT हैंडल होना चाहिए -
createInfoको किसी मान्य XrSpatialEntityFromIdCreateInfoEXT स्ट्रक्चर का पॉइंटर होना ज़रूरी है -
spatialEntityको XrSpatialEntityEXT हैंडल का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
XrSpatialEntityFromIdCreateInfoEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialEntityFromIdCreateInfoEXT {
XrStructureType type;
const void* next;
XrSpatialEntityIdEXT entityId;
} XrSpatialEntityFromIdCreateInfoEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.entityId, उस इकाई काXrSpatialEntityIdEXTहै जिसके लिए ऐप्लिकेशन को हैंडल बनाना है.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialEntityFromIdCreateInfoEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_ENTITY_FROM_ID_CREATE_INFO_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
स्पेशल एंटिटी हैंडल को मिटाएं
xrDestroySpatialEntityEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrDestroySpatialEntityEXT(
XrSpatialEntityEXT spatialEntity);
पैरामीटर की जानकारी
spatialEntity, XrSpatialEntityEXT का हैंडल है. इसे पहले xrCreateSpatialEntityFromIdEXT जैसे किसी फ़ंक्शन से बनाया गया था.
जब ऐप्लिकेशन को इस हैंडल से रेफ़र की गई इकाई में दिलचस्पी नहीं रह जाती, तब वह spatialEntity हैंडल को रिलीज़ करने के लिए, xrDestroySpatialEntityEXT का इस्तेमाल कर सकता है.
सही इस्तेमाल (इंप्लिसिट)
- xrDestroySpatialEntityEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
spatialEntityएक मान्य XrSpatialEntityEXT हैंडल होना चाहिए
Thread की सुरक्षा
spatialEntityऔर किसी भी चाइल्ड हैंडल का ऐक्सेस, बाहरी तौर पर सिंक किया जाना ज़रूरी है
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
स्पेशल स्नैपशॉट
XR_DEFINE_HANDLE(XrSpatialSnapshotEXT)
ऐप्लिकेशन, स्पेस से जुड़ी इकाइयों को खोजने या उनके बारे में जानकारी अपडेट करने के लिए, स्पेस से जुड़े स्नैपशॉट बना सकता है. XrSpatialSnapshotEXT हैंडल, खोजी गई या अपडेट की गई स्पेशल इकाइयों के लिए, ऐसे डेटा को दिखाता है जिसमें बदलाव नहीं किया जा सकता. साथ ही, यह उन इकाइयों के कॉम्पोनेंट के सबसेट को दिखाता है जिन्हें ऐप्लिकेशन ने चुना है. स्पेशल स्नैपशॉट, इकाइयों और उनके कॉम्पोनेंट डेटा का एक जैसा व्यू दिखाता है. स्नैपशॉट बनाने के बाद, स्नैपशॉट का डेटा तब तक नहीं बदलना चाहिए, जब तक स्नैपशॉट मान्य है.
ऐप्लिकेशन जितने चाहे उतने स्नैपशॉट बना सकता है. हालांकि, उसे हर नए स्नैपशॉट के लिए तय की गई मेमोरी का ध्यान रखना होगा. साथ ही, ज़रूरत न होने पर स्नैपशॉट को मिटाना होगा.
डिस्कवरी स्नैपशॉट बनाना
xrCreateSpatialDiscoverySnapshotAsyncEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrCreateSpatialDiscoverySnapshotAsyncEXT(
XrSpatialContextEXT spatialContext,
const XrSpatialDiscoverySnapshotCreateInfoEXT* createInfo,
XrFutureEXT* future);
पैरामीटर की जानकारी
spatialContextएक XrSpatialContextEXT है, जिसे पहले xrCreateSpatialContextAsyncEXT का इस्तेमाल करके बनाया गया था.createInfo, XrSpatialDiscoverySnapshotCreateInfoEXT का पॉइंटर है.future,XrFutureEXTका पॉइंटर है .
ऐप्लिकेशन, xrCreateSpatialDiscoverySnapshotAsyncEXT का इस्तेमाल करके, डिस्कवरी स्नैपशॉट बनाकर, स्पेशल इकाइयों को खोज सकता है.
यह फ़ंक्शन, एसिंक्रोनस ऑपरेशन शुरू करता है और उससे जुड़ा XrFutureEXT बनाता है. इसका इस्तेमाल, xrPollFutureEXT और उससे जुड़े फ़ंक्शन के साथ किया जा सकता है. इस फ़ंक्शन की रिटर्न वैल्यू से सिर्फ़ यह पता चलता है कि एसिंक्रोनस ऑपरेशन को शेड्यूल करने के लिए, पैरामीटर स्वीकार किए जा सकते हैं या नहीं. इसके लिए, xrCreateSpatialDiscoverySnapshotCompleteEXT फ़ंक्शन का इस्तेमाल किया जाता है. इसका इस्तेमाल तब किया जा सकता है, जब इस फ़ंक्शन से मिलने वाला फ़्यूचर, READY स्टेटस में हो. साथ ही, इस फ़ंक्शन से मिलने वाले आउटपुट, XrCreateSpatialDiscoverySnapshotCompletionEXT स्ट्रक्चर में मौजूद हों.
ऐप्लिकेशन, डिस्कवरी स्नैपशॉट बनाने के लिए कई अनुरोध सबमिट कर सकता है. इसके लिए, उसे पिछले अनुरोध के पूरा होने का इंतज़ार करने की ज़रूरत नहीं है. रनटाइम, स्नैपशॉट बनाने की प्रोसेस को किसी भी क्रम में शुरू और पूरा कर सकता है. डिवाइस की पावर, थर्मल या अन्य नीतियों की वजह से, अगर सिस्टम के संसाधनों का इस्तेमाल कम करना ज़रूरी हो, तो ऐप्लिकेशन को थ्रॉटल करने के लिए, रनटाइम डिस्कवरी स्नैपशॉट बनाने की प्रोसेस को पूरा होने में देरी कर सकता है.
ऐप्लिकेशन, XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes का इस्तेमाल कर सकता है. इससे उन इकाइयों और कॉम्पोनेंट की सूची को फ़िल्टर किया जा सकता है जिनका डेटा रनटाइम को स्नैपशॉट में शामिल करना चाहिए. अगर ऐप्लिकेशन, XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes में स्पेशल कॉम्पोनेंट टाइप की मान्य सूची उपलब्ध कराता है, तो रनटाइम को स्नैपशॉट में सिर्फ़ ऐसी स्पेशल इकाइयां शामिल करनी चाहिए जिनमें XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes में दिए गए कॉम्पोनेंट में से कम से कम एक कॉम्पोनेंट मौजूद हो. साथ ही, रनटाइम में स्नैपशॉट के सिर्फ़ उन कॉम्पोनेंट का डेटा शामिल होना चाहिए जो स्नैपशॉट में मौजूद हैं.
अगर spatialContext बनाते समय, XrSpatialContextCreateInfoEXT :: capabilityConfigs को पास की गई स्पेशल सुविधाओं के लिए, XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes में मौजूद कोई भी XrSpatialComponentTypeEXT चालू नहीं है, तो रनटाइम को XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT दिखाना चाहिए.
अगर ऐप्लिकेशन, XrSpatialDiscoverySnapshotCreateInfoEXT :: componentTypes में स्पेसियल कॉम्पोनेंट टाइप की सूची नहीं देता है, तो रनटाइम को स्नैपशॉट में उन सभी स्पेसियल इकाइयों को शामिल करना होगा जिनमें कॉम्पोनेंट का सेट मौजूद है. इन कॉम्पोनेंट को spatialContext के लिए कॉन्फ़िगर की गई क्षमताओं के लिए, XrSpatialCapabilityConfigurationBaseHeaderEXT ::enabledComponents में शामिल किया गया है. रनटाइम में, spatialContext के लिए कॉन्फ़िगर की गई सुविधाओं के सभी चालू कॉम्पोनेंट का डेटा शामिल होना चाहिए.
अगर future के पूरा होने से पहले XrEventDataReferenceSpaceChangePending को सूची में शामिल किया जाता है और XrEventDataReferenceSpaceChangePending :: poseValid गलत है, तो रनटाइम शायद ऐसा XrSpatialSnapshotEXT बनाए जिसमें कोई एंटिटी न हो या उन एंटिटी के लिए XrSpatialEntityTrackingStateEXT को सेट करे जिन्हें XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace में XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time पर XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT या XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT पर नहीं ढूंढा जा सकता. रनटाइम को XrEventDataReferenceSpaceChangePending की वजह से, XrCreateSpatialContextCompletionEXT :: futureResult को गड़बड़ी के कोड पर सेट नहीं करना चाहिए .
सही इस्तेमाल (इंप्लिसिट)
- xrCreateSpatialDiscoverySnapshotAsyncEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
spatialContextएक मान्य XrSpatialContextEXT हैंडल होना चाहिए -
createInfoको किसी मान्य XrSpatialDiscoverySnapshotCreateInfoEXT स्ट्रक्चर का पॉइंटर होना चाहिए -
futureकोXrFutureEXTवैल्यू का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXTXR_ERROR_VALIDATION_FAILURE
XrSpatialDiscoverySnapshotCreateInfoEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialDiscoverySnapshotCreateInfoEXT {
XrStructureType type;
const void* next;
uint32_t componentTypeCount;
const XrSpatialComponentTypeEXT* componentTypes;
} XrSpatialDiscoverySnapshotCreateInfoEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.componentTypeCountएकuint32_tहै, जोcomponentTypesकलेक्शन में मौजूद एलिमेंट की संख्या बताता है.componentTypes, XrSpatialComponentTypeEXT का कलेक्शन है.
XrSpatialDiscoverySnapshotCreateInfoEXT स्ट्रक्चर, स्पेशल एंटिटी को खोजते समय XrSpatialSnapshotEXT हैंडल बनाने की जानकारी देता है.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialDiscoverySnapshotCreateInfoEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXTहोनी चाहिए -
nextकोNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए. यह भी देखें: XrSpatialBoundsBoxfANDROID , XrSpatialBoundsFrustumfANDROID , XrSpatialBoundsSpherefANDROID , XrSpatialDiscoveryPersistenceContextFilterANDROIDX1 , XrSpatialDiscoveryPersistenceUuidFilterEXT , XrSpatialDiscoveryRoomBoundaryFilterANDROIDSYS , XrSpatialDiscoveryUniqueEntitiesFilterANDROID , XrSpatialFilterTrackingStateEXT , XrSpatialRaycastInfoANDROID - अगर
componentTypeCountकी वैल्यू0नहीं है, तोcomponentTypesकोcomponentTypeCountमान्य XrSpatialComponentTypeEXT वैल्यू के कलेक्शन का पॉइंटर होना चाहिए
xrCreateSpatialDiscoverySnapshotCompleteEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrCreateSpatialDiscoverySnapshotCompleteEXT(
XrSpatialContextEXT spatialContext,
const XrCreateSpatialDiscoverySnapshotCompletionInfoEXT* createSnapshotCompletionInfo,
XrCreateSpatialDiscoverySnapshotCompletionEXT* completion);
पैरामीटर की जानकारी
spatialContext, XrSpatialContextEXT है, जिसे पहले xrCreateSpatialDiscoverySnapshotAsyncEXT ::spatialContextको पास किया गया था.createSnapshotCompletionInfo, XrCreateSpatialDiscoverySnapshotCompletionInfoEXT का पॉइंटर है. इससे, डिस्कवरी स्नैपशॉट बनाने का अनुरोध पूरा होने की जानकारी मिलती है.completion, XrCreateSpatialDiscoverySnapshotCompletionEXT का पॉइंटर है.
xrCreateSpatialDiscoverySnapshotCompleteEXT, xrCreateSpatialDiscoverySnapshotAsyncEXT से शुरू किए गए एसिंक्रोनस ऑपरेशन को पूरा करता है. अगर XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future तैयार नहीं है, तो रनटाइम को XR_ERROR_FUTURE_PENDING_EXT दिखाना चाहिए. अगर XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future पहले ही पूरा हो चुका है या रद्द हो चुका है, तो रनटाइम को XR_ERROR_FUTURE_INVALID_EXT दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- xrCreateSpatialDiscoverySnapshotCompleteEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
spatialContextएक मान्य XrSpatialContextEXT हैंडल होना चाहिए -
createSnapshotCompletionInfoको किसी मान्य XrCreateSpatialDiscoverySnapshotCompletionInfoEXT स्ट्रक्चर का पॉइंटर होना चाहिए -
completionको XrCreateSpatialDiscoverySnapshotCompletionEXT स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_FUTURE_INVALID_EXTXR_ERROR_FUTURE_PENDING_EXTXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALIDXR_ERROR_VALIDATION_FAILURE
XrCreateSpatialDiscoverySnapshotCompletionInfoEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrCreateSpatialDiscoverySnapshotCompletionInfoEXT {
XrStructureType type;
const void* next;
XrSpace baseSpace;
XrTime time;
XrFutureEXT future;
} XrCreateSpatialDiscoverySnapshotCompletionInfoEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.baseSpace, XrSpace है. इसमें, खोजे गए XrSpatialSnapshotEXT की सभी जगहें मौजूद होंगी.timeवहXrTimeहै जिस पर खोजे गए XrSpatialSnapshotEXT की सभी जगहें मौजूद होंगी.future, xrCreateSpatialDiscoverySnapshotAsyncEXT से मिलाXrFutureEXTहै
बनाए गए स्नैपशॉट में शामिल अलग-अलग कॉम्पोनेंट डेटा की जगहों को baseSpace में दिखाया जाएगा. यह time पर मौजूद है.
सही इस्तेमाल (इंप्लिसिट)
- XrCreateSpatialDiscoverySnapshotCompletionInfoEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
baseSpaceXrSpace हैंडल मान्य होना चाहिए
XrCreateSpatialDiscoverySnapshotCompletionEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrCreateSpatialDiscoverySnapshotCompletionEXT {
XrStructureType type;
void* next;
XrResult futureResult;
XrSpatialSnapshotEXT snapshot;
} XrCreateSpatialDiscoverySnapshotCompletionEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.futureResult, स्पेसियल डिस्कवरी स्नैपशॉट बनाने की प्रोसेस का XrResult है.snapshotएक XrSpatialSnapshotEXT है. इसका इस्तेमाल, खोजी गई स्पेशल इकाइयों के कॉम्पोनेंट डेटा के बारे में क्वेरी करने के लिए किया जा सकता है.
आने वाले समय में मिलने वाले रिटर्न कोड
futureResult वैल्यू:
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_RUNTIME_FAILUREXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHED
सही इस्तेमाल (इंप्लिसिट)
- XrCreateSpatialDiscoverySnapshotCompletionEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
futureResultmust be a valid XrResult value - अगर
snapshot, XR_NULL_HANDLE नहीं है, तोsnapshotएक मान्य XrSpatialSnapshotEXT हैंडल होना चाहिए
डिस्कवरी के सुझाव वाला इवेंट
XrEventDataSpatialDiscoveryRecommendedEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrEventDataSpatialDiscoveryRecommendedEXT {
XrStructureType type;
const void* next;
XrSpatialContextEXT spatialContext;
} XrEventDataSpatialDiscoveryRecommendedEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.spatialContext, XrSpatialContextEXT है. इसके लिए, रनटाइम के दौरान खोज करने का सुझाव दिया जाता है.
ऐप्लिकेशन, xrPollEvent का इस्तेमाल करके इस इवेंट को वापस पा सकता है . ऐप्लिकेशन, इस इवेंट का इंतज़ार करके, स्पेशल इकाइयों को खोजने के लिए xrCreateSpatialDiscoverySnapshotAsyncEXT को बार-बार कॉल करने से बच सकता है. अगर ऐप्लिकेशन, दो XrEventDataSpatialDiscoveryRecommendedEXT इवेंट के बीच एक ही XrSpatialDiscoverySnapshotCreateInfoEXT के साथ कई डिस्कवरी स्नैपशॉट बनाता है, तो हो सकता है कि नतीजे के तौर पर मिलने वाले स्नैपशॉट में एक जैसी इकाइयां शामिल हों. इसलिए, स्नैपशॉट बनाना और डेटा क्वेरी करना बेकार होगा.
इस इवेंट के होने का इंतज़ार करने से, ऐप्लिकेशन सिस्टम पर डिस्कवरी के अनुरोधों का ज़्यादा लोड नहीं डालता. ऐसा इसलिए, क्योंकि हो सकता है कि रनटाइम कोई नया डेटा न दिखाए. साथ ही, इससे सिस्टम के संसाधनों का ज़रूरत से ज़्यादा इस्तेमाल होने का जोखिम कम हो जाता है. इसके अलावा, डिवाइस की पावर या थर्मल नीतियों की वजह से, सिस्टम की परफ़ॉर्मेंस कम होने का जोखिम भी कम हो जाता है. इससे, लाइव ट्रैकिंग की मदद से रीयल टाइम में स्पेशल इकाइयों का पता लगाने वाले रनटाइम और पहले से रिकॉर्ड की गई स्थिति के आधार पर स्पेशल इकाइयां उपलब्ध कराने वाले रनटाइम के बीच समानता बनाने में भी मदद मिलती है. पहले से रिकॉर्ड की गई स्थिति के आधार पर स्पेशल इकाइयां उपलब्ध कराने वाले रनटाइम में, हर XrSpatialContextEXT के लिए, स्पेशल इकाइयों का पता लगाने के सुझाव वाले इवेंट को सिर्फ़ एक बार सूची में शामिल किया जा सकता है.
रनटाइम को इस इवेंट को सूची में नहीं रखना चाहिए, ताकि ऐप्लिकेशन को मौजूदा स्पेशल इकाइयों के कॉम्पोनेंट डेटा में किए गए बदलावों या अडजस्टमेंट के बारे में सूचना दी जा सके. ऐप्लिकेशन, xrCreateSpatialUpdateSnapshotEXT का इस्तेमाल कर सकता है, ताकि वह अपनी पसंद की स्पेशल इकाइयों के लिए, कॉम्पोनेंट डेटा के अपडेट को ट्रैक कर सके.
रनटाइम, xrCreateSpatialDiscoverySnapshotAsyncEXT को कॉल करने के लिए ऐप्लिकेशन का इंतज़ार किए बिना, डिस्कवरी के सुझाव वाले इवेंट को सूची में डाल सकता है. उदाहरण के लिए, रनटाइम XrSpatialContextEXT के कॉन्फ़िगरेशन के आधार पर, डिस्कवरी के सुझाव वाले इवेंट को सूची में शामिल करने का फ़ैसला ले सकता है. इसके अलावा, वह उपयोगकर्ता के आस-पास के माहौल (नई इकाइयों की खोज या मौजूदा इकाइयों के खो जाने) के बारे में अपनी समझ के आधार पर या ऐप्लिकेशन को डिस्कवरी के अनुरोध की सही दर का संकेत देने के लिए भी ऐसा कर सकता है, ताकि सिस्टम के संसाधनों पर ज़्यादा लोड न पड़े. अगर XrSpatialContextEXT के पूरे लाइफ़टाइम के दौरान, उपयोगकर्ता के एनवायरमेंट में कोई इकाई नहीं मिलती है, तो रनटाइम शायद इस इवेंट को XrSpatialContextEXT के लिए कभी भी सूची में न रखे.
रनटाइम को किसी spatialContext के लिए, इस इवेंट को तब तक सूची में नहीं डालना चाहिए, जब तक ऐप्लिकेशन xrCreateSpatialContextCompleteEXT का इस्तेमाल करके, इसे बनाने की प्रोसेस पूरी नहीं कर लेता.
ऐप्लिकेशन के xrDestroySpatialContextEXT को कॉल करने के बाद, रनटाइम को उस स्पेशल कॉन्टेक्स्ट के लिए, खोज के सुझाव वाले किसी भी इवेंट को सूची में नहीं रखना चाहिए. साथ ही, xrPollEvent से उस कॉन्टेक्स्ट के लिए ऐसा कोई इवेंट नहीं दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- XrEventDataSpatialDiscoveryRecommendedEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
क्वेरी कॉम्पोनेंट का डेटा
xrQuerySpatialComponentDataEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrQuerySpatialComponentDataEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialComponentDataQueryConditionEXT* queryCondition,
XrSpatialComponentDataQueryResultEXT* queryResult);
पैरामीटर की जानकारी
snapshotएक XrSpatialSnapshotEXT है, जिसे पहले xrCreateSpatialDiscoverySnapshotCompleteEXT या xrCreateSpatialUpdateSnapshotEXT ने उपलब्ध कराया था.queryCondition, XrSpatialComponentDataQueryConditionEXT स्ट्रक्चर का पॉइंटर है.queryResult, XrSpatialComponentDataQueryResultEXT स्ट्रक्चर का पॉइंटर है.
ऐप्लिकेशन, स्नैपशॉट में मौजूद इकाइयों के कॉम्पोनेंट डेटा के बारे में क्वेरी करने के लिए, xrQuerySpatialComponentDataEXT का इस्तेमाल कर सकता है. इसके लिए, उसे XrSpatialComponentDataQueryConditionEXT :: componentTypes में मौजूद हर XrSpatialComponentTypeEXT के हिसाब से, XrSpatialComponentDataQueryResultEXT :: next में सूची का स्ट्रक्चर अटैच करना होगा.
अगर ऐप्लिकेशन, XrSpatialComponentDataQueryResultEXT :: next में ऐसी सूची का स्ट्रक्चर अटैच करता है जो XrSpatialComponentDataQueryConditionEXT :: componentTypes में मौजूद किसी भी कॉम्पोनेंट से मैच नहीं करता, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए .
ऐप्लिकेशन, XrSpatialComponentDataQueryConditionEXT :: componentTypes में मौजूद कॉम्पोनेंट के सिर्फ़ सबसेट से जुड़ी सूची के स्ट्रक्चर को अटैच करने का विकल्प चुन सकता है. अगर ऐप्लिकेशन को सिर्फ़ उन स्पेशल इकाइयों के आईडी और ट्रैकिंग की स्थिति जाननी है जो queryCondition को पूरा करती हैं, तो वह सूची के स्ट्रक्चर को पूरी तरह से हटाने का विकल्प चुन सकता है. रनटाइम को XrSpatialComponentDataQueryResultEXT :: next चेन में सूची के स्ट्रक्चर की अनुपस्थिति को गड़बड़ी के तौर पर नहीं मानना चाहिए.
अगर XrEventDataReferenceSpaceChangePending को सूची में रखा गया है और XrEventDataReferenceSpaceChangePending :: changeTime बीत चुका है, तो ऐप्लिकेशन XrSpatialSnapshotEXT से कॉम्पोनेंट डेटा के बारे में क्वेरी करता है. इसके बाद, ऐप्लिकेशन शायद इवेंट डेटा का इस्तेमाल करके, पोज़ को अडजस्ट कर सकता है.
रनटाइम को XrSpatialComponentDataQueryResultEXT :: entityIds को सिर्फ़ उन इकाइयों से भरना चाहिए जिनमें XrSpatialComponentDataQueryConditionEXT :: componentTypes में बताए गए सभी कॉम्पोनेंट मौजूद हों. अगर XrSpatialComponentDataQueryConditionEXT :: componentTypeCount की वैल्यू 0 है, तो रनटाइम को स्नैपशॉट में मौजूद सभी इकाइयों (और उनकी ट्रैकिंग स्थितियों) के साथ queryResult को पॉप्युलेट करना चाहिए. अगर XrSpatialComponentDataQueryConditionEXT :: next में क्वेरी की अन्य शर्तें जोड़ी जाती हैं, तो रनटाइम को उन्हें कॉम्पोनेंट टाइप की उपलब्धता के साथ "AND" के तौर पर मानना चाहिए. इसका मतलब है कि रनटाइम को XrSpatialComponentDataQueryResultEXT ::entityIds को सिर्फ़ उन इकाइयों के साथ पॉप्युलेट करना चाहिए जो सभी शर्तों को पूरा करती हैं. रनटाइम को सूची के स्ट्रक्चर में कॉम्पोनेंट डेटा को उसी क्रम में भरना चाहिए जिस क्रम में XrSpatialComponentDataQueryResultEXT :: entityIds में इकाइयां मौजूद हैं. इसका मतलब है कि सूची के स्ट्रक्चर कलेक्शन में दिए गए इंडेक्स पर मौजूद कॉम्पोनेंट डेटा, उसी इंडेक्स पर मौजूद इकाई से मेल खाना चाहिए.
अगर किसी इकाई के लिए ट्रैकिंग की स्थिति XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT नहीं है, तो रनटाइम को XrSpatialComponentDataQueryResultEXT से अटैच की गई सूची के स्ट्रक्चर में मौजूद कलेक्शन में, उस इकाई से जुड़े इंडेक्स पर मौजूद डेटा को नहीं बदलना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- xrQuerySpatialComponentDataEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
snapshotएक मान्य XrSpatialSnapshotEXT हैंडल होना चाहिए -
queryConditionको किसी मान्य XrSpatialComponentDataQueryConditionEXT स्ट्रक्चर का पॉइंटर होना ज़रूरी है -
queryResultको XrSpatialComponentDataQueryResultEXT स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_VALIDATION_FAILURE
उदाहरण के लिए, ऐप्लिकेशन एक XrSpatialSnapshotEXT बनाता है, जिसमें पांच इकाइयां होती हैं. इनमें -
- इकाई 1 और 2 में कॉम्पोनेंट
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXTऔरXR_SPATIAL_COMPONENT_TYPE_PARENT_EXTहैं - इकाई 3 और 4 में कॉम्पोनेंट
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTऔरXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXTहैं - इकाई 5 में
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXTऔरXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXTकॉम्पोनेंट हैं.
XrSpatialEntityIdEXT
XrSpatialEntityIdEXT
1
1
2
2
3
3
4
4
5
5
Bounded2D
Bounded2D
हां
हां
हां
हां
नहीं
नहीं
नहीं
नहीं
हां
हां
अभिभावक
अभिभावक
हां
हां
हां
हां
नहीं
नहीं
नहीं
नहीं
नहीं
नहीं
Mesh3D
Mesh3D
नहीं
नहीं
नहीं
नहीं
हां
हां
हां
हां
हां
हां
Bounded3D
Bounded3D
नहीं
नहीं
नहीं
नहीं
हां
हां
हां
हां
नहीं
नहीं टेक्स्ट, SVG फ़ॉर्मैट में नहीं है - इसे नहीं दिखाया जा सकता
इमेज 20. स्नैपशॉट का उदाहरण
क्वेरी की शर्त में XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT के साथ ऊपर दिए गए स्नैपशॉट पर xrQuerySpatialComponentDataEXT का इस्तेमाल करने पर, ऐप्लिकेशन को इकाई #1, #2, और #5 मिलेगी. साथ ही, ऐप्लिकेशन, bounded2D डेटा पाने के लिए, XrSpatialComponentDataQueryResultEXT की अगली चेन में XrSpatialComponentBounded2DListEXT स्ट्रक्चर के हिस्से के तौर पर, XrSpatialBounded2DDataEXT का कलेक्शन अटैच कर सकता है.
XrSpatialEntityIdEXT
XrSpatialEntityIdEXT
1
1
2
2
5
5
Bounded2D
Bounded2D
entityId #1 के लिए डेटा
एंटिटी के लिए डेटा...
entityId #2 के लिए डेटा
एंटिटी के लिए डेटा...
entityId #5 के लिए डेटा
एंटिटी के लिए डेटा...
entityIds
entityIds
अगली
अगली
XrSpatialComponent DataQueryResultEXT
XrSpatialComponent Dat...
बाउंड्री
बाउंड्री
XrSpatialComponent Bounded2DListEXT
XrSpatialComponent Bou... टेक्स्ट, एसवीजी फ़ॉर्मैट में नहीं है - इसे नहीं दिखाया जा सकता
इमेज 21. क्वेरी के नतीजे का उदाहरण
क्वेरी की शर्त में दिए गए XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT और XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT कॉम्पोनेंट के साथ ऊपर दिए गए स्नैपशॉट पर xrQuerySpatialComponentDataEXT का इस्तेमाल करने पर, ऐप्लिकेशन को इकाई #3 और #4 वापस मिलेंगी. साथ ही, ऐप्लिकेशन कॉम्पोनेंट का डेटा पाने के लिए, XrSpatialComponentDataQueryResultEXT की अगली चेन में, XrSpatialComponentBounded3DListEXT और XrSpatialComponentMesh3DListEXT स्ट्रक्चर के हिस्से के तौर पर, XrBoxf और XrSpatialMeshDataEXT के कलेक्शन को अटैच कर सकता है.
XrSpatialEntityIdEXT
XrSpatialEntityIdEXT
3
3
4
4
Bounded3D
Bounded3D
entityId #3 का डेटा
एंटिटी के लिए डेटा...
entityId #4 का डेटा
एंटिटी का डेटा...
Mesh3D
Mesh3D
entityId #3 के लिए डेटा
एंटिटी के लिए डेटा...
entityId #4 का डेटा
एंटिटी का डेटा...
entityIds
entityIds
अगली
अगली
XrSpatialComponent DataQueryResultEXT
XrSpatialComponent Da...
बाउंड्री
बाउंड्री
अगली
अगली
XrSpatialComponent Bounded3DListEXT
XrSpatialComponent Bo...
XrSpatialComponent Mesh3DListEXT
XrSpatialComponent Me...
मेश
meshes Text is not SVG - cannot display
इमेज 22. क्वेरी के नतीजे का उदाहरण
XrSpatialComponentDataQueryConditionEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialComponentDataQueryConditionEXT {
XrStructureType type;
const void* next;
uint32_t componentTypeCount;
const XrSpatialComponentTypeEXT* componentTypes;
} XrSpatialComponentDataQueryConditionEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.componentTypeCountएकuint32_tहै, जोcomponentTypesकलेक्शन में मौजूद एलिमेंट की संख्या बताता है.componentTypes, XrSpatialComponentTypeEXT का एक कलेक्शन है. इसके लिए, स्नैपशॉट से डेटा लिया जाता है.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialComponentDataQueryConditionEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन ज़रूर चालू होना चाहिए -
typeकी वैल्यूXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXTहोनी चाहिए -
nextकोNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए. यह भी देखें: XrSpatialDiscoveryPersistenceUuidFilterEXT , XrSpatialFilterArchetypeEXT , XrSpatialFilterTrackingStateEXT - अगर
componentTypeCountकी वैल्यू0नहीं है, तोcomponentTypesकोcomponentTypeCountमान्य XrSpatialComponentTypeEXT वैल्यू के कलेक्शन का पॉइंटर होना चाहिए
XrSpatialComponentDataQueryResultEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialComponentDataQueryResultEXT {
XrStructureType type;
void* next;
uint32_t entityIdCapacityInput;
uint32_t entityIdCountOutput;
XrSpatialEntityIdEXT* entityIds;
uint32_t entityStateCapacityInput;
uint32_t entityStateCountOutput;
XrSpatialEntityTrackingStateEXT* entityStates;
} XrSpatialComponentDataQueryResultEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.entityIdCapacityInput,entityIdsकलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध को दिखाने के लिए, 0 का इस्तेमाल किया जाता है.entityIdCountOutput,entityIdsमेंXrSpatialEntityIdEXTकी संख्या है याentityIdCapacityInputके कम होने पर ज़रूरी क्षमता है.entityIds,XrSpatialEntityIdEXTका एक कलेक्शन है. अगरentityIdCapacityInputकी वैल्यू 0 है, तो यहNULLहो सकती है.entityStateCapacityInput,entityStatesकलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध को दिखाने के लिए, 0 का इस्तेमाल किया जाता है.entityStateCountOutput,entityStatesमें XrSpatialEntityTrackingStateEXT की संख्या है. इसके अलावा,entityStateCapacityInputके कम होने पर, यह ज़रूरी क्षमता है. यह हमेशाentityIdCountOutputके जैसा ही होना चाहिए .entityStates, XrSpatialEntityTrackingStateEXT का एक कलेक्शन है. अगरentityStateCapacityInputकी वैल्यू 0 है, तो यहNULLहो सकती है.- ज़रूरी
entityIdsसाइज़ को वापस पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
कोई ऐप्लिकेशन xrCreateSpatialEntityFromIdEXT के साथ entityIds का इस्तेमाल कर सकता है, ताकि वह उन इकाइयों के लिए XrSpatialEntityEXT हैंडल बना सके जिनके लिए उसे नियमित तौर पर अपडेट चाहिए. इसके बाद, ऐप्लिकेशन इन XrSpatialEntityEXT हैंडल का इस्तेमाल xrCreateSpatialUpdateSnapshotEXT के साथ कर सकता है. इससे अपडेट स्नैपशॉट बनाया जा सकता है. इसमें, दी गई इकाइयों के कॉम्पोनेंट का रनटाइम का सबसे नया डेटा होता है.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialComponentDataQueryResultEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXTहोनी चाहिए -
nextकोNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए. यह भी देखें: XrSpatialComponentAnchorListEXT , XrSpatialComponentAnnotationQuadListANDROID , XrSpatialComponentBounded2DListEXT , XrSpatialComponentBounded3DListEXT , XrSpatialComponentConfidenceListANDROIDSYS , XrSpatialComponentImage2DListEXT , XrSpatialComponentKeyboardSemanticLabelListEXT , XrSpatialComponentMarkerListEXT , XrSpatialComponentMaterialTypeListANDROIDSYS , XrSpatialComponentMesh2DListEXT , XrSpatialComponentMesh3DListEXT , XrSpatialComponentMesh3DNormalsListEXT , XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT , XrSpatialComponentMesh3DVertexSemanticLabelsListEXT , XrSpatialComponentMouseSemanticLabelListEXT , XrSpatialComponentObjectSemanticLabelListANDROID , XrSpatialComponentObjectSemanticLabelListEXT , XrSpatialComponentOccupancyGridListANDROIDX1 , XrSpatialComponentParentListEXT , XrSpatialComponentPersistenceListEXT , XrSpatialComponentPersistenceScopesListANDROIDX1 , XrSpatialComponentPlaneAlignmentListEXT , XrSpatialComponentPlaneSemanticLabelListEXT , XrSpatialComponentPolygon2DListEXT , XrSpatialComponentRaycastResultListANDROID , XrSpatialComponentRoomEmptinessListANDROIDSYS , XrSpatialComponentRoomListANDROIDSYS , XrSpatialComponentStreetscapeGeometryMetadataListANDROIDX2 , XrSpatialComponentSubsumedByListANDROID - अगर
entityIdCapacityInput,0नहीं है, तोentityIdsकोentityIdCapacityInputXrSpatialEntityIdEXTवैल्यू के कलेक्शन का पॉइंटर होना चाहिए - अगर
entityStateCapacityInputकी वैल्यू0नहीं है, तोentityStatesकोentityStateCapacityInputXrSpatialEntityTrackingStateEXT वैल्यू के कलेक्शन का पॉइंटर होना चाहिए
typedef enum XrSpatialEntityTrackingStateEXT {
XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT = 1,
XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT = 2,
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT = 3,
XR_SPATIAL_ENTITY_TRACKING_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialEntityTrackingStateEXT;
XrSpatialEntityTrackingStateEXT, स्पेसियल एंटिटी ट्रैकिंग की संभावित स्थितियों की गिनती करता है:
इन enum का मतलब यह है:
Enum की जानकारी
XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXT
रनटाइम ने इस इकाई को ट्रैक करना बंद कर दिया है और इसे फिर से ट्रैक नहीं किया जाएगा.
XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXT
रनटाइम ने इस इकाई को ट्रैक करना रोक दिया है. हालांकि, आने वाले समय में इसे ट्रैक करना फिर से शुरू किया जा सकता है.
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT
फ़िलहाल, रनटाइम इस इकाई को ट्रैक कर रहा है और इसके कॉम्पोनेंट का डेटा मान्य है.
ट्रैकिंग
रोका गया
बंद किया गया
इमेज 23. XrSpatialEntityTrackingStateEXT
- अगर रनटाइम, स्पेशल एंटिटी की ट्रैकिंग को निलंबित कर देता है, लेकिन आने वाले समय में उसे फिर से शुरू करने की संभावना है, तो वह स्पेशल एंटिटी की स्थिति को
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTसेXR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXTमें बदल सकता है. रनटाइम ऐसा कब कर सकता है, इसके कुछ उदाहरण यहां दिए गए हैं. हालांकि, इनके अलावा और भी उदाहरण हो सकते हैं. जैसे, अगर ऐप्लिकेशन का इनपुट फ़ोकस हट जाता है; या अगर दी गई स्पेसियल इकाई, उपयोगकर्ता से इतनी दूर है कि उसे सटीक तरीके से ट्रैक नहीं किया जा सकता; या अगर बहुत सारी इकाइयों को ट्रैक किया जा रहा है और रनटाइम, ट्रैकिंग की लागत को कम करना चाहता है. XrSpatialEntityTrackingStateEXT, ऐप्लिकेशन को हर रनटाइम की अलग-अलग ट्रैकिंग नीतियों से सुरक्षित रखने में मदद करता है. - रनटाइम, किसी इकाई की स्थिति को
XR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXTसेXR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTयाXR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXTमें बदल सकता है. - अगर स्पेशल एंटिटी खो जाती है और उसकी ट्रैकिंग कभी वापस नहीं पाई जा सकती या फिर से शुरू नहीं की जा सकती, तो रनटाइम को स्पेशल एंटिटी की स्थिति को
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTयाXR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXTसे बदलकरXR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXTकरना चाहिए. इसका एक उदाहरण यह हो सकता है कि डिवाइस, ट्रैकिंग सेशन को रीस्टार्ट करता है, लेकिन अपने आस-पास की जगह को फिर से ट्रैक नहीं कर पाता. इसलिए, इस ट्रैकिंग सेशन में खोजी गई इकाइयों को नई इकाइयों के तौर पर मानता है. - किसी इकाई की ट्रैकिंग स्थिति को
XR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXTपर सेट करने के बाद, रनटाइम को इसे किसी दूसरी स्थिति में नहीं बदलना चाहिए. - xrQuerySpatialComponentDataEXT का इस्तेमाल करके, किसी स्पेशल एंटिटी के कॉम्पोनेंट डेटा के बारे में क्वेरी करते समय, रनटाइम को XrSpatialComponentDataQueryResultEXT की अगली चेन में, ऐप्लिकेशन से उपलब्ध कराए गए बफ़र के कॉन्टेंट में मान्य डेटा सेट करना चाहिए. ऐसा तब करना चाहिए, जब एंटिटी की स्थिति
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTहो. अगर इकाई की स्थितिXR_SPATIAL_ENTITY_TRACKING_STATE_STOPPED_EXTयाXR_SPATIAL_ENTITY_TRACKING_STATE_PAUSED_EXTहै, तो रनटाइम को बफ़र के कॉन्टेंट में बदलाव नहीं करना चाहिए.
कॉम्पोनेंट डेटा के लिए टू-कॉल इडियम
XrSpatialBufferEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialBufferEXT {
XrSpatialBufferIdEXT bufferId;
XrSpatialBufferTypeEXT bufferType;
} XrSpatialBufferEXT;
सदस्यों की जानकारी
bufferIdबफ़र डेटा काXrSpatialBufferIdEXT.bufferType, XrSpatialBufferTypeEXT है. इससेbufferIdमें मौजूद डेटा के टाइप का पता चलता है. ऐप्लिकेशनbufferTypeका इस्तेमाल कर सकता है, ताकि यह तय किया जा सके कि बफ़र का असल डेटा पाने के लिए किस फ़ंक्शन का इस्तेमाल करना है.
कुछ स्पेशल कॉम्पोनेंट में अलग-अलग साइज़ का डेटा होता है. इसलिए, उनका डेटा पाने के लिए, टू-कॉल इडियम का इस्तेमाल करना ज़रूरी है. ऐसे मामलों में, स्पेशल कॉम्पोनेंट का डेटा स्ट्रक्चर, उस कॉम्पोनेंट के डेटा में ज़रूरी हर वैरिएबल साइज़ के बफ़र के लिए, XrSpatialBufferEXT उपलब्ध कराता है.
एक ही bufferId के लिए, रनटाइम को एक कॉम्पोनेंट डेटा क्वेरी से दूसरी कॉम्पोनेंट डेटा क्वेरी में एक जैसा डेटा देना चाहिए. भले ही, वह एक स्नैपशॉट से दूसरे स्नैपशॉट में हो. कॉम्पोनेंट डेटा क्वेरी कॉल के बीच अलग-अलग bufferId से, ऐप्लिकेशन को पता चलता है कि उस कॉम्पोनेंट का डेटा बदल सकता है.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialBufferEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
bufferTypeकी वैल्यू, XrSpatialBufferTypeEXT की मान्य वैल्यू होनी चाहिए
XR_DEFINE_ATOM(XrSpatialBufferIdEXT)
XrSpatialBufferIdEXT का इस्तेमाल, किसी स्पेशल कॉम्पोनेंट के लिए अलग-अलग साइज़ के डेटा को दिखाने के लिए किया जाता है.
रनटाइम को XrSpatialBufferIdEXT और उसके डेटा को मेमोरी में कम से कम तब तक सेव रखना चाहिए, जब तक कि उसे शामिल करने वाले XrSpatialSnapshotEXT की लाइफ़साइकल खत्म नहीं हो जाती. रनटाइम, XrSpatialBufferIdEXT और उसके डेटा को XrSpatialSnapshotEXT के लाइफ़साइकल से ज़्यादा समय तक मेमोरी में सेव रख सकता है. ऐसा इसलिए किया जाता है, ताकि ऐप्लिकेशन से बाद में बनाए गए स्नैपशॉट के हिस्से के तौर पर, वही आईडी दिखाया जा सके. एक ही XrSpatialBufferIdEXT के लिए, रनटाइम को हमेशा सही xrGetSpatialBuffer* फ़ंक्शन के ज़रिए एक ही डेटा दिखाना चाहिए.
typedef enum XrSpatialBufferTypeEXT {
XR_SPATIAL_BUFFER_TYPE_UNKNOWN_EXT = 0,
XR_SPATIAL_BUFFER_TYPE_STRING_EXT = 1,
XR_SPATIAL_BUFFER_TYPE_UINT8_EXT = 2,
XR_SPATIAL_BUFFER_TYPE_UINT16_EXT = 3,
XR_SPATIAL_BUFFER_TYPE_UINT32_EXT = 4,
XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT = 5,
XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT = 6,
XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT = 7,
XR_SPATIAL_BUFFER_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialBufferTypeEXT;
XrSpatialBufferTypeEXT एन्यूमरेशन, XrSpatialBufferIdEXT से दिखाए गए बफ़र के अलग-अलग डेटा टाइप की पहचान करता है .
Enumerant Descriptions
XR_SPATIAL_BUFFER_TYPE_STRING_EXT. स्ट्रिंग बफ़र को वापस पाने के लिए,XrSpatialBufferIdEXTको xrGetSpatialBufferStringEXT में पास किया जा सकता है.XR_SPATIAL_BUFFER_TYPE_UINT8_EXT.XrSpatialBufferIdEXTको xrGetSpatialBufferUint8EXT में पास किया जा सकता है, ताकिuint8_tबफ़र को वापस पाया जा सके.XR_SPATIAL_BUFFER_TYPE_UINT16_EXT.XrSpatialBufferIdEXTको xrGetSpatialBufferUint16EXT में पास किया जा सकता है, ताकिuint16_tबफ़र को वापस पाया जा सके.XR_SPATIAL_BUFFER_TYPE_UINT32_EXT.XrSpatialBufferIdEXTको xrGetSpatialBufferUint32EXT में पास किया जा सकता है, ताकिuint32_tबफ़र को वापस पाया जा सके.XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT.XrSpatialBufferIdEXTको xrGetSpatialBufferFloatEXT में पास किया जा सकता है, ताकिfloatबफ़र को वापस पाया जा सके.XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT.XrSpatialBufferIdEXTको xrGetSpatialBufferVector2fEXT में पास किया जा सकता है, ताकि XrVector2f बफ़र को वापस पाया जा सके.XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT.XrSpatialBufferIdEXTको xrGetSpatialBufferVector3fEXT में पास किया जा सकता है, ताकि XrVector3f बफ़र को वापस लाया जा सके.
xrGetSpatialBufferStringEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrGetSpatialBufferStringEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
char* buffer);
पैरामीटर की जानकारी
snapshot, XrSpatialSnapshotEXT का हैंडल है.infoमें, क्वेरी किए जाने वाले बफ़र की जानकारी होती है.bufferCapacityInput, कलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध को दिखाने के लिए, 0 का इस्तेमाल किया जाता है.bufferCountOutput, वर्णों की संख्या है याbufferCapacityInputके कम होने पर ज़रूरी क्षमता है.buffer,charका एक कलेक्शन है. अगरbufferCapacityInputकी वैल्यू 0 है, तो यहNULLहो सकती है.- ज़रूरी
bufferसाइज़ को वापस पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, किसी कॉम्पोनेंट से मिले XrSpatialBufferEXT का डेटा हासिल कर सकता है. इसके लिए, xrGetSpatialBufferStringEXT का इस्तेमाल करके, XrSpatialBufferEXT :: bufferType को XR_SPATIAL_BUFFER_TYPE_STRING_EXT पर सेट करना होगा.
अगर XrSpatialBufferGetInfoEXT :: bufferId के लिए XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_STRING_EXT नहीं है, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए.
अगर XrSpatialBufferGetInfoEXT :: bufferId, snapshot से जुड़ा नहीं है, तो रनटाइम को XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT दिखाना चाहिए.
रनटाइम के दौरान भरी गई buffer, UTF-8 स्ट्रिंग होनी चाहिए, जो शून्य पर खत्म होती हो.
सही इस्तेमाल (इंप्लिसिट)
- xrGetSpatialBufferStringEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू होना ज़रूरी है -
snapshotएक मान्य XrSpatialSnapshotEXT हैंडल होना चाहिए -
info, किसी मान्य XrSpatialBufferGetInfoEXT स्ट्रक्चर का पॉइंटर होना चाहिए -
bufferCountOutputकोuint32_tवैल्यू का पॉइंटर होना चाहिए - अगर
bufferCapacityInput,0नहीं है, तोbufferकोbufferCapacityInputवर्ण वैल्यू के कलेक्शन का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
xrGetSpatialBufferUint8EXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrGetSpatialBufferUint8EXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
uint8_t* buffer);
पैरामीटर की जानकारी
snapshot, XrSpatialSnapshotEXT का हैंडल है.infoमें, क्वेरी किए जाने वाले बफ़र की जानकारी होती है.bufferCapacityInput, कलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध को दिखाने के लिए, 0 का इस्तेमाल किया जाता है.bufferCountOutput,bufferकलेक्शन में मौजूद एलिमेंट की संख्या है याbufferCapacityInputके कम होने पर ज़रूरी क्षमता है.buffer,uint8_tका एक कलेक्शन है. अगरbufferCapacityInputकी वैल्यू 0 है, तो यहNULLहो सकती है.- ज़रूरी
bufferसाइज़ को वापस पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, किसी कॉम्पोनेंट से मिले XrSpatialBufferEXT का डेटा हासिल कर सकता है. इसके लिए, xrGetSpatialBufferUint8EXT का इस्तेमाल करके, XrSpatialBufferEXT :: bufferType को XR_SPATIAL_BUFFER_TYPE_UINT8_EXT पर सेट करना होगा.
अगर XrSpatialBufferGetInfoEXT :: bufferId के लिए XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_UINT8_EXT नहीं है, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए.
अगर XrSpatialBufferGetInfoEXT :: bufferId, snapshot से जुड़ा नहीं है, तो रनटाइम को XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- xrGetSpatialBufferUint8EXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
snapshotएक मान्य XrSpatialSnapshotEXT हैंडल होना चाहिए -
info, किसी मान्य XrSpatialBufferGetInfoEXT स्ट्रक्चर का पॉइंटर होना चाहिए -
bufferCountOutputकोuint32_tवैल्यू का पॉइंटर होना चाहिए - अगर
bufferCapacityInput,0नहीं है, तोbufferकोbufferCapacityInputuint8_tवैल्यू के कलेक्शन का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
xrGetSpatialBufferUint16EXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrGetSpatialBufferUint16EXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
uint16_t* buffer);
पैरामीटर की जानकारी
snapshot, XrSpatialSnapshotEXT का हैंडल है.infoमें, क्वेरी किए जाने वाले बफ़र की जानकारी होती है.bufferCapacityInput, कलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध को दिखाने के लिए, 0 का इस्तेमाल किया जाता है.bufferCountOutput,bufferकलेक्शन में मौजूद एलिमेंट की संख्या है याbufferCapacityInputके कम होने पर ज़रूरी क्षमता है.buffer,uint16_tका एक कलेक्शन है. अगरbufferCapacityInputकी वैल्यू 0 है, तो यहNULLहो सकती है.- ज़रूरी
bufferसाइज़ को वापस पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, किसी कॉम्पोनेंट से मिले XrSpatialBufferEXT का डेटा हासिल कर सकता है. इसके लिए, xrGetSpatialBufferUint16EXT का इस्तेमाल करके, XrSpatialBufferEXT :: bufferType को XR_SPATIAL_BUFFER_TYPE_UINT16_EXT पर सेट करना होगा.
अगर XrSpatialBufferGetInfoEXT :: bufferId के लिए XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_UINT16_EXT नहीं है, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए.
अगर XrSpatialBufferGetInfoEXT :: bufferId, snapshot से जुड़ा नहीं है, तो रनटाइम को XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- xrGetSpatialBufferUint16EXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
snapshotएक मान्य XrSpatialSnapshotEXT हैंडल होना चाहिए -
info, किसी मान्य XrSpatialBufferGetInfoEXT स्ट्रक्चर का पॉइंटर होना चाहिए -
bufferCountOutputकोuint32_tवैल्यू का पॉइंटर होना चाहिए - अगर
bufferCapacityInput,0नहीं है, तोbufferकोbufferCapacityInputuint16_tवैल्यू के कलेक्शन का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
xrGetSpatialBufferUint32EXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrGetSpatialBufferUint32EXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
uint32_t* buffer);
पैरामीटर की जानकारी
snapshot, XrSpatialSnapshotEXT का हैंडल है.infoमें, क्वेरी किए जाने वाले बफ़र की जानकारी होती है.bufferCapacityInput, कलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध को दिखाने के लिए, 0 का इस्तेमाल किया जाता है.bufferCountOutput,bufferकलेक्शन में मौजूद एलिमेंट की संख्या है याbufferCapacityInputके कम होने पर ज़रूरी क्षमता है.buffer,uint32_tका एक कलेक्शन है. अगरbufferCapacityInputकी वैल्यू 0 है, तो यहNULLहो सकती है.- ज़रूरी
bufferसाइज़ को वापस पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, किसी कॉम्पोनेंट से मिले XrSpatialBufferEXT का डेटा हासिल कर सकता है. इसके लिए, xrGetSpatialBufferUint32EXT का इस्तेमाल करके, XrSpatialBufferEXT :: bufferType को XR_SPATIAL_BUFFER_TYPE_UINT32_EXT पर सेट करना होगा.
अगर XrSpatialBufferGetInfoEXT :: bufferId के लिए XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_UINT32_EXT नहीं है, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए.
अगर XrSpatialBufferGetInfoEXT :: bufferId, snapshot से जुड़ा नहीं है, तो रनटाइम को XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- xrGetSpatialBufferUint32EXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू होना ज़रूरी है -
snapshotएक मान्य XrSpatialSnapshotEXT हैंडल होना चाहिए -
info, किसी मान्य XrSpatialBufferGetInfoEXT स्ट्रक्चर का पॉइंटर होना चाहिए -
bufferCountOutputकोuint32_tवैल्यू का पॉइंटर होना चाहिए - अगर
bufferCapacityInput,0नहीं है, तोbufferकोbufferCapacityInputuint32_tवैल्यू के कलेक्शन का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
xrGetSpatialBufferFloatEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrGetSpatialBufferFloatEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
float* buffer);
पैरामीटर की जानकारी
snapshot, XrSpatialSnapshotEXT का हैंडल है.infoमें, क्वेरी किए जाने वाले बफ़र की जानकारी होती है.bufferCapacityInput, कलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध को दिखाने के लिए, 0 का इस्तेमाल किया जाता है.bufferCountOutput,bufferकलेक्शन में मौजूद एलिमेंट की संख्या है याbufferCapacityInputके कम होने पर ज़रूरी क्षमता है.buffer,floatका एक कलेक्शन है. अगरbufferCapacityInputकी वैल्यू 0 है, तो यहNULLहो सकती है.- ज़रूरी
bufferसाइज़ को वापस पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, किसी कॉम्पोनेंट से मिले XrSpatialBufferEXT का डेटा हासिल कर सकता है. इसके लिए, xrGetSpatialBufferFloatEXT का इस्तेमाल करके, XrSpatialBufferEXT :: bufferType को XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT पर सेट करना होगा.
अगर XrSpatialBufferGetInfoEXT :: bufferId के लिए XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT नहीं है, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए.
अगर XrSpatialBufferGetInfoEXT :: bufferId, snapshot से जुड़ा नहीं है, तो रनटाइम को XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- xrGetSpatialBufferFloatEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
snapshotएक मान्य XrSpatialSnapshotEXT हैंडल होना चाहिए -
info, किसी मान्य XrSpatialBufferGetInfoEXT स्ट्रक्चर का पॉइंटर होना चाहिए -
bufferCountOutputकोuint32_tवैल्यू का पॉइंटर होना चाहिए - अगर
bufferCapacityInput,0नहीं है, तोbufferकोbufferCapacityInputfloatवैल्यू के कलेक्शन का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
xrGetSpatialBufferVector2fEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrGetSpatialBufferVector2fEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
XrVector2f* buffer);
पैरामीटर की जानकारी
snapshot, XrSpatialSnapshotEXT का हैंडल है.infoमें, क्वेरी किए जाने वाले बफ़र की जानकारी होती है.bufferCapacityInput, कलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध को दिखाने के लिए, 0 का इस्तेमाल किया जाता है.bufferCountOutput,bufferकलेक्शन में मौजूद एलिमेंट की संख्या है याbufferCapacityInputके कम होने पर ज़रूरी क्षमता है.buffer, XrVector2f का कलेक्शन है. अगरbufferCapacityInputकी वैल्यू 0 है, तो यहNULLहो सकती है.- ज़रूरी
bufferसाइज़ को वापस पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, किसी कॉम्पोनेंट से मिले XrSpatialBufferEXT का डेटा हासिल कर सकता है. इसके लिए, xrGetSpatialBufferVector2fEXT का इस्तेमाल करके, XrSpatialBufferEXT :: bufferType को XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT पर सेट करना होगा.
अगर XrSpatialBufferGetInfoEXT :: bufferId के लिए XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT नहीं है, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए.
अगर XrSpatialBufferGetInfoEXT :: bufferId, snapshot से जुड़ा नहीं है, तो रनटाइम को XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- xrGetSpatialBufferVector2fEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
snapshotएक मान्य XrSpatialSnapshotEXT हैंडल होना चाहिए -
info, किसी मान्य XrSpatialBufferGetInfoEXT स्ट्रक्चर का पॉइंटर होना चाहिए -
bufferCountOutputकोuint32_tवैल्यू का पॉइंटर होना चाहिए - अगर
bufferCapacityInputकी वैल्यू0नहीं है, तोbufferकोbufferCapacityInputXrVector2f स्ट्रक्चर के कलेक्शन का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
xrGetSpatialBufferVector3fEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrGetSpatialBufferVector3fEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialBufferGetInfoEXT* info,
uint32_t bufferCapacityInput,
uint32_t* bufferCountOutput,
XrVector3f* buffer);
पैरामीटर की जानकारी
snapshot, XrSpatialSnapshotEXT का हैंडल है.infoमें, क्वेरी किए जाने वाले बफ़र की जानकारी होती है.bufferCapacityInput, कलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध को दिखाने के लिए, 0 का इस्तेमाल किया जाता है.bufferCountOutput,bufferकलेक्शन में मौजूद एलिमेंट की संख्या है याbufferCapacityInputके कम होने पर ज़रूरी क्षमता है.buffer, XrVector3f का कलेक्शन है. अगरbufferCapacityInputकी वैल्यू 0 है, तो यहNULLहो सकती है.- ज़रूरी
bufferसाइज़ को वापस पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, किसी कॉम्पोनेंट से मिले XrSpatialBufferEXT का डेटा हासिल कर सकता है. इसके लिए, xrGetSpatialBufferVector3fEXT का इस्तेमाल करके, XrSpatialBufferEXT :: bufferType को XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT पर सेट करना होगा.
अगर XrSpatialBufferGetInfoEXT :: bufferId के लिए XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT नहीं है, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए.
अगर XrSpatialBufferGetInfoEXT :: bufferId, snapshot से जुड़ा नहीं है, तो रनटाइम को XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- xrGetSpatialBufferVector3fEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
snapshotएक मान्य XrSpatialSnapshotEXT हैंडल होना चाहिए -
info, किसी मान्य XrSpatialBufferGetInfoEXT स्ट्रक्चर का पॉइंटर होना चाहिए -
bufferCountOutputकोuint32_tवैल्यू का पॉइंटर होना चाहिए - अगर
bufferCapacityInputकी वैल्यू0नहीं है, तोbufferकोbufferCapacityInputXrVector3f स्ट्रक्चर के कलेक्शन का पॉइंटर होना ज़रूरी है
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
XrSpatialBufferGetInfoEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialBufferGetInfoEXT {
XrStructureType type;
const void* next;
XrSpatialBufferIdEXT bufferId;
} XrSpatialBufferGetInfoEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.bufferIdबफ़र के लिएXrSpatialBufferIdEXTजिसका डेटा वापस पाना है.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialBufferGetInfoEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_BUFFER_GET_INFO_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
#define XR_NULL_SPATIAL_BUFFER_ID_EXT 0
XR_NULL_SPATIAL_BUFFER_ID_EXT एक रिज़र्व वैल्यू है, जो अमान्य XrSpatialBufferIdEXT को दिखाती है. इसे एपीआई फ़ंक्शन को सिर्फ़ तब पास किया जा सकता है और उनसे वापस लिया जा सकता है, जब इसकी खास तौर पर अनुमति दी गई हो.
अपडेट का स्नैपशॉट बनाना
xrCreateSpatialUpdateSnapshotEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrCreateSpatialUpdateSnapshotEXT(
XrSpatialContextEXT spatialContext,
const XrSpatialUpdateSnapshotCreateInfoEXT* createInfo,
XrSpatialSnapshotEXT* snapshot);
पैरामीटर की जानकारी
spatialContextएक XrSpatialContextEXT है, जिसे पहले xrCreateSpatialContextAsyncEXT का इस्तेमाल करके बनाया गया था.createInfo, XrSpatialUpdateSnapshotCreateInfoEXT का पॉइंटर है.snapshot, नतीजे XrSpatialSnapshotEXT का पॉइंटर है.
ऐप्लिकेशन, स्नैपशॉट बनाने और रनटाइम के हिसाब से चुनिंदा इकाइयों के लिए कॉम्पोनेंट का नया डेटा पाने के लिए, xrCreateSpatialUpdateSnapshotEXT का इस्तेमाल कर सकता है. स्नैपशॉट बनाते समय, ऐप्लिकेशन XrSpatialEntityEXT हैंडल और कॉम्पोनेंट के टाइप उपलब्ध करा सकते हैं.
ऐप्लिकेशन, XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes का इस्तेमाल कर सकता है. इससे उन कॉम्पोनेंट की सूची को फ़िल्टर किया जा सकता है जिनका डेटा स्नैपशॉट में शामिल किया जाना चाहिए. अगर ऐप्लिकेशन, XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes में स्पेसियल कॉम्पोनेंट टाइप की मान्य सूची उपलब्ध कराता है, तो रनटाइम को स्नैपशॉट में सिर्फ़ ऐसी स्पेसियल इकाइयां शामिल करनी चाहिए जिनमें XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes में उपलब्ध कराए गए कॉम्पोनेंट में से कम से कम एक कॉम्पोनेंट मौजूद हो. साथ ही, रनटाइम में स्नैपशॉट के सिर्फ़ उन कॉम्पोनेंट का डेटा शामिल होना चाहिए.
अगर spatialContext बनाते समय XrSpatialContextCreateInfoEXT :: capabilityConfigs को पास की गई स्पेशल सुविधाओं के लिए, XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes में मौजूद कोई भी XrSpatialComponentTypeEXT चालू नहीं है, तो रनटाइम को XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT दिखाना चाहिए.
अगर ऐप्लिकेशन, XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes में स्पेसियल कॉम्पोनेंट टाइप की सूची नहीं देता है, तो रनटाइम को स्नैपशॉट में XrSpatialUpdateSnapshotCreateInfoEXT :: entities में मौजूद सभी स्पेसियल इकाइयों को शामिल करना चाहिए. साथ ही, इसमें spatialContext के लिए कॉन्फ़िगर की गई क्षमताओं के सभी चालू कॉम्पोनेंट का डेटा शामिल होना चाहिए.
रनटाइम में ऐसी स्पेशल इकाइयां शामिल नहीं होनी चाहिए जो snapshot में XrSpatialUpdateSnapshotCreateInfoEXT :: entities में शामिल नहीं हैं.
ऐप्लिकेशन जितने चाहे उतने स्नैपशॉट बना सकता है. हालांकि, उसे हर नए स्नैपशॉट के लिए तय की गई मेमोरी का ध्यान रखना होगा. साथ ही, ज़रूरत न होने पर स्नैपशॉट को मिटाना होगा.
सही इस्तेमाल (इंप्लिसिट)
- xrCreateSpatialUpdateSnapshotEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
spatialContextएक मान्य XrSpatialContextEXT हैंडल होना चाहिए -
createInfoको किसी मान्य XrSpatialUpdateSnapshotCreateInfoEXT स्ट्रक्चर का पॉइंटर होना ज़रूरी है -
snapshotको XrSpatialSnapshotEXT हैंडल का पॉइंटर होना ज़रूरी है
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXTXR_ERROR_TIME_INVALIDXR_ERROR_VALIDATION_FAILURE
XrSpatialUpdateSnapshotCreateInfoEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialUpdateSnapshotCreateInfoEXT {
XrStructureType type;
const void* next;
uint32_t entityCount;
const XrSpatialEntityEXT* entities;
uint32_t componentTypeCount;
const XrSpatialComponentTypeEXT* componentTypes;
XrSpace baseSpace;
XrTime time;
} XrSpatialUpdateSnapshotCreateInfoEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.entityCountएकuint32_tहै, जोentitiesकलेक्शन में मौजूद एलिमेंट की संख्या बताता है.entities, XrSpatialEntityEXT का एक कलेक्शन है. इसके लिए, रनटाइम में स्नैपशॉट में कॉम्पोनेंट डेटा शामिल करना ज़रूरी है.componentTypeCountएकuint32_tहै, जोcomponentTypesकलेक्शन में मौजूद एलिमेंट की संख्या बताता है.componentTypes, XrSpatialComponentTypeEXT का एक कलेक्शन है. इसके लिए, रनटाइम में स्नैपशॉट का डेटा शामिल होना ज़रूरी है.baseSpace, XrSpace है. इसके हिसाब से, अपडेट XrSpatialSnapshotEXT की सभी जगहें तय की जाएंगी.timeवहXrTimeहै जहां अपडेट XrSpatialSnapshotEXT की सभी जगहें मौजूद होंगी.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialUpdateSnapshotCreateInfoEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_UPDATE_SNAPSHOT_CREATE_INFO_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
entitiesकोentityCountमान्य XrSpatialEntityEXT हैंडल के कलेक्शन का पॉइंटर होना चाहिए - अगर
componentTypeCountकी वैल्यू0नहीं है, तोcomponentTypesकोcomponentTypeCountमान्य XrSpatialComponentTypeEXT वैल्यू के कलेक्शन का पॉइंटर होना चाहिए -
baseSpaceXrSpace हैंडल मान्य होना चाहिए -
entityCountपैरामीटर की वैल्यू,0से ज़्यादा होनी चाहिए -
baseSpaceऔरentitiesके एलिमेंट, दोनों को एक ही XrSession से बनाया, असाइन या वापस लाया गया होना चाहिए
स्नैपशॉट को मिटाना
xrDestroySpatialSnapshotEXT फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrDestroySpatialSnapshotEXT(
XrSpatialSnapshotEXT snapshot);
पैरामीटर की जानकारी
snapshotएक XrSpatialSnapshotEXT है, जिसे पहले xrCreateSpatialDiscoverySnapshotCompleteEXT या xrCreateSpatialUpdateSnapshotEXT ने उपलब्ध कराया था.
ऐप्लिकेशन, XrSpatialSnapshotEXT हैंडल और उससे जुड़े संसाधनों को खत्म करने के लिए, xrDestroySpatialSnapshotEXT को कॉल कर सकता है.
सही इस्तेमाल (इंप्लिसिट)
- xrDestroySpatialSnapshotEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
snapshotएक मान्य XrSpatialSnapshotEXT हैंडल होना चाहिए
Thread की सुरक्षा
snapshotऔर किसी भी चाइल्ड हैंडल का ऐक्सेस, बाहरी तौर पर सिंक किया जाना ज़रूरी है
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
सामान्य कॉम्पोनेंट
बाउंडेड 2D
कॉम्पोनेंट का डेटा
XrSpatialBounded2DDataEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialBounded2DDataEXT {
XrPosef center;
XrExtent2Df extents;
} XrSpatialBounded2DDataEXT;
सदस्यों की जानकारी
centerएक XrPosef है, जो बाउंडेड 2D कॉम्पोनेंट के ज्यामितीय केंद्र को तय करता है.extents, x-ऐक्सिस (extents.width) और y-ऐक्सिस (extents.height) के साथ बाउंड किए गए 2D कॉम्पोनेंट की सीमाएं हैं. यहcenterपर केंद्रित है.
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT के extents से, प्लेन के कोऑर्डिनेट सिस्टम के x-y प्लेन में मौजूद इकाई के साइज़ का पता चलता है. {0, 0, 0} पोज़िशन, {0, 0, 0, 1} रोटेशन (कोई रोटेशन नहीं), और {1, 1} एक्सटेंट वाले प्लेन का मतलब है कि 1 मीटर x 1 मीटर का प्लेन, {0, 0, 0} पर केंद्रित है. इसका सामने का फ़ेस नॉर्मल वेक्टर, कॉम्पोनेंट के स्पेस में +Z दिशा की ओर इशारा करता है.
X X Y Y Z Z ऊंचाई ऊंचाई Y Y Z Z X X वर्टिकल प्लेन वर्टिकल प्लेन हॉरिज़ॉन्टल प्लेन हॉरिज़ॉन्टल प्लेन चौड़ाई चौड़ाई चौड़ाई चौड़ाई ऊंचाई ऊंचाई
इमेज 24. Bounded2D कॉम्पोनेंट कोऑर्डिनेट सिस्टम
ध्यान दें
OpenXR, X-Y प्लेन का इस्तेमाल करता है. इसमें +Z, प्लेन नॉर्मल होता है. हालांकि, अन्य एपीआई X-Z प्लेन का इस्तेमाल कर सकते हैं. इसमें +Y, प्लेन नॉर्मल होता है. X-Y प्लेन को X-Z प्लेन में बदला जा सकता है. इसके लिए, +X ऐक्सिस के चारों ओर -π/2 रेडियन घुमाना होगा.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialBounded2DDataEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है
डेटा के बारे में क्वेरी करने के लिए कॉम्पोनेंट की सूची का स्ट्रक्चर
XrSpatialComponentBounded2DListEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialComponentBounded2DListEXT {
XrStructureType type;
void* next;
uint32_t boundCount;
XrSpatialBounded2DDataEXT* bounds;
} XrSpatialComponentBounded2DListEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.boundCountएकuint32_tहै, जोboundsकलेक्शन में मौजूद एलिमेंट की संख्या बताता है.bounds, XrSpatialBounded2DDataEXT का एक कलेक्शन है.
अगर XrSpatialComponentBounded2DListEXT, XrSpatialComponentDataQueryResultEXT :: next की अगली चेन में है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए. हालांकि, XrSpatialComponentDataQueryConditionEXT ::componentTypeCount शून्य नहीं है और XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT को XrSpatialComponentDataQueryConditionEXT :: componentTypes में शामिल नहीं किया गया है.
अगर boundCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput से कम है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_SIZE_INSUFFICIENT को ज़रूर दिखाना चाहिए.
अगर xrQuerySpatialComponentDataEXT :: snapshot को xrCreateSpatialDiscoverySnapshotCompleteEXT से बनाया गया है, तो रनटाइम के लिए XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace और XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time में XrSpatialBounded2DDataEXT :: center देना ज़रूरी है .
अगर xrQuerySpatialComponentDataEXT :: snapshot को xrCreateSpatialUpdateSnapshotEXT से बनाया गया है, तो रनटाइम के लिए ज़रूरी है कि वह XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace और XrSpatialUpdateSnapshotCreateInfoEXT :: time में XrSpatialBounded2DDataEXT :: center उपलब्ध कराए.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialComponentBounded2DListEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
bounds,boundCountXrSpatialBounded2DDataEXT स्ट्रक्चर के कलेक्शन का पॉइंटर होना चाहिए -
boundCountपैरामीटर की वैल्यू,0से ज़्यादा होनी चाहिए
कॉन्फ़िगरेशन
अगर किसी सुविधा के लिए, XrSpatialCapabilityComponentTypesEXT :: componentTypes में XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT को शामिल किया गया है, तो ऐप्लिकेशन उसे चालू कर सकता है. इसके लिए, उसे XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents सूची में enum वैल्यू को शामिल करना होगा. इस कॉम्पोनेंट को XrSpatialCapabilityConfigurationBaseHeaderEXT की अगली चेन में शामिल करने के लिए, किसी खास कॉन्फ़िगरेशन की ज़रूरत नहीं होती.
बाउंडेड 3D
कॉम्पोनेंट का डेटा
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT अपने डेटा के लिए XrBoxf का इस्तेमाल करता है.
डेटा के बारे में क्वेरी करने के लिए कॉम्पोनेंट की सूची का स्ट्रक्चर
XrSpatialComponentBounded3DListEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialComponentBounded3DListEXT {
XrStructureType type;
void* next;
uint32_t boundCount;
XrBoxf* bounds;
} XrSpatialComponentBounded3DListEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.boundCountएकuint32_tहै, जोboundsकलेक्शन में मौजूद एलिमेंट की संख्या बताता है.bounds, XrBoxf का कलेक्शन है.
अगर XrSpatialComponentBounded3DListEXT, XrSpatialComponentDataQueryResultEXT :: next की अगली चेन में है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए. हालांकि, XrSpatialComponentDataQueryConditionEXT ::componentTypeCount शून्य नहीं है और XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT को XrSpatialComponentDataQueryConditionEXT :: componentTypes में शामिल नहीं किया गया है.
अगर boundCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput से कम है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_SIZE_INSUFFICIENT को ज़रूर दिखाना चाहिए.
अगर xrQuerySpatialComponentDataEXT :: snapshot को xrCreateSpatialDiscoverySnapshotCompleteEXT से बनाया गया है, तो रनटाइम को ज़रूर XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace में XrBoxf :: center को XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time पर उपलब्ध कराना होगा.
अगर xrQuerySpatialComponentDataEXT :: snapshot को xrCreateSpatialUpdateSnapshotEXT से बनाया गया है, तो रनटाइम के लिए ज़रूरी है कि वह XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace में XrSpatialUpdateSnapshotCreateInfoEXT :: time पर XrBoxf :: center उपलब्ध कराए.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialComponentBounded3DListEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
boundsकोboundCountXrBoxf स्ट्रक्चर के कलेक्शन का पॉइंटर होना चाहिए -
boundCountपैरामीटर की वैल्यू,0से ज़्यादा होनी चाहिए
कॉन्फ़िगरेशन
अगर किसी क्षमता के लिए, XrSpatialCapabilityComponentTypesEXT :: componentTypes में XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT को शामिल किया गया है, तो ऐप्लिकेशन उसे चालू कर सकता है. इसके लिए, उसे XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents सूची में enum को शामिल करना होगा. इस कॉम्पोनेंट को XrSpatialCapabilityConfigurationBaseHeaderEXT की अगली चेन में शामिल करने के लिए, किसी खास कॉन्फ़िगरेशन की ज़रूरत नहीं होती.
अभिभावक
कॉम्पोनेंट का डेटा
XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT अपने डेटा के लिए XrSpatialEntityIdEXT का इस्तेमाल करता है.
डेटा के बारे में क्वेरी करने के लिए कॉम्पोनेंट की सूची का स्ट्रक्चर
XrSpatialComponentParentListEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialComponentParentListEXT {
XrStructureType type;
void* next;
uint32_t parentCount;
XrSpatialEntityIdEXT* parents;
} XrSpatialComponentParentListEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.parentCountएकuint32_tहै, जोparentsकलेक्शन में मौजूद एलिमेंट की संख्या बताता है.parents,XrSpatialEntityIdEXTका एक कलेक्शन है.
अगर XrSpatialComponentParentListEXT, XrSpatialComponentDataQueryResultEXT :: next की अगली चेन में है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए. हालांकि, XrSpatialComponentDataQueryConditionEXT ::componentTypeCount शून्य नहीं होना चाहिए और XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT को XrSpatialComponentDataQueryConditionEXT :: componentTypes में शामिल नहीं किया जाना चाहिए.
अगर parentCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput से कम है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_SIZE_INSUFFICIENT को ज़रूर दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialComponentParentListEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
parentsकोparentCountXrSpatialEntityIdEXTवैल्यू के कलेक्शन का पॉइंटर होना चाहिए -
parentCountपैरामीटर की वैल्यू,0से ज़्यादा होनी चाहिए
कॉन्फ़िगरेशन
अगर किसी क्षमता के लिए, XrSpatialCapabilityComponentTypesEXT :: componentTypes में XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT को शामिल किया गया है, तो ऐप्लिकेशन उसे चालू कर सकता है. इसके लिए, उसे XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents सूची में enum को शामिल करना होगा. इस कॉम्पोनेंट को XrSpatialCapabilityConfigurationBaseHeaderEXT की अगली चेन में शामिल करने के लिए, किसी खास कॉन्फ़िगरेशन की ज़रूरत नहीं होती.
मेश 3D
कॉम्पोनेंट का डेटा
XrSpatialMeshDataEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialMeshDataEXT {
XrPosef origin;
XrSpatialBufferEXT vertexBuffer;
XrSpatialBufferEXT indexBuffer;
} XrSpatialMeshDataEXT;
सदस्यों की जानकारी
originएक XrPosef है, जो मेश के ऑरिजिन के बारे में बताता है. मेश के सभी वर्टिसेस, इस ऑरिजिन के हिसाब से होने चाहिए.vertexBufferएक XrSpatialBufferEXT है. यह उस बफ़र का आईडी उपलब्ध कराता है जो उस इकाई के वर्टेक्स बफ़र को दिखाता है जिस पर यह कॉम्पोनेंट मौजूद है. वर्टेक्स की पोज़िशन,originके हिसाब से होनी चाहिए .indexBufferएक XrSpatialBufferEXT है. यह बफ़र के लिए आईडी उपलब्ध कराता है. यह बफ़र, ट्रायंगल इंडेक्स के कलेक्शन को दिखाता है. साथ ही,vertexBufferमें मेश वर्टिस के इंडेक्स की जानकारी देता है. ट्रायंगल इंडेक्स, घड़ी की सुई की उलटी दिशा में ज़रूर दिखाए जाने चाहिए. साथ ही, तीन इंडेक्स एक ट्रायंगल को दिखाते हैं.
XrSpatialMeshDataEXT का इस्तेमाल करने वाले कॉम्पोनेंट टाइप के लिए, vertexBuffer और indexBuffer के XrSpatialBufferTypeEXT की जानकारी देना ज़रूरी है.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialMeshDataEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
vertexBufferएक मान्य XrSpatialBufferEXT स्ट्रक्चर होना चाहिए -
indexBufferएक मान्य XrSpatialBufferEXT स्ट्रक्चर होना चाहिए
डेटा के बारे में क्वेरी करने के लिए कॉम्पोनेंट की सूची का स्ट्रक्चर
XrSpatialComponentMesh3DListEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialComponentMesh3DListEXT {
XrStructureType type;
void* next;
uint32_t meshCount;
XrSpatialMeshDataEXT* meshes;
} XrSpatialComponentMesh3DListEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.meshCountएकuint32_tहै, जोmeshesकलेक्शन में मौजूद एलिमेंट की संख्या बताता है.meshes, XrSpatialMeshDataEXT का एक कलेक्शन है.
ऐप्लिकेशन, XrSpatialSnapshotEXT में मौजूद स्पेशल इकाइयों के मेश 3D कॉम्पोनेंट के बारे में क्वेरी कर सकता है. इसके लिए, XrSpatialComponentDataQueryConditionEXT :: componentTypes में XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT जोड़ना होगा. साथ ही, XrSpatialComponentDataQueryResultEXT की अगली पॉइंटर चेन में XrSpatialComponentMesh3DListEXT जोड़ना होगा.
अगर XrSpatialComponentMesh3DListEXT, XrSpatialComponentDataQueryResultEXT :: next की अगली चेन में है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए. हालांकि, XrSpatialComponentDataQueryConditionEXT ::componentTypeCount शून्य नहीं है और XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT को XrSpatialComponentDataQueryConditionEXT :: componentTypes में शामिल नहीं किया गया है.
अगर meshCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput से कम है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_SIZE_INSUFFICIENT को ज़रूर दिखाना चाहिए.
meshes कलेक्शन में रनटाइम से भरे गए XrSpatialMeshDataEXT के लिए, XrSpatialMeshDataEXT :: vertexBuffer के लिए XrSpatialBufferEXT :: bufferType XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT होना चाहिए और XrSpatialMeshDataEXT :: indexBuffer के लिए XrSpatialBufferEXT :: bufferType XR_SPATIAL_BUFFER_TYPE_UINT32_EXT होना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialComponentMesh3DListEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_COMPONENT_MESH_3D_LIST_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
meshesकोmeshCountXrSpatialMeshDataEXT स्ट्रक्चर के कलेक्शन का पॉइंटर होना चाहिए -
meshCountपैरामीटर की वैल्यू,0से ज़्यादा होनी चाहिए
कॉन्फ़िगरेशन
अगर किसी सुविधा के लिए, XrSpatialCapabilityComponentTypesEXT :: componentTypes में XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT को शामिल किया गया है, तो ऐप्लिकेशन उसे चालू कर सकता है. इसके लिए, उसे XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents सूची में enum को शामिल करना होगा. यह सूची, इस कॉम्पोनेंट के साथ काम करने वाली सुविधा के XrSpatialCapabilityConfigurationBaseHeaderEXT से मिले स्ट्रक्चर की होती है.
इस कॉम्पोनेंट को XrSpatialCapabilityConfigurationBaseHeaderEXT की अगली चेन में शामिल करने के लिए, किसी खास कॉन्फ़िगरेशन की ज़रूरत नहीं होती.
ट्रैकिंग स्टेटस के हिसाब से फ़िल्टर करना
XrSpatialFilterTrackingStateEXT स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSpatialFilterTrackingStateEXT {
XrStructureType type;
const void* next;
XrSpatialEntityTrackingStateEXT trackingState;
} XrSpatialFilterTrackingStateEXT;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.trackingState, XrSpatialEntityTrackingStateEXT है. इसके लिए, ऐप्लिकेशन फ़िल्टर लागू करना चाहता है.
ऐप्लिकेशन, XrSpatialDiscoverySnapshotCreateInfoEXT की अगली चेन में XrSpatialFilterTrackingStateEXT का इस्तेमाल कर सकता है, ताकि सिर्फ़ उन इकाइयों को खोजा जा सके जिनकी ट्रैकिंग स्थिति trackingState है.
ऐप्लिकेशन, XrSpatialComponentDataQueryConditionEXT की अगली चेन में XrSpatialFilterTrackingStateEXT का इस्तेमाल कर सकता है. इससे स्नैपशॉट से कॉम्पोनेंट डेटा क्वेरी को सिर्फ़ उन इकाइयों तक सीमित किया जा सकता है जिनकी ट्रैकिंग स्थिति trackingState है.
सही इस्तेमाल (इंप्लिसिट)
- XrSpatialFilterTrackingStateEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SPATIAL_FILTER_TRACKING_STATE_EXTहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
trackingStateकी वैल्यू, XrSpatialEntityTrackingStateEXT की मान्य वैल्यू होनी चाहिए
कोड का उदाहरण
ऐप्लिकेशन का इस्तेमाल
आम तौर पर, ऐप्लिकेशन इस पैटर्न में स्पेशल एंटिटी एक्सटेंशन का इस्तेमाल करते हैं:
- कोई ऐप्लिकेशन, सबसे पहले xrEnumerateSpatialCapabilitiesEXT का इस्तेमाल करके, सिस्टम की स्पेशल क्षमताओं की गिनती करता है. इसके बाद, यह XrSpatialCapabilityEXT के दिखाए गए ऐरे की जांच करता है. साथ ही, xrEnumerateSpatialCapabilityComponentTypesEXT और xrEnumerateSpatialCapabilityFeaturesEXT का इस्तेमाल करके, उन क्षमताओं के लिए काम करने वाले कॉम्पोनेंट और सुविधाओं की गिनती करता है. इससे ऐप्लिकेशन को उन कॉम्पोनेंट की पूरी जानकारी मिलती है जिन्हें वह चालू कर सकता है. साथ ही, उन कॉन्फ़िगरेशन की जानकारी मिलती है जिन्हें यह सुविधा स्वीकार करती है.
- इसके बाद, ऐप्लिकेशन एक या उससे ज़्यादा XrSpatialContextEXT हैंडल बनाता है. इनमें, स्पेशल कैपेबिलिटी के खास कॉन्फ़िगरेशन होते हैं. ये कॉन्फ़िगरेशन, स्पेशल कॉन्टेक्स्ट में किसी खास सुविधा को चालू और कॉन्फ़िगर करते हैं. साथ ही, उन सुविधाओं के लिए कॉम्पोनेंट को चालू और कॉन्फ़िगर करते हैं.
- हर XrSpatialContextEXT के लिए, ऐप्लिकेशन उस XrSpatialContextEXT के लिए XrEventDataSpatialDiscoveryRecommendedEXT इवेंट मिलने का इंतज़ार करता है. इसके बाद, वह स्पेशल एंटिटी खोजने के लिए xrCreateSpatialDiscoverySnapshotAsyncEXT का इस्तेमाल करता है. यह एसिंक्रोनस ऑपरेशन पूरा होने के बाद, ऐप्लिकेशन को XrSpatialSnapshotEXT हैंडल मिलता है.
- ऐप्लिकेशन, xrQuerySpatialComponentDataEXT का इस्तेमाल करके, इस XrSpatialSnapshotEXT में शामिल इकाइयों और कॉम्पोनेंट डेटा के लिए क्वेरी करता है. अगर इकाई की स्थिति
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTहै, तो ऐप्लिकेशन, क्वेरी की गई इकाइयों के कॉम्पोनेंट का नया डेटा पढ़ता है. यह डेटा, XrSpatialComponentDataQueryResultEXT की अगली चेन से जुड़े स्ट्रक्चर से लिया जाता है. - अगर ऐप्लिकेशन को कुछ ऐसी इकाइयां मिलती हैं जो दिलचस्प हैं और जिनके लिए वह समय के साथ अपडेट पाना चाहता है, तो वह xrCreateSpatialEntityFromIdEXT का इस्तेमाल करके, उन इकाइयों के लिए XrSpatialEntityEXT हैंडल बनाता है. ऐप्लिकेशन को ऐसी दिलचस्प इकाइयों के अपडेट मिलते हैं. इसके लिए, वह xrCreateSpatialUpdateSnapshotEXT का इस्तेमाल करता है. साथ ही, नए बनाए गए XrSpatialSnapshotEXT पर उसी xrQuerySpatialComponentDataEXT फ़ंक्शन का इस्तेमाल करता है, ताकि उन इकाइयों के लिए कॉम्पोनेंट का नया डेटा मिल सके.
स्पेशल इकाइयों और क्वेरी कॉम्पोनेंट के डेटा का पता लगाना
यहां दिए गए उदाहरण कोड में, "Foo" क्षमता के लिए स्पेशल इकाइयों को खोजने और उनके कॉम्पोनेंट डेटा के बारे में क्वेरी करने का तरीका बताया गया है.
/****************************/
/* Capability definition */
/****************************/
// Foo capability has the following components -
// - XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT
#define XR_SPATIAL_CAPABILITY_FOO ((XrSpatialCapabilityEXT)1000740000U)
#define XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_FOO_EXT ((XrStructureType)1000740000U)
// Derives from XrSpatialCapabilityConfigurationBaseHeaderEXT
typedef struct XrSpatialCapabilityConfigurationFooEXT {
XrStructureType type;
const void* XR_MAY_ALIAS next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationFooEXT;
/******************************/
/* End capability definition */
/******************************/
auto waitUntilReady = [](XrFutureEXT future) {
XrFuturePollInfoEXT pollInfo{XR_TYPE_FUTURE_POLL_INFO_EXT};
XrFuturePollResultEXT pollResult{XR_TYPE_FUTURE_POLL_RESULT_EXT};
pollInfo.future = future;
do {
// sleep(1);
CHK_XR(xrPollFutureEXT(instance, &pollInfo, &pollResult));
} while (pollResult.state != XR_FUTURE_STATE_READY_EXT);
};
// Create a spatial spatial context
XrSpatialContextEXT spatialContext{};
{
const std::array<XrSpatialComponentTypeEXT, 1> enabledComponents = {
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT,
};
// Configure Foo capability for the spatial context
XrSpatialCapabilityConfigurationFooEXT fooConfig{XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_FOO_EXT};
fooConfig.capability = XR_SPATIAL_CAPABILITY_FOO;
fooConfig.enabledComponentCount = enabledComponents.size();
fooConfig.enabledComponents = enabledComponents.data();
std::vector<XrSpatialCapabilityConfigurationBaseHeaderEXT*> capabilityConfigs;
capabilityConfigs.push_back(reinterpret_cast<XrSpatialCapabilityConfigurationBaseHeaderEXT*>(&fooConfig));
XrSpatialContextCreateInfoEXT spatialContextCreateInfo{XR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXT};
spatialContextCreateInfo.capabilityConfigCount = capabilityConfigs.size();
spatialContextCreateInfo.capabilityConfigs = capabilityConfigs.data();
XrFutureEXT createContextFuture;
CHK_XR(xrCreateSpatialContextAsyncEXT(session, &spatialContextCreateInfo, &createContextFuture));
waitUntilReady(createContextFuture);
XrCreateSpatialContextCompletionEXT completion{XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXT};
CHK_XR(xrCreateSpatialContextCompleteEXT(session, createContextFuture, &completion));
if (completion.futureResult != XR_SUCCESS) {
return;
}
spatialContext = completion.spatialContext;
}
auto discoverSpatialEntities = [&](XrSpatialContextEXT spatialContext, XrTime time) {
// We want to look for entities that have the following components.
std::array<XrSpatialComponentTypeEXT, 1> snapshotComponents {XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT};
XrSpatialDiscoverySnapshotCreateInfoEXT snapshotCreateInfo{XR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXT};
snapshotCreateInfo.componentTypeCount = snapshotComponents.size();
snapshotCreateInfo.componentTypes = snapshotComponents.data();
XrFutureEXT future = XR_NULL_FUTURE_EXT;
CHK_XR(xrCreateSpatialDiscoverySnapshotAsyncEXT(spatialContext, &snapshotCreateInfo, &future));
waitUntilReady(future);
XrCreateSpatialDiscoverySnapshotCompletionInfoEXT completionInfo{XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXT};
completionInfo.baseSpace = localSpace;
completionInfo.time = time;
completionInfo.future = future;
XrCreateSpatialDiscoverySnapshotCompletionEXT completion{XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXT};
CHK_XR(xrCreateSpatialDiscoverySnapshotCompleteEXT(spatialContext, &completionInfo, &completion));
if (completion.futureResult == XR_SUCCESS) {
// Query for the bounded2d component data
XrSpatialComponentTypeEXT componentToQuery = XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT;
XrSpatialComponentDataQueryConditionEXT queryCond{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT};
queryCond.componentTypes = &componentToQuery;
XrSpatialComponentDataQueryResultEXT queryResult{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT};
queryResult.entityIdCapacityInput = 0;
queryResult.entityIds = nullptr;
queryResult.entityStateCapacityInput = 0;
queryResult.entityStates = nullptr;
CHK_XR(xrQuerySpatialComponentDataEXT(completion.snapshot, &queryCond, &queryResult));
std::vector<XrSpatialEntityIdEXT> entityIds(queryResult.entityIdCountOutput);
std::vector<XrSpatialEntityTrackingStateEXT> entityStates(queryResult.entityStateCountOutput);
queryResult.entityIdCapacityInput = entityIds.size();
queryResult.entityIds = entityIds.data();
queryResult.entityStateCapacityInput = entityStates.size();
queryResult.entityStates = entityStates.data();
std::vector<XrSpatialBounded2DDataEXT> bounded2d(queryResult.entityIdCountOutput);
XrSpatialComponentBounded2DListEXT boundsList{XR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXT};
boundsList.boundCount = bounded2d.size();
boundsList.bounds = bounded2d.data();
queryResult.next = &boundsList;
CHK_XR(xrQuerySpatialComponentDataEXT(completion.snapshot, &queryCond, &queryResult));
for (int32_t i = 0; i < queryResult.entityIdCountOutput; ++i) {
if (entityStates[i] == XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT) {
// 2D extents for entity entityIds[i] is bounded2d[i].extents.
}
}
CHK_XR(xrDestroySpatialSnapshotEXT(completion.snapshot));
}
};
while (1) {
// ...
// For every frame in frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
const XrTime time = frameState.predictedDisplayTime;
// Poll for the XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT event
XrEventDataBuffer event = {XR_TYPE_EVENT_DATA_BUFFER};
XrResult result = xrPollEvent(instance, &event);
if (result == XR_SUCCESS) {
switch (event.type) {
case XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT: {
const XrEventDataSpatialDiscoveryRecommendedEXT& eventdata =
*reinterpret_cast<XrEventDataSpatialDiscoveryRecommendedEXT*>(&event);
// Discover spatial entities for the context that we received the "discovery
// recommended" event for.
discoverSpatialEntities(eventdata.spatialContext, time);
break;
}
}
}
// ...
// Finish frame loop
// ...
}
CHK_XR(xrDestroySpatialContextEXT(spatialContext));
बफ़र डेटा के लिए क्वेरी करना
यहां दिए गए उदाहरण वाले कोड में, XrSpatialBufferEXT उपलब्ध कराने वाले कॉम्पोनेंट का डेटा पाने का तरीका बताया गया है.
/****************************/
/* Component definition */
/****************************/
// Foo component that provides an XrVector3f buffer
#define XR_SPATIAL_COMPONENT_TYPE_FOO_EXT ((XrSpatialComponentTypeEXT)1000740000U)
#define XR_TYPE_SPATIAL_COMPONENT_FOO_LIST_EXT ((XrStructureType)1000740000U)
// XrSpatialComponentFooListEXT extends XrSpatialComponentDataQueryResultEXT
typedef struct XrSpatialComponentFooListEXT {
XrStructureType type;
void* XR_MAY_ALIAS next;
uint32_t fooCount;
XrSpatialBufferEXT* foo;
} XrSpatialComponentFooListEXT;
/******************************/
/* End Component definition */
/******************************/
// Query for the foo component data
XrSpatialComponentTypeEXT componentToQuery = XR_SPATIAL_COMPONENT_TYPE_FOO_EXT;
XrSpatialComponentDataQueryConditionEXT queryCond{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT};
queryCond.componentTypeCount = 1;
queryCond.componentTypes = &componentToQuery;
XrSpatialComponentDataQueryResultEXT queryResult{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT};
CHK_XR(xrQuerySpatialComponentDataEXT(snapshot, &queryCond, &queryResult));
std::vector<XrSpatialEntityIdEXT> entityIds(queryResult.entityIdCountOutput);
queryResult.entityIdCapacityInput = entityIds.size();
queryResult.entityIds = entityIds.data();
std::vector<XrSpatialBufferEXT> fooBuffers(queryResult.entityIdCountOutput);
XrSpatialComponentFooListEXT fooList{XR_TYPE_SPATIAL_COMPONENT_FOO_LIST_EXT};
fooList.fooCount = fooBuffers.size();
fooList.foo = fooBuffers.data();
queryResult.next = &fooList;
CHK_XR(xrQuerySpatialComponentDataEXT(snapshot, &queryCond, &queryResult));
for (int32_t i = 0; i < queryResult.entityIdCountOutput; ++i) {
// foo component data for entity entityIds[i]
if (fooBuffers[i].bufferType == XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT) {
XrSpatialBufferGetInfoEXT getInfo{XR_TYPE_SPATIAL_BUFFER_GET_INFO_EXT};
getInfo.bufferId = fooBuffers[i].bufferId;
uint32_t bufferCountOutput;
CHK_XR(xrGetSpatialBufferVector3fEXT(snapshot, &getInfo, 0, &bufferCountOutput, nullptr));
std::vector<XrVector3f> vertexBuffer(bufferCountOutput);
CHK_XR(xrGetSpatialBufferVector3fEXT(snapshot, &getInfo, bufferCountOutput, &bufferCountOutput, vertexBuffer.data()));
// XrVertex3f buffer for entity entityIds[i] is now available in vertexBuffer vector.
}
}
एक्सटेंशन से जुड़े दिशा-निर्देश
अगर कोई एक्सटेंशन नया XrSpatialComponentTypeEXT तय कर रहा है, जो किसी स्पेशल एंटिटी के बारे में अतिरिक्त डेटा उपलब्ध कराता है, तो
- एक्सटेंशन को उस कॉम्पोनेंट के लिए एक सूची का स्ट्रक्चर भी तय करना चाहिए. इससे ऐप्लिकेशन, रनटाइम के लिए एक कलेक्शन पास कर सकता है, ताकि xrQuerySpatialComponentDataEXT ::
queryConditionको पूरा करने वाली हर स्पेशल इकाई के डेटा को भरा जा सके. इस तरह के सूची स्ट्रक्चर के कुछ उदाहरण XrSpatialComponentParentListEXT और XrSpatialComponentBounded2DListEXT हैं. अगर कॉम्पोनेंट डेटा का साइज़ अलग-अलग है और ऐप्लिकेशन को इसकी क्वेरी करने के लिए टू-कॉल इडियम का इस्तेमाल करना पड़ता है, तो कॉम्पोनेंट डेटा को लिस्ट स्ट्रक्चर में अलग-अलग साइज़ के हर डेटा के लिए, XrSpatialBufferEXT उपलब्ध कराना चाहिए. साथ ही, हर बफ़र के लिए XrSpatialBufferTypeEXT की जानकारी देना ज़रूरी है. इसके बाद, ऐप्लिकेशन कॉम्पोनेंट डेटा के लिए टू-कॉल इडियम में बताए गए फ़ंक्शन का इस्तेमाल करके, बफ़र डेटा के लिए क्वेरी कर सकता है. इस तरह के स्ट्रक्चर का एक उदाहरण XrSpatialMeshDataEXT है, जो XrSpatialComponentMesh3DListEXT में शामिल है. - यह एक्सटेंशन, ऐसे स्ट्रक्चर भी उपलब्ध करा सकता है जिन्हें ऐप्लिकेशन, XrSpatialComponentDataQueryConditionEXT ::
nextसे जोड़ सकता है. इससे इस कॉम्पोनेंट के डेटा से जुड़ी क्वेरी के लिए, अतिरिक्त फ़िल्टर उपलब्ध कराए जा सकते हैं.
- एक्सटेंशन को उस कॉम्पोनेंट के लिए एक सूची का स्ट्रक्चर भी तय करना चाहिए. इससे ऐप्लिकेशन, रनटाइम के लिए एक कलेक्शन पास कर सकता है, ताकि xrQuerySpatialComponentDataEXT ::
एक्सटेंशन, XrSpatialDiscoverySnapshotCreateInfoEXT को एक्सटेंड करने वाले स्ट्रक्चर तय कर सकते हैं, ताकि डिस्कवरी के लिए अतिरिक्त फ़िल्टर उपलब्ध कराए जा सकें. स्नैपशॉट बनाने के लिए इस्तेमाल किए जाने वाले फ़िल्टर से, स्पेशल कॉन्टेक्स्ट के कॉन्फ़िगरेशन पर असर नहीं पड़ना चाहिए. इसके बजाय, इनका इस्तेमाल रनटाइम को यह बताने के लिए किया जाना चाहिए कि स्नैपशॉट में कौनसी इकाइयां और डेटा शामिल करना है. यह जानकारी, स्पेशल कॉन्टेक्स्ट के मौजूदा कॉन्फ़िगरेशन (और इसलिए, इसमें इस्तेमाल की जाने वाली सेवाओं के मौजूदा कॉन्फ़िगरेशन) से ट्रैक की जाती है.
अगर कोई एक्सटेंशन नया XrSpatialCapabilityEXT तय करता है, तो
- इसमें XrSpatialComponentTypeEXT की सूची भी होनी चाहिए. यह सूची, रनटाइम को उस सुविधा के लिए इकाइयों पर ज़रूर उपलब्ध करानी चाहिए.
- साथ ही, इसे XrSpatialCapabilityConfigurationBaseHeaderEXT से मिले स्ट्रक्चर उपलब्ध कराने होंगे, ताकि उस क्षमता को कॉन्फ़िगर किया जा सके.
अगर कोई एक्सटेंशन नया XrSpatialCapabilityFeatureEXT तय करता है, तो उसे एक ऐसा कॉन्फ़िगरेशन स्ट्रक्चर भी तय करना चाहिए जिसे XrSpatialCapabilityConfigurationBaseHeaderEXT के अगले पॉइंटर से जोड़ा जा सके. ऐप्लिकेशन, XrSpatialContextEXT बनाते समय इस सुविधा को चालू करने के लिए इसका इस्तेमाल कर सकता है.
नए XrSpatialCapabilityEXT को तय करने वाले एक्सटेंशन को, खास जानकारी के लिए इस टेंप्लेट का पालन करना चाहिए -
- खास जानकारी
- रनटाइम से जुड़ी सहायता
- कॉन्फ़िगरेशन
- गारंटी वाले कॉम्पोनेंट
- कोड का उदाहरण
नए XrSpatialComponentTypeEXT को तय करने वाले एक्सटेंशन को, खास जानकारी के लिए इस टेंप्लेट का पालन करना चाहिए -
- कॉम्पोनेंट का डेटा
- डेटा के बारे में क्वेरी करने के लिए कॉम्पोनेंट की सूची का स्ट्रक्चर
- कॉन्फ़िगरेशन
ऐप्लिकेशन को
XrSpatialBufferIdEXTउपलब्ध कराने वाला एपीआई लिखते समय, उसके साथ XrSpatialBufferTypeEXT ज़रूर होना चाहिए. इससे ऐप्लिकेशन को यह जानकारी मिलती है कि बफ़र का डेटा टाइप क्या है. साथ ही, ऐप्लिकेशन बफ़र का असल कॉन्टेंट पाने के लिए, सहीxrGetSpatialBuffer*फ़ंक्शन का इस्तेमाल कर सकता है.
सिमैंटिक लेबल डिज़ाइन और एक्सटेंशन से जुड़े दिशा-निर्देश
यह एक्सटेंशन, किसी इकाई के सिमैंटिक लेबल की जानकारी देने के लिए कोई कॉम्पोनेंट तय नहीं करता. हालांकि, यह ऐसे किसी भी एक्सटेंशन के लिए डिज़ाइन के नियम और दिशा-निर्देश तय करता है जो इस तरह के कॉम्पोनेंट को तय करता है. यहां दिए गए टेक्स्ट में, " चाहिए " और " ज़रूरी है " शब्दों का इस्तेमाल, इस तरह की सुविधा बनाने वाले लोगों के लिए किया गया है. इनका इस्तेमाल, रनटाइम लागू करने या एपीआई का इस्तेमाल करने वाले ऐप्लिकेशन के लिए नहीं किया गया है.
- अगर कोई एक्सटेंशन किसी XrSpatialCapabilityEXT के लिए सिमैंटिक लेबल तय कर रहा है, तो उसे ऐसा करने के लिए एक नया XrSpatialComponentTypeEXT तय करना चाहिए. साथ ही, लेबल के सेट ("सिमैंटिक लेबल सेट") के साथ एक नया एन्यूमरेशन तय करना चाहिए, ताकि वह उस कॉम्पोनेंट का डेटा बन सके.
- सेमैंटिक लेबल सेट को दिखाने वाले एन्यूमरेशन में एक वैल्यू ज़रूर होनी चाहिए. इससे यह पता चलता है कि इकाई को इस सेट के किसी भी लेबल में शामिल नहीं किया गया है. इस एन्यूमरेंट के नाम में 'UNCATEGORIZED' शामिल होना ज़रूरी है. उदाहरण के लिए,
XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT. इस वैल्यू से ऐप्लिकेशन को पता चलता है कि रनटाइम इस इकाई को पहचानता है. हालांकि, ऐसे अन्य सिमैंटिक लेबल सेट भी हैं जिनमें इस इकाई को कैटगरी में बांटा गया है. - xrEnumerateSpatialCapabilityComponentTypesEXT में, नए तय किए गए इस XrSpatialComponentTypeEXT की गिनती करने का मतलब है कि रनटाइम, उस कॉम्पोनेंट टाइप से जुड़े सिमैंटिक लेबल सेट (और इसलिए सेट में तय किए गए लेबल) के साथ काम करता है.
- ऐप्लिकेशन, इस सिमैंटिक लेबल सेट से जुड़े लेबल वाली इकाइयों को खोजने की अपनी इच्छा ज़ाहिर करते हैं. इसके लिए, वे XrSpatialCapabilityConfigurationBaseHeaderEXT ::
enabledComponentsमें मौजूद कॉन्फ़िगरेशन स्ट्रक्चर के अरे में, उससे जुड़ा XrSpatialComponentTypeEXT शामिल करते हैं. यह अरे, उस क्षमता के लिए होता है जिसके लिए कॉम्पोनेंट टाइप को शामिल किया गया है. - ऐसा हो सकता है कि किसी एक स्पेशल इकाई में कई कॉम्पोनेंट हों. हर कॉम्पोनेंट, अपने सिमैंटिक लेबल सेट से इकाई को एक लेबल देता है. यहां दिए गए उदाहरण को देखें. इसमें कुछ काल्पनिक सिमैंटिक लेबल सेट -
XrSpatialObjectSemanticLabelशामिल हैं. इनमें कुर्सी, सोफ़ा, टेबल वगैरह जैसी वैल्यू हो सकती हैं,XrSpatialSofaBrand, जिसमें IKEA, Wayfair वगैरह जैसी वैल्यू हो सकती हैं. साथ ही,XrSpatialIkeaSofa, जिसमें सोफ़ा के लिए IKEA के खास मॉडल के नाम हो सकते हैं. इस मामले में, सोफ़ा इकाई में तीनों कॉम्पोनेंट (तीनों सिमैंटिक लेबल सेट के लेबल) मौजूद हैं. हर कॉम्पोनेंट, इकाई के बारे में अलग-अलग जानकारी देता है. - अगर कोई एक्सटेंशन, नया XrSpatialComponentTypeEXT तय कर रहा है, जो
UNCATEGORIZEDलेबल के अलावा कई लेबल वाला नया सिमैंटिक लेबल सेट उपलब्ध कराता है, तो एक्सटेंशन को XrSpatialCapabilityFeatureEXT तय करने पर विचार करना चाहिए. इससे ऐप्लिकेशन, उस कॉम्पोनेंट टाइप से जुड़े सिमैंटिक लेबल सेट में तय किए गए लेबल के सिर्फ़ एक सबसेट को चालू कर सकते हैं. यह सबसेट, क्षमता कॉन्फ़िगरेशन की अगली चेन में दिया जाता है. यह रनटाइम के लिए एक हिंट के तौर पर काम करता है, ताकि वे अपनी ट्रैकिंग पाइपलाइन को ऑप्टिमाइज़ कर सकें और सिर्फ़ दिए गए सबसेट को ट्रैक कर सकें. इस तरह के फ़ीचर स्ट्रक्चर का एक उदाहरण यहां दिया गया है. - एक्सटेंशन को मौजूदा सिमैंटिक लेबल सेट की सूची में लेबल नहीं जोड़ने चाहिए. इसके बजाय, उन्हें एक नया इन्युमरेशन तय करना चाहिए. इसमें एक जैसे सिमैंटिक वाले इन्युमरेंट होने चाहिए. साथ ही, इनकी वैल्यू, दूसरे सेट की वैल्यू के बराबर होनी चाहिए. इसके अलावा, इसमें नए जोड़े गए इन्युमरेंट भी होने चाहिए. नए सिमैंटिक लेबल सेट की जानकारी में, पुराने लेबल सेट और नए लेबल सेट के बीच मैपिंग भी ज़रूर होनी चाहिए. नीचे उदाहरण देखें.
सिमैंटिक लेबल के सबसेट के लिए, स्पेशल फ़ीचर की परिभाषा का उदाहरण
// New example semantic label set.
typedef enum XrSpatialExampleSemanticLabelEXT {
// ... label values
} XrSpatialExampleSemanticLabelEXT;
/*
typedef enum XrSpatialCapabilityFeatureEXT {
// .. existing values
// new spatial feature value
XR_SPATIAL_CAPABILITY_FEATURE_EXAMPLE_SEMANTIC_LABEL_SUBSET_EXT
// .. existing values
} XrSpatialCapabilityFeatureEXT;
*/
// New spatial feaure configuration structure
typedef struct XrSpatialFeatureExampleSemanticLabelSubsetEXT {
XrStructureType type;
const void* XR_MAY_ALIAS next;
uint32_t semanticLabelCount;
const XrSpatialExampleSemanticLabelEXT* semanticLabels;
} XrSpatialFeatureExampleSemanticLabelSubsetEXT;
स्पेशल सिमैंटिक लेबल एक्सटेंशन का उदाहरण
typedef enum XrSpatialExamplePlaneSemanticLabelExtensionEXT {
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_UNCATEGORIZED_EXT = 1,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_FLOOR_EXT = 2,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WALL_EXT = 3,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_CEILING_EXT = 4,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_TABLE_EXT = 5,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_DOOR_EXT = 6,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WINDOW_EXT = 7,
XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialExamplePlaneSemanticLabelExtensionEXT;
ऊपर दिए गए उदाहरण को देखें, जिसमें एक एक्सटेंशन, एन्यूमरेशन XrSpatialExamplePlaneSemanticLabelExtensionEXT को तय करता है. ऐसा इसलिए किया जाता है, ताकि दरवाज़ों और खिड़कियों को दिखाने वाली वैल्यू के साथ, मौजूदा XrSpatialPlaneSemanticLabelEXT को बढ़ाया जा सके. नए इन्युमरेशन की खास जानकारी में, इस फ़ॉर्म के लिए टेक्स्ट ज़रूर शामिल होना चाहिए -
For all non-UNCATEGORIZED label enumerants in elink:XrSpatialPlaneSemanticLabelEXT,
the runtime must: return that enumerant if and only if it returns the corresponding
label enumerant from elink:XrSpatialExamplePlaneSemanticLabelExtensionEXT with the same value
i.e.
the ename:XR_SPATIAL_COMPONENT_TYPE_PLANE_SEMANTIC_LABEL_EXT value for that entity must:
correspond with the ename:XR_SPATIAL_COMPONENT_TYPE_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_EXT values
according to the following table -
[width="100%",options="header"]
|====
| XrSpatialExamplePlaneSemanticLabelExtensionEXT | XrSpatialPlaneSemanticLabelEXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_FLOOR_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_FLOOR_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WALL_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_WALL_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_CEILING_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_CEILING_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_TABLE_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_TABLE_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_DOOR_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT
| XR_SPATIAL_EXAMPLE_PLANE_SEMANTIC_LABEL_EXTENSION_WINDOW_EXT | XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT
|====
नए मैक्रो
नए बेस टाइप
XrSpatialBufferIdEXTXrSpatialEntityIdEXT
नए ऑब्जेक्ट टाइप
नए निर्देश
- xrCreateSpatialContextAsyncEXT
- xrCreateSpatialContextCompleteEXT
- xrCreateSpatialDiscoverySnapshotAsyncEXT
- xrCreateSpatialDiscoverySnapshotCompleteEXT
- xrCreateSpatialEntityFromIdEXT
- xrCreateSpatialUpdateSnapshotEXT
- xrDestroySpatialContextEXT
- xrDestroySpatialEntityEXT
- xrDestroySpatialSnapshotEXT
- xrEnumerateSpatialCapabilitiesEXT
- xrEnumerateSpatialCapabilityComponentTypesEXT
- xrEnumerateSpatialCapabilityFeaturesEXT
- xrGetSpatialBufferFloatEXT
- xrGetSpatialBufferStringEXT
- xrGetSpatialBufferUint16EXT
- xrGetSpatialBufferUint32EXT
- xrGetSpatialBufferUint8EXT
- xrGetSpatialBufferVector2fEXT
- xrGetSpatialBufferVector3fEXT
- xrQuerySpatialComponentDataEXT
नए स्ट्रक्चर
- XrCreateSpatialContextCompletionEXT
- XrCreateSpatialDiscoverySnapshotCompletionEXT
- XrCreateSpatialDiscoverySnapshotCompletionInfoEXT
- XrEventDataSpatialDiscoveryRecommendedEXT
- XrSpatialBounded2DDataEXT
- XrSpatialBufferEXT
- XrSpatialBufferGetInfoEXT
- XrSpatialCapabilityComponentTypesEXT
- XrSpatialCapabilityConfigurationBaseHeaderEXT
- XrSpatialComponentDataQueryConditionEXT
- XrSpatialComponentDataQueryResultEXT
- XrSpatialContextCreateInfoEXT
- XrSpatialDiscoverySnapshotCreateInfoEXT
- XrSpatialEntityFromIdCreateInfoEXT
- XrSpatialMeshDataEXT
- XrSpatialUpdateSnapshotCreateInfoEXT
XrSpatialComponentDataQueryResultEXT को एक्सटेंड करना :
XrSpatialDiscoverySnapshotCreateInfoEXT , XrSpatialComponentDataQueryConditionEXT को एक्सटेंड करना :
नए Enum
- XrSpatialBufferTypeEXT
- XrSpatialCapabilityEXT
- XrSpatialCapabilityFeatureEXT
- XrSpatialComponentTypeEXT
- XrSpatialEntityTrackingStateEXT
नए Enum कॉन्सटेंट
XR_EXT_SPATIAL_ENTITY_EXTENSION_NAMEXR_EXT_spatial_entity_SPEC_VERSIONXrObjectType को एक्सटेंड करना :
XR_OBJECT_TYPE_SPATIAL_CONTEXT_EXTXR_OBJECT_TYPE_SPATIAL_ENTITY_EXTXR_OBJECT_TYPE_SPATIAL_SNAPSHOT_EXT
XrResult को एक्सटेंड करना :
XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXTXR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXTXR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXTXR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXTXR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXTXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT
XrStructureType को एक्सटेंड करना :
XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXTXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXTXR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXTXR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXTXR_TYPE_SPATIAL_BUFFER_GET_INFO_EXTXR_TYPE_SPATIAL_CAPABILITY_COMPONENT_TYPES_EXTXR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXTXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXTXR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXTXR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXTXR_TYPE_SPATIAL_ENTITY_FROM_ID_CREATE_INFO_EXTXR_TYPE_SPATIAL_FILTER_TRACKING_STATE_EXTXR_TYPE_SPATIAL_UPDATE_SNAPSHOT_CREATE_INFO_EXT
समस्याएं
क्या कोई इकाई हमेशा सिर्फ़ एक क्षमता से बनती है?
- समाधान किया गया
- जवाब: नहीं. यह पूरी तरह से रनटाइम पर निर्भर करता है. यह उसकी ट्रैकिंग क्षमताओं और इस बात पर निर्भर करता है कि वह पहचानी गई इकाई को कैसे दिखाना चाहता है. यह स्पेसिफ़िकेशन, स्पेसियल एंटिटी को दिखाने का कोई खास तरीका नहीं बताता. हालांकि, यह किसी क्षमता के लिए ज़रूरी कॉम्पोनेंट के बारे में बताता है, ताकि कम से कम उम्मीदें तय की जा सकें. रनटाइम, अलग-अलग क्षमताओं से पहचानी गई इकाइयों को मर्ज कर सकता है. साथ ही, उन्हें एक इकाई के तौर पर दिखा सकता है. इसमें उन सभी क्षमताओं के कॉम्पोनेंट शामिल होते हैं जिनकी मदद से इकाई की पहचान की गई थी. उदाहरण के लिए, टेबल का पता लगाने के लिए, प्लेन ट्रैकिंग और ऑब्जेक्ट ट्रैकिंग, दोनों सुविधाओं का इस्तेमाल किया जा सकता है. प्लेन ट्रैकिंग की सुविधा, इकाई पर
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXTकॉम्पोनेंट उपलब्ध कराती है और ऑब्जेक्ट ट्रैकिंग की सुविधा,XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTकॉम्पोनेंट उपलब्ध कराती है. कुछ रनटाइम, टेबल को दो अलग-अलग इकाइयों के तौर पर उपलब्ध करा सकते हैं. इनमें से हर इकाई के पास गारंटी वाले कॉम्पोनेंट का अपना सेट होता है. वहीं, कुछ रनटाइम, टेबल को दिखाने के लिए सिर्फ़ एक इकाई उपलब्ध करा सकते हैं. साथ ही, उसी इकाई परXR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXTऔरXR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT, दोनों मौजूद होते हैं. यहां यह ध्यान रखना ज़रूरी है कि किसी भी स्पेसियल इकाई में, किसी भी कॉम्पोनेंट टाइप का ज़्यादा से ज़्यादा एक कॉम्पोनेंट हो सकता है. इसलिए, अगर अलग-अलग क्षमताओं से जनरेट किया गया कॉम्पोनेंट डेटा किसी इकाई के लिए मेल नहीं खाता है, तो रनटाइम को उन्हें दो अलग-अलग इकाइयों के तौर पर दिखाना चाहिए.
वर्शन हिस्ट्री
पहला संशोधन, 12-04-2024 (निहाव जैन, Google)
- एक्सटेंशन का शुरुआती ब्यौरा