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 में सीन को समझने और स्थानिक तर्क के लिए कॉन्सेप्ट और बुनियादी सिद्धांत पेश करता है. इससे, काम करने के तरीके से जुड़ी कई मिलती-जुलती, लेकिन अलग-अलग सुविधाओं को एक साथ लाया जाता है. इस एक्सटेंशन के हिसाब से, इन सुविधाओं को एक जैसे तरीके से गिना, कॉन्फ़िगर, और इस्तेमाल किया जाता है. इस एक्सटेंशन में, इनमें से किसी भी फ़ंक्शनल एरिया की सटीक परिभाषाएं नहीं दी गई हैं. इसलिए, औपचारिक स्पेसिफ़िकेशन टेक्स्ट कुछ हद तक अमूर्त होता है. इस एक्सटेंशन के स्पेसिफ़िकेशन टेक्स्ट में शामिल उदाहरण, कभी-कभी आने वाले या काल्पनिक तौर पर बनाए गए एक्सटेंशन में तय की गई सुविधाओं के बारे में बताते हैं. ऐसा सिर्फ़ उदाहरण के तौर पर किया जाता है. इससे ऐसी अतिरिक्त सुविधाओं को सीमित या तय नहीं किया जाता.
इस एक्सटेंशन के मुख्य हिस्से ये हैं:
- स्पेशल एंटिटी : यह सुविधा एंटिटी पर आधारित है. हालांकि , ये एंटिटी अपने-आप बहुत कम काम करती हैं.
- स्पेशल कॉम्पोनेंट : इन इकाइयों से जुड़े कॉम्पोनेंट होते हैं. ये कॉम्पोनेंट, डेटा और व्यवहार की जानकारी देते हैं.
- स्पेशल कॉम्पोनेंट टाइप : हर स्पेशल कॉम्पोनेंट, किसी खास कॉम्पोनेंट टाइप का होता है. साथ ही, किसी भी इकाई में, किसी भी कॉम्पोनेंट टाइप का ज़्यादा से ज़्यादा एक कॉम्पोनेंट होता है.
- स्पेशल कॉन्टेक्स्ट : सभी स्पेशल एंटिटी इंटरैक्शन, शुरू होने और कॉन्फ़िगरेशन के चरण के बाद कॉन्टेक्स्ट में होते हैं.
- स्पेशल अबिलिटी : स्पेशल एंटिटी में बदलाव करने की सुविधा, मुख्य तौर पर स्पेशल अबिलिटी के ज़रिए मिलती है . क्षमता, फ़ंक्शन की कोई यूनिट होती है. उदाहरण के लिए (बिना किसी सीमा के), ऐप्लिकेशन के हिसाब से तय किए गए ऐंकर, प्लेन का पता लगाना या इमेज को ट्रैक करना. आम तौर पर, हर क्षमता को अलग एक्सटेंशन में तय किया जाता है. इसे इंस्टेंस बनाते समय हमेशा की तरह चालू किया जाता है. साथ ही, इसे बनाते समय किसी खास संदर्भ के लिए चालू किया जाता है.
- हर क्षमता, कॉम्पोनेंट टाइप के एक सेट से जुड़ी होती है. इस सेट में मौजूद हर कॉम्पोनेंट, उस क्षमता से जुड़ी हर इकाई पर मौजूद होता है. क्षमता तय करने वाला एक्सटेंशन यह तय करता है कि क्षमता के लिए कौनसे कॉम्पोनेंट टाइप ज़रूरी हैं ("गारंटीड"). वहीं, वही एक्सटेंशन या अन्य एक्सटेंशन, कुछ संभावित लागू करने के तरीके से उपलब्ध कराए गए ज़रूरी नहीं कॉम्पोनेंट टाइप के बारे में बता सकते हैं. कोई भी क्षमता, इकाइयों को किसी दिए गए कॉम्पोनेंट टाइप के कॉम्पोनेंट उपलब्ध करा सकती है. इनका इस्तेमाल एक जैसा होता है, भले ही इन्हें किसी भी क्षमता ने जनरेट किया हो.
- स्पेशल कैपेबिलिटी की सुविधाएं : इसके अलावा, कुछ सुविधाओं के लिए कॉन्फ़िगरेशन की ज़रूरत होती है. इसलिए, इन्हें कैपेबिलिटी की सुविधाओं के हिसाब से पैरामीटर में रखा जाता है.
यह एक्सटेंशन, मौजूदा सिस्टम पर काम करने वाली हर capability के ज़रिए उपलब्ध कराए गए components की गिनती करने का तरीका बताता है. इसमें ज़रूरी और वैकल्पिक, दोनों तरह के components शामिल हैं.
कुछ लागू करने के लिए, केपबिलिटी के लिए अलग-अलग डिग्री के पैरामीटर की ज़रूरत हो सकती है. इसलिए, यह एक्सटेंशन मौजूदा सिस्टम में किसी दी गई केपबिलिटी से जुड़ी, काम करने वाली केपबिलिटी सुविधाओं को गिनने का तरीका उपलब्ध कराता है.
यह एक्सटेंशन, कई सामान्य कॉम्पोनेंट भी तय करता है. इनका इस्तेमाल, सुविधाओं की एक बड़ी रेंज में किया जा सकता है.
स्पेशल एंटिटी
स्पेशल एंटिटी, ऐसी एंटिटी होती हैं जो किसी जगह पर मौजूद होती हैं. इनसे जुड़ा अलग-अलग डेटा होता है, जिसे कॉम्पोनेंट के तौर पर व्यवस्थित किया जाता है. ये इनमें से कोई भी हो सकते हैं:
- फ़िज़िकल (जैसे, दीवारें और फ़र्श जैसी समतल सतहें, कुर्सियां और बुककेस जैसी चीज़ें वगैरह)
- वर्चुअल (जैसे, किसी दूसरे ऐप्लिकेशन या उपयोगकर्ता की ओर से रखा गया और शेयर किया गया कॉन्टेंट),
- ऐप्लिकेशन के हिसाब से तय की गई जगह (जैसे, ऐप्लिकेशन किसी जगह को "लिविंग रूम" या "किचन" के तौर पर मार्क करता है या किसी पॉइंट को टीवी लगाने की जगह के तौर पर मार्क करता है वगैरह)
ऐसी चीज़ों को स्पैटियल एंटिटी के तौर पर मॉडल नहीं किया जाना चाहिए जिन्हें ऐक्शन सिस्टम के ज़रिए दिखाया जाता है. जैसे, कंट्रोलर या आंखों की गतिविधि.
OpenXR में, स्पेस से जुड़ी इकाइयों को Entity-Component system के तौर पर मॉडल किया जाता है . हर स्पैटियल इकाई में कॉम्पोनेंट का एक सेट होता है. हर कॉम्पोनेंट, उस इकाई के लिए डेटा और व्यवहार का एक यूनीक सेट उपलब्ध कराता है.
स्पेशल एंटिटी को 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_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
यह कॉम्पोनेंट, किसी स्पेसियल एंटिटी के लिए प्लेन अलाइनमेंट enum उपलब्ध कराता है. इससे जुड़ा लिस्ट स्ट्रक्चर 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 एक्सटेंशन ने जोड़ा है)
स्पेशल ऑडियो की सुविधाएं और सेटअप
स्पेशल कैपेबिलिटी से, रनटाइम की उन क्षमताओं के बारे में पता चलता है जिनसे ऐसी इकाइयों का पता लगाया जा सकता है जिनमें कॉम्पोनेंट का एक तय सेट मौजूद होता है. ऐप्लिकेशन, 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 में दिए गए कॉम्पोनेंट टाइप का इस्तेमाल कर सकता है. इससे उसे capability के लिए systemId के साथ काम करने वाले सभी कॉम्पोनेंट के बारे में पता चलता है. साथ ही, वह इस सूची का इस्तेमाल करके यह तय कर सकता है कि capability के लिए XrSpatialContextEXT बनाते समय, मान्य कॉन्फ़िगरेशन क्या है.
अगर xrEnumerateSpatialCapabilitiesEXT, capability की गिनती नहीं करता है, तो रनटाइम को XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT दिखाना ज़रूरी है .
रनटाइम को उन स्पेशल कॉम्पोनेंट टाइप की गिनती नहीं करनी चाहिए जिनके एक्सटेंशन, instance के लिए चालू नहीं हैं .
मान्य इस्तेमाल (इंप्लिसिट)
- xrEnumerateSpatialCapabilityComponentTypesEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
instance, XrInstance का एक मान्य हैंडल होना चाहिए -
capabilityXrSpatialCapabilityEXT की मान्य वैल्यू होनी चाहिए -
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 -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो - अगर
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;
कुछ सुविधाओं में ऐसे पैरामीटर होते हैं जो ऐप्लिकेशन को दिखते हैं. इनकी मदद से, यह कॉन्फ़िगर किया जा सकता है कि रनटाइम, कॉम्पोनेंट के डेटा का हिसाब कैसे लगाएगा. पैरामीटर तय करने/कॉन्फ़िगर करने के इन डाइमेंशन को क्षमता से जुड़ी सुविधाएं कहा जाता है. उदाहरण के लिए, इमेज को ट्रैक करने की सुविधा के लिए, रनटाइम may ऐप्लिकेशन को यह तय करने की सुविधा दे सकता है कि ट्रैक की गई इमेज स्थिर हैं या नहीं.
कॉन्फ़िगरेशन स्ट्रक्चर के ज़रिए रनटाइम को यह जानकारी देने से, जुड़ी हुई इकाइयों पर मौजूद कॉम्पोनेंट टाइप के सेट में बदलाव नहीं होना चाहिए. जैसे, ट्रैक की गई इमेज पर. हालांकि, रनटाइम, इमेज ट्रैकिंग की सुविधा की ट्रैकिंग क्षमताओं को ऑप्टिमाइज़ कर सकता है.उदाहरण के लिए, इमेज ट्रैकिंग की सुविधा की ट्रैकिंग क्षमताओं को ऑप्टिमाइज़ किया जा सकता है. इससे ऐप्लिकेशन को बेहतर अनुभव मिल सकता है.
ऐसी सुविधाओं को 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
यह सुविधा, आस-पास के एनवायरमेंट का सटीक 3D मॉडल ट्रैक करती है. इससे जुड़ा कॉन्फ़िगरेशन स्ट्रक्चर 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के कम होने पर ज़रूरी क्षमता है.capabilityFeatures, XrSpatialCapabilityFeatureEXT का कलेक्शन है . अगरcapabilityFeatureCapacityInputकी वैल्यू 0 है, तो इसकी वैल्यूNULLहो सकती है.- ज़रूरी
capabilityFeaturesका साइज़ पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ के पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, xrEnumerateSpatialCapabilityFeaturesEXT का इस्तेमाल करके, किसी सिस्टम के लिए XrSpatialCapabilityEXT की मदद से काम करने वाली सुविधाओं का पता लगाता है .
जिन क्षमताओं में सुविधाएं उपलब्ध हैं उनके लिए ऐप्लिकेशन, चालू करने के लिए सुविधा या सुविधाएं चुनता है. साथ ही, XrSpatialContextCreateInfoEXT :: capabilityConfigs में केपबिलिटी कॉन्फ़िगरेशन स्ट्रक्चर की अगली चेन में, उससे जुड़ा कॉन्फ़िगरेशन स्ट्रक्चर उपलब्ध कराता है.
अगर capability, xrEnumerateSpatialCapabilitiesEXT से तय की गई सुविधा नहीं है, तो रनटाइम को ज़रूर XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT दिखाना चाहिए .
रनटाइम को, स्पेशल ऑडियो की उन सुविधाओं को नहीं गिनना चाहिए जिनके एक्सटेंशन को instance के लिए चालू नहीं किया गया है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrEnumerateSpatialCapabilityFeaturesEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
instance, XrInstance का एक मान्य हैंडल होना चाहिए -
capabilityXrSpatialCapabilityEXT की मान्य वैल्यू होनी चाहिए -
capabilityFeatureCountOutput,uint32_tवैल्यू का पॉइंटर होना चाहिए - अगर
capabilityFeatureCapacityInput,0नहीं है, तोcapabilityFeatures,capabilityFeatureCapacityInputXrSpatialCapabilityFeatureEXT वैल्यू के ऐरे का पॉइंटरcapabilityFeaturesहोना चाहिए
रिटर्न कोड
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 दिखाना ज़रूरी है .
सिस्टम के संसाधनों का बेहतर तरीके से इस्तेमाल करने के लिए, रनटाइम may, XrSpatialContextCreateInfoEXT ऐरे में दिए गए कॉन्फ़िगरेशन का इस्तेमाल कर सकता है. इससे, आने वाले समय में स्पेस से जुड़े अनुरोधों के लिए खुद को तैयार किया जा सकता है. उदाहरण के लिए, अगर किसी रनटाइम में प्लेन ट्रैकिंग की सुविधा काम करती है, तो वह प्लेन ट्रैकिंग पाइपलाइन को सिर्फ़ तब शुरू कर सकता है, जब ऐप्लिकेशन ने प्लेन ट्रैकिंग की सुविधा वाला कोई स्पेशल कॉन्टेक्स्ट हैंडल बनाया हो. हालांकि, ऐसा ज़रूरी नहीं है. अगर कॉन्फ़िगर की गई सुविधाओं को वॉर्म-अप होने में ज़्यादा समय लगता है, तो xrCreateSpatialDiscoverySnapshotAsyncEXT को कॉल करने पर, ऐसा हो सकता है कि स्नैपशॉट खाली हो. ऐप्लिकेशन, xrCreateSpatialDiscoverySnapshotAsyncEXT का इस्तेमाल करने से पहले, XrEventDataSpatialDiscoveryRecommendedEXT के लिए इंतज़ार कर सकता है. इससे यह पक्का किया जा सकेगा कि ट्रैकिंग की बुनियादी सेवाएं शुरू हो गई हैं.
अगर कोई रनटाइम, XrSpatialContextEXT के लिए कॉन्फ़िगर की जा रही स्पेशल कैपेबिलिटी को ऐक्सेस करने के लिए, ऐप्लिकेशन पर अनुमति देने वाला सिस्टम लागू करता है, तो रनटाइम को XR_ERROR_PERMISSION_INSUFFICIENT वैल्यू ज़रूर दिखानी चाहिए. ऐसा तब होता है, जब इस ऐप्लिकेशन को वे अनुमतियां नहीं दी गई हों.
यह फ़ंक्शन , एसिंक्रोनस ऑपरेशन शुरू करता है और उससे जुड़ा XrFutureEXT बनाता है. इसका इस्तेमाल xrPollFutureEXT और इससे जुड़े फ़ंक्शन के साथ किया जा सकता है. इस फ़ंक्शन की रिटर्न वैल्यू से सिर्फ़ यह पता चलता है कि एसिंक्रोनस ऑपरेशन को शेड्यूल करने के लिए पैरामीटर स्वीकार किए गए थे या नहीं. इससे जुड़ा पूरा होने वाला फ़ंक्शन xrCreateSpatialContextCompleteEXT है. इसका इस्तेमाल तब किया जा सकता है, जब इस फ़ंक्शन से मिला फ़्यूचर, READY स्थिति में हो. साथ ही, इस फ़ंक्शन से मिले आउटपुट, XrCreateSpatialContextCompletionEXT स्ट्रक्चर में मौजूद हों.
मान्य इस्तेमाल (इंप्लिसिट)
- xrCreateSpatialContextAsyncEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
session, XrSession का एक मान्य हैंडल होना चाहिए -
createInfoXrSpatialContextCreateInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
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_FAILURE
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 -
nextmust beNULLor a valid pointer to the next structure in a structure chain . इन्हें भी देखें: XrSpatialContextPersistenceConfigEXT -
capabilityConfigsmust be a pointer to an array ofcapabilityConfigCountvalid XrSpatialCapabilityConfigurationBaseHeaderEXT -based structures. यह भी देखें: XrSpatialCapabilityConfigurationAnchorEXT , 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एक्सटेंशन को चालू करना ज़रूरी है -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो -
capabilityXrSpatialCapabilityEXT की मान्य वैल्यू होनी चाहिए -
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 का एक मान्य हैंडल होना चाहिए -
completionXrCreateSpatialContextCompletionEXT स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
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, xrCreateSpatialContextAsyncEXT ::createInfoमें मौजूद डेटा और कॉन्फ़िगरेशन का इस्तेमाल करके बनाया गया XrSpatialContextEXT है .
आने वाले समय में इस्तेमाल किए जाने वाले रिटर्न कोड
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 के लाइफ़साइकल के दौरान या ऐप्लिकेशन के spatialContext को xrDestroySpatialContextEXT से डिस्ट्रॉय करने तक मान्य रहता है. इनमें से जो भी पहले होगा , spatialContext तब तक मान्य रहेगा.
मान्य इस्तेमाल (इंप्लिसिट)
- XrCreateSpatialContextCompletionEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी है किXR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXT -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो -
futureResultmust be a valid XrResult value - अगर
spatialContext, XR_NULL_HANDLE नहीं है, तोspatialContext, XrSpatialContextEXT का मान्य हैंडल होना चाहिए
स्पेशल कॉन्टेक्स्ट को मिटाएं
xrDestroySpatialContextEXT फ़ंक्शन को इस तरह परिभाषित किया गया है:
XrResult xrDestroySpatialContextEXT(
XrSpatialContextEXT spatialContext);
पैरामीटर की जानकारी
spatialContextएक XrSpatialContextEXT है, जिसे पहले xrCreateSpatialContextAsyncEXT ने बनाया था .
स्पेशल एंटिटी की खोज और अपडेट करने के टास्क पूरे होने के बाद, ऐप्लिकेशन spatialContext हैंडल और उससे जुड़े संसाधनों को रिलीज़ करने के लिए, xrDestroySpatialContextEXT फ़ंक्शन को कॉल कर सकता है. अगर spatialContext के जैसी ही स्पेशल क्षमताएं रखने वाला कोई अन्य मान्य XrSpatialContextEXT नहीं है, तो यह कॉल, रनटाइम को यह सुझाव देता है कि वह उन क्षमताओं के लिए ज़रूरी ट्रैकिंग सेवाओं को बंद कर दे, ताकि सिस्टम के संसाधनों को बचाया जा सके.
मान्य इस्तेमाल (इंप्लिसिट)
- xrDestroySpatialContextEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
spatialContextएक मान्य XrSpatialContextEXT हैंडल होना चाहिए
थ्रेड सेफ़्टी
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 हैंडल, किसी स्पैटियल एंटिटी को दिखाता है. कोई ऐप्लिकेशन, रनटाइम के दौरान किसी खास इकाई में अपनी दिलचस्पी दिखाने के लिए, इस तरह का हैंडल बना सकता है.
आईडी से SpatialEntityHandle बनाएं
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 स्ट्रक्चर का पॉइंटर होना चाहिए -
spatialEntityXrSpatialEntityEXT हैंडल का पॉइंटर होना चाहिए
रिटर्न कोड
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 -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो
स्पेशल एंटिटी हैंडल को डिस्ट्रॉय करना
xrDestroySpatialEntityEXT फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrDestroySpatialEntityEXT(
XrSpatialEntityEXT spatialEntity);
पैरामीटर की जानकारी
spatialEntity, XrSpatialEntityEXT का हैंडल है. इसे पहले xrCreateSpatialEntityFromIdEXT जैसे फ़ंक्शन ने बनाया था.
जब ऐप्लिकेशन को इस हैंडल से रेफ़र की गई इकाई में दिलचस्पी नहीं रहती है, तब वह spatialEntity हैंडल को रिलीज़ करने के लिए xrDestroySpatialEntityEXT का इस्तेमाल कर सकता है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrDestroySpatialEntityEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
spatialEntityएक मान्य XrSpatialEntityEXT हैंडल होना चाहिए
थ्रेड सेफ़्टी
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 की वैल्यू false है, तो रनटाइम ऐसा कर सकता है: या तो वह एक ऐसा 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 हैंडल होना चाहिए -
createInfoXrSpatialDiscoverySnapshotCreateInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
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 -
nextmust beNULLor a valid pointer to the next structure in a structure chain . यह भी देखें: XrSpatialBoundsBoxfANDROID , XrSpatialBoundsFrustumfANDROID , XrSpatialBoundsSpherefANDROID , 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 हैंडल होना चाहिए -
createSnapshotCompletionInfoXrCreateSpatialDiscoverySnapshotCompletionInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
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 -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो -
baseSpaceमान्य XrSpace हैंडल होना चाहिए
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 -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो -
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 के पूरे लाइफ़टाइम में कोई भी इकाई नहीं मिलती है, तो रनटाइम may इस इवेंट को XrSpatialContextEXT के लिए कभी भी कतार में न रखने का विकल्प चुन सकता है .
रनटाइम को, spatialContext के लिए इस इवेंट को तब तक कतार में नहीं रखना चाहिए, जब तक ऐप्लिकेशन xrCreateSpatialContextCompleteEXT का इस्तेमाल करके इसे नहीं बना लेता.
ऐप्लिकेशन के xrDestroySpatialContextEXT को कॉल करने के बाद, रनटाइम को उस स्पैटियल कॉन्टेक्स्ट के लिए, खोज के सुझाव वाले किसी भी इवेंट को कतार में नहीं लगाना चाहिए. साथ ही, xrPollEvent से उस कॉन्टेक्स्ट के लिए, ऐसे किसी भी इवेंट को वापस नहीं भेजना चाहिए.
मान्य इस्तेमाल (इंप्लिसिट)
- XrEventDataSpatialDiscoveryRecommendedEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी है किXR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो
क्वेरी कॉम्पोनेंट का डेटा
xrQuerySpatialComponentDataEXT फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrQuerySpatialComponentDataEXT(
XrSpatialSnapshotEXT snapshot,
const XrSpatialComponentDataQueryConditionEXT* queryCondition,
XrSpatialComponentDataQueryResultEXT* queryResult);
पैरामीटर की जानकारी
snapshotएक XrSpatialSnapshotEXT है, जिसे पहले xrCreateSpatialDiscoverySnapshotCompleteEXT या xrCreateSpatialUpdateSnapshotEXT ने उपलब्ध कराया था .queryCondition, XrSpatialComponentDataQueryConditionEXT स्ट्रक्चर का पॉइंटर है.queryResult, XrSpatialComponentDataQueryResultEXT स्ट्रक्चर का पॉइंटर है.
ऐप्लिकेशन, स्नैपशॉट में मौजूद इकाइयों के कॉम्पोनेंट डेटा के बारे में क्वेरी करने के लिए, xrQuerySpatialComponentDataEXT का इस्तेमाल कर सकता है. इसके लिए, उसे XrSpatialComponentDataQueryResultEXT :: next में एक सूची स्ट्रक्चर जोड़ना होगा. यह सूची स्ट्रक्चर, XrSpatialComponentDataQueryConditionEXT :: componentTypes में मौजूद हर XrSpatialComponentTypeEXT से मेल खाता है.
अगर ऐप्लिकेशन, XrSpatialComponentDataQueryResultEXT :: next से एक सूची स्ट्रक्चर अटैच करता है, जो XrSpatialComponentDataQueryConditionEXT :: componentTypes में दी गई सूची में मौजूद किसी भी कॉम्पोनेंट से मेल नहीं खाता है, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना ज़रूरी है .
ऐप्लिकेशन, XrSpatialComponentDataQueryConditionEXT :: componentTypes में दी गई कॉम्पोनेंट की सूची के सिर्फ़ सबसेट से जुड़े लिस्ट स्ट्रक्चर अटैच करने का विकल्प चुन सकता है . अगर ऐप्लिकेशन को सिर्फ़ उन स्पैटियल इकाइयों के आईडी और ट्रैकिंग की स्थिति के बारे में जानना है जो queryCondition की शर्तों को पूरा करती हैं, तो वह सूची के स्ट्रक्चर को पूरी तरह से हटाने का विकल्प चुन सकता है . रनटाइम को XrSpatialComponentDataQueryResultEXT :: next चेन में सूची के स्ट्रक्चर मौजूद न होने पर, इसे गड़बड़ी के तौर पर नहीं मानना चाहिए.
अगर XrEventDataReferenceSpaceChangePending को कतार में रखा गया है और ऐप्लिकेशन, XrSpatialSnapshotEXT से कॉम्पोनेंट डेटा क्वेरी कर रहा है, तो XrEventDataReferenceSpaceChangePending :: changeTime बीत चुका है. ऐसे में, ऐप्लिकेशन पोज़ को अडजस्ट करने के लिए इवेंट डेटा का इस्तेमाल कर सकता है.
रनटाइम को 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एक्सटेंशन को चालू करना ज़रूरी है -
snapshotmust be a valid XrSpatialSnapshotEXT handle -
queryConditionXrSpatialComponentDataQueryConditionEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
queryResultXrSpatialComponentDataQueryResultEXT स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
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 वापस मिलेंगी. साथ ही, ऐप्लिकेशन XrSpatialComponentBounded2DListEXT स्ट्रक्चर के हिस्से के तौर पर, XrSpatialBounded2DDataEXT का एक ऐरे अटैच कर सकता है. ऐसा, XrSpatialComponentDataQueryResultEXT की अगली चेन में, bounded2D डेटा पाने के लिए किया जाता है.
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... टेक्स्ट, SVG फ़ॉर्मैट में नहीं है. इसलिए, इसे नहीं दिखाया जा सकता
इमेज 21. क्वेरी के नतीजे का उदाहरण
ऊपर दिए गए स्नैपशॉट में, क्वेरी की शर्त में शामिल XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT और XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT कॉम्पोनेंट के साथ xrQuerySpatialComponentDataEXT का इस्तेमाल करने पर, ऐप्लिकेशन को इकाई #3 और #4 वापस मिलेंगी. साथ ही, ऐप्लिकेशन कॉम्पोनेंट का डेटा पाने के लिए, XrSpatialComponentBounded3DListEXT और XrSpatialComponentMesh3DListEXT स्ट्रक्चर के हिस्से के तौर पर, XrBoxf और XrSpatialMeshDataEXT के ऐरे अटैच कर सकता है. इसके बाद, XrSpatialComponentDataQueryResultEXT की अगली चेन का इस्तेमाल किया जा सकता है.
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 -
nextmust beNULLor a valid pointer to the next structure in a structure chain . यह भी देखें: 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 हैंडल बना सकता है जिनके बारे में उसे नियमित अपडेट चाहिए. इसके बाद, ऐप्लिकेशन xrCreateSpatialUpdateSnapshotEXT के साथ इन XrSpatialEntityEXT हैंडल का इस्तेमाल करके, अपडेट स्नैपशॉट बना सकता है. इस स्नैपशॉट में, दी गई इकाइयों के कॉम्पोनेंट का रनटाइम का सबसे नया डेटा होता है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrSpatialComponentDataQueryResultEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी है किXR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT -
nextmust beNULLor a valid pointer to the next structure in a structure chain . यह भी देखें: XrSpatialComponentAnchorListEXT , XrSpatialComponentAnnotationQuadListANDROID , XrSpatialComponentBounded2DListEXT , XrSpatialComponentBounded3DListEXT , XrSpatialComponentConfidenceListANDROIDSYS , XrSpatialComponentImage2DListEXT , XrSpatialComponentKeyboardSemanticLabelListEXT , XrSpatialComponentMarkerListEXT , XrSpatialComponentMaterialTypeListANDROIDSYS , XrSpatialComponentMesh2DListEXT , XrSpatialComponentMesh3DListEXT , XrSpatialComponentMesh3DNormalsListEXT , XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT , XrSpatialComponentMesh3DVertexSemanticLabelsListEXT , XrSpatialComponentMouseSemanticLabelListEXT , XrSpatialComponentObjectSemanticLabelListANDROID , XrSpatialComponentObjectSemanticLabelListEXT , XrSpatialComponentOccupancyGridListANDROIDX1 , XrSpatialComponentParentListEXT , XrSpatialComponentPersistenceListEXT , 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 की जानकारी
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 का इस्तेमाल करके, किसी स्पेशल एंटिटी के कॉम्पोनेंट डेटा को क्वेरी करते समय, अगर एंटिटी की स्थिति
XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXTहै, तो रनटाइम को XrSpatialComponentDataQueryResultEXT की अगली चेन में, ऐप्लिकेशन की ओर से दिए गए बफ़र के कॉन्टेंट में मान्य डेटा सेट करना ज़रूरी है . अगर इकाई की स्थिति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 के तौर पर दिखाया गया है.
गिनती की गई वैल्यू की जानकारी
XR_SPATIAL_BUFFER_TYPE_STRING_EXT. स्ट्रिंग बफ़र पाने के लिए,XrSpatialBufferIdEXTcan को xrGetSpatialBufferStringEXT में पास किया जा सकता है.XR_SPATIAL_BUFFER_TYPE_UINT8_EXT.uint8_tबफ़र को वापस पाने के लिए,XrSpatialBufferIdEXTको xrGetSpatialBufferUint8EXT में पास किया जा सकता है.XR_SPATIAL_BUFFER_TYPE_UINT16_EXT.uint16_tबफ़र पाने के लिए,XrSpatialBufferIdEXTको xrGetSpatialBufferUint16EXT में पास किया जा सकता है.XR_SPATIAL_BUFFER_TYPE_UINT32_EXT.uint32_tबफ़र को वापस पाने के लिए,XrSpatialBufferIdEXTको xrGetSpatialBufferUint32EXT में पास किया जा सकता है.XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT.floatबफ़र वापस पाने के लिए,XrSpatialBufferIdEXTको xrGetSpatialBufferFloatEXT में पास किया जा सकता है.XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT. XrVector2f बफ़र पाने के लिए,XrSpatialBufferIdEXTको xrGetSpatialBufferVector2fEXT में पास किया जा सकता है.XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT. XrVector3f बफ़र वापस पाने के लिए,XrSpatialBufferIdEXTको xrGetSpatialBufferVector3fEXT में पास किया जा सकता है.
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एक्सटेंशन को चालू करना ज़रूरी है -
snapshotmust be a valid XrSpatialSnapshotEXT handle -
infoXrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
bufferCountOutput,uint32_tवैल्यू का पॉइंटर होना चाहिए - अगर
bufferCapacityInput,0नहीं है, तोbuffer,bufferCapacityInputchar वैल्यू की किसी ऐरे का पॉइंटर होना चाहिए
रिटर्न कोड
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एक्सटेंशन को चालू करना ज़रूरी है -
snapshotmust be a valid XrSpatialSnapshotEXT handle -
infoXrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
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 का डेटा पा सकता है. इसमें XrSpatialBufferEXT :: bufferType को XR_SPATIAL_BUFFER_TYPE_UINT16_EXT किया जाता है. इसके लिए, xrGetSpatialBufferUint16EXT का इस्तेमाल किया जाता है.
अगर 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एक्सटेंशन को चालू करना ज़रूरी है -
snapshotmust be a valid XrSpatialSnapshotEXT handle -
infoXrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
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 का डेटा पा सकता है. इसमें XrSpatialBufferEXT :: bufferType को XR_SPATIAL_BUFFER_TYPE_UINT32_EXT किया जाता है. इसके लिए, xrGetSpatialBufferUint32EXT का इस्तेमाल किया जाता है.
अगर 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एक्सटेंशन को चालू करना ज़रूरी है -
snapshotmust be a valid XrSpatialSnapshotEXT handle -
infoXrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
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 का डेटा पा सकता है. इसमें XrSpatialBufferEXT :: bufferType को XR_SPATIAL_BUFFER_TYPE_FLOAT_EXT किया जाता है. इसके लिए, xrGetSpatialBufferFloatEXT का इस्तेमाल किया जाता है.
अगर 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एक्सटेंशन को चालू करना ज़रूरी है -
snapshotmust be a valid XrSpatialSnapshotEXT handle -
infoXrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
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एक्सटेंशन को चालू करना ज़रूरी है -
snapshotmust be a valid XrSpatialSnapshotEXT handle -
infoXrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
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एक्सटेंशन को चालू करना ज़रूरी है -
snapshotmust be a valid XrSpatialSnapshotEXT handle -
infoXrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
bufferCountOutput,uint32_tवैल्यू का पॉइंटर होना चाहिए - अगर
bufferCapacityInput0नहीं है , तो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 -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो
#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 हैंडल होना चाहिए -
createInfoXrSpatialUpdateSnapshotCreateInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
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 -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो -
entitiesmust be a pointer to an array ofentityCountvalid XrSpatialEntityEXT handles - अगर
componentTypeCount,0नहीं है, तोcomponentTypes,componentTypeCountमान्य XrSpatialComponentTypeEXT वैल्यू के ऐरे का पॉइंटर होना चाहिए -
baseSpaceमान्य XrSpace हैंडल होना चाहिए -
entityCountपैरामीटर की वैल्यू,0से ज़्यादा होनी चाहिए -
baseSpaceऔरentitiesके एलिमेंट, दोनों को एक ही XrSession से बनाया, असाइन किया या वापस पाया गया होना चाहिए
स्नैपशॉट मिटाना
xrDestroySpatialSnapshotEXT फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrDestroySpatialSnapshotEXT(
XrSpatialSnapshotEXT snapshot);
पैरामीटर की जानकारी
snapshotएक XrSpatialSnapshotEXT है, जिसे पहले xrCreateSpatialDiscoverySnapshotCompleteEXT या xrCreateSpatialUpdateSnapshotEXT ने उपलब्ध कराया था .
ऐप्लिकेशन, XrSpatialSnapshotEXT हैंडल और उससे जुड़े संसाधनों को डिस्ट्रॉय करने के लिए, xrDestroySpatialSnapshotEXT को कॉल कर सकता है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrDestroySpatialSnapshotEXT को कॉल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
snapshotmust be a valid XrSpatialSnapshotEXT handle
थ्रेड सेफ़्टी
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पर केंद्रित हैं.
extents के XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT, समतल के कोऑर्डिनेट सिस्टम के x-y प्लेन में इकाई के साइज़ को दिखाते हैं. {0, 0, 0} पोज़िशन, {0, 0, 0, 1} रोटेशन (कोई रोटेशन नहीं), और {1, 1} साइज़ वाला एक प्लेन, 1 मीटर x 1 मीटर के ऐसे प्लेन को दिखाता है जो {0, 0, 0} पर सेंटर किया गया है. साथ ही, इसका फ़्रंट फ़ेस नॉर्मल वेक्टर, कॉम्पोनेंट के स्पेस में +Z दिशा की ओर पॉइंट करता है.
X X Y Y Z Z Height Height Y Y Z Z X X Vertical plane Vertical plane Horizontal Plane Horizontal Plane Width Width Width Width Height Height
इमेज 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 की अगली चेन में है, लेकिन XrSpatialComponentDataQueryConditionEXT ::componentTypeCount शून्य नहीं है और XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes में शामिल नहीं है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_VALIDATION_FAILURE वापस लाना ज़रूरी है .
अगर 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 -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो -
bounds,boundCountXrSpatialBounded2DDataEXT स्ट्रक्चर के ऐरे का पॉइंटर होना चाहिए -
boundCountपैरामीटर की वैल्यू,0से ज़्यादा होनी चाहिए
कॉन्फ़िगरेशन
अगर किसी सुविधा के लिए, XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT को XrSpatialCapabilityComponentTypesEXT :: componentTypes में गिना जाता है, तो ऐप्लिकेशन 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 की अगली चेन में है, लेकिन XrSpatialComponentDataQueryConditionEXT ::componentTypeCount शून्य नहीं है और XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes में शामिल नहीं है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_VALIDATION_FAILURE वापस लाना ज़रूरी है .
अगर boundCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput से कम है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_SIZE_INSUFFICIENT ज़रूर लौटाना चाहिए .
अगर xrQuerySpatialComponentDataEXT :: snapshot को xrCreateSpatialDiscoverySnapshotCompleteEXT से बनाया गया था , तो रनटाइम को XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: baseSpace में XrBoxf :: center को XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: time पर ज़रूर देना चाहिए .
अगर xrQuerySpatialComponentDataEXT :: snapshot को xrCreateSpatialUpdateSnapshotEXT से बनाया गया था , तो रनटाइम को XrSpatialUpdateSnapshotCreateInfoEXT :: baseSpace में XrBoxf :: center XrSpatialUpdateSnapshotCreateInfoEXT :: time पर ज़रूर देना होगा .
मान्य इस्तेमाल (इंप्लिसिट)
- XrSpatialComponentBounded3DListEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी है किXR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXT -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो -
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 की अगली चेन में है, लेकिन XrSpatialComponentDataQueryConditionEXT ::componentTypeCount शून्य नहीं है और XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes में शामिल नहीं है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_VALIDATION_FAILURE वापस लाना ज़रूरी है .
अगर parentCount, XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput से कम है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_SIZE_INSUFFICIENT ज़रूर लौटाना चाहिए .
मान्य इस्तेमाल (इंप्लिसिट)
- XrSpatialComponentParentListEXT का इस्तेमाल करने से पहले,
XR_EXT_spatial_entityएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी है किXR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXT -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो -
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एक्सटेंशन को चालू करना ज़रूरी है -
vertexBuffermust be a valid XrSpatialBufferEXT structure -
indexBuffermust be a valid XrSpatialBufferEXT structure
डेटा के बारे में क्वेरी करने के लिए कॉम्पोनेंट की सूची का स्ट्रक्चर
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 की अगली चेन में है, लेकिन XrSpatialComponentDataQueryConditionEXT ::componentTypeCount शून्य नहीं है और XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT, XrSpatialComponentDataQueryConditionEXT :: componentTypes में शामिल नहीं है, तो रनटाइम को xrQuerySpatialComponentDataEXT से XR_ERROR_VALIDATION_FAILURE वापस मिलनी चाहिए .
अगर 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 -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो -
meshes,meshCountXrSpatialMeshDataEXT स्ट्रक्चर के ऐरे का पॉइंटर होना चाहिए -
meshCountपैरामीटर की वैल्यू,0से ज़्यादा होनी चाहिए
कॉन्फ़िगरेशन
अगर किसी सुविधा के लिए XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT को XrSpatialCapabilityComponentTypesEXT :: componentTypes में शामिल किया गया है, तो ऐप्लिकेशन इसे चालू कर सकता है. इसके लिए, उसे इस enum को XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents की सूची में शामिल करना होगा. यह सूची, इस कॉम्पोनेंट के साथ काम करने वाली सुविधा के 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 -
nextज़रूरी है किNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो -
trackingStateXrSpatialEntityTrackingStateEXT की मान्य वैल्यू होनी चाहिए
कोड का उदाहरण
ऐप्लिकेशन का इस्तेमाल
आम तौर पर, ऐप्लिकेशन इस पैटर्न में स्पैटियल एंटिटी एक्सटेंशन का इस्तेमाल करते हैं:
- कोई ऐप्लिकेशन, 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 की सूची भी दी गई होनी चाहिए. रनटाइम को, इस सूची में शामिल XrSpatialComponentTypeEXT को इकाइयों पर देना होगा, ताकि वे इस सुविधा का इस्तेमाल कर सकें.
- इसमें XrSpatialCapabilityConfigurationBaseHeaderEXT से लिए गए स्ट्रक्चर भी ज़रूर होने चाहिए. इससे उस सुविधा को कॉन्फ़िगर किया जा सकेगा.
अगर कोई एक्सटेंशन, नया XrSpatialCapabilityFeatureEXT तय करता है, तो उसे इससे जुड़ा कॉन्फ़िगरेशन स्ट्रक्चर भी तय करना होगा. इसे XrSpatialCapabilityConfigurationBaseHeaderEXT के अगले पॉइंटर से जोड़ा जा सकता है. ऐप्लिकेशन, XrSpatialContextEXT बनाते समय इस कॉन्फ़िगरेशन स्ट्रक्चर का इस्तेमाल करके सुविधा चालू कर सकता है.
नई XrSpatialCapabilityEXT तय करने वाले एक्सटेंशन को, खास जानकारी के लिए इस टेंप्लेट का पालन करना चाहिए -
- खास जानकारी
- रनटाइम की सुविधा
- कॉन्फ़िगरेशन
- गारंटी वाले कॉम्पोनेंट
- कोड का उदाहरण
नई XrSpatialComponentTypeEXT तय करने वाले एक्सटेंशन को, खास जानकारी के लिए इस टेंप्लेट का पालन करना चाहिए -
- कॉम्पोनेंट का डेटा
- डेटा के बारे में क्वेरी करने के लिए कॉम्पोनेंट की सूची का स्ट्रक्चर
- कॉन्फ़िगरेशन
ऐसी एपीआई लिखते समय जो ऐप्लिकेशन को
XrSpatialBufferIdEXTउपलब्ध कराती है, उसके साथ XrSpatialBufferTypeEXT ज़रूर होना चाहिए. इससे ऐप्लिकेशन को पता चलता है कि बफ़र का डेटा टाइप क्या है. साथ ही, ऐप्लिकेशन बफ़र के असली कॉन्टेंट को पाने के लिए, सहीxrGetSpatialBuffer*फ़ंक्शन का इस्तेमाल कर सकता है.
सिमैंटिक लेबल डिज़ाइन और एक्सटेंशन से जुड़े दिशा-निर्देश
यह एक्सटेंशन, किसी इकाई के सिमैंटिक लेबल की जानकारी देने के लिए कोई कॉम्पोनेंट तय नहीं करता है. हालांकि, यह ऐसे एक्सटेंशन के लिए डिज़ाइन के नियम और दिशा-निर्देश तय करता है जो इस तरह के कॉम्पोनेंट को तय करते हैं. यहां दिए गए टेक्स्ट में, " should " और " must " का इस्तेमाल, इस तरह की सुविधा के लेखकों के लिए किया गया है. इसका इस्तेमाल, एपीआई का इस्तेमाल करने वाले किसी ऐप्लिकेशन या रनटाइम लागू करने के लिए नहीं किया गया है.
- अगर कोई एक्सटेंशन, किसी XrSpatialCapabilityEXT के लिए सिमैंटिक लेबल तय कर रहा है, तो उसे ऐसा ज़रूर करना चाहिए. इसके लिए, उसे एक नया XrSpatialComponentTypeEXT तय करना होगा. साथ ही, लेबल के सेट (एक "सिमैंटिक लेबल सेट") के साथ एक नया इन्यूमरेशन तय करना होगा, ताकि वह कॉम्पोनेंट के लिए डेटा बन सके.
- सिमैंटिक लेबल सेट दिखाने वाले इन्यूमरेशन में, यह बताने के लिए कोई वैल्यू ज़रूर होनी चाहिए कि इकाई को इस सेट के किसी भी लेबल में कैटगरी में नहीं रखा गया है. इस एन्यूमरेंट के नाम में 'UNCATEGORIZED' शामिल होना ज़रूरी है. उदाहरण के लिए,
XR_SPATIAL_PLANE_SEMANTIC_LABEL_UNCATEGORIZED_EXT. इस वैल्यू से ऐप्लिकेशन को पता चलता है कि रनटाइम इस इकाई को पहचानता है. हालांकि, ऐसे अन्य सिमैंटिक लेबल सेट भी हैं जिनमें इस इकाई को कैटगरी में रखा गया है. - xrEnumerateSpatialCapabilityComponentTypesEXT में, नई तरह से तय किए गए XrSpatialComponentTypeEXT की गिनती करने का मतलब है कि रनटाइम, उस कॉम्पोनेंट टाइप से जुड़े सिमैंटिक लेबल सेट (और इसलिए सेट में तय किए गए लेबल) के साथ काम करता है.
- ऐप्लिकेशन, इस सिमैंटिक लेबल सेट से जुड़े लेबल वाली इकाइयों को खोजने की इच्छा ज़ाहिर करते हैं. इसके लिए, वे XrSpatialCapabilityConfigurationBaseHeaderEXT ::
enabledComponentsऐरे में, उससे जुड़ा XrSpatialComponentTypeEXT शामिल करते हैं. यह ऐरे, उस सुविधा के कॉन्फ़िगरेशन स्ट्रक्चर का होता है जिसके लिए कॉम्पोनेंट टाइप को गिना जाता है. - ऐसा हो सकता है कि किसी एक स्पैटियल एंटिटी में कई कॉम्पोनेंट हों. इनमें से हर कॉम्पोनेंट, अपने सिमैंटिक लेबल सेट से एंटिटी को लेबल देता है. यहां कुछ काल्पनिक सिमैंटिक लेबल सेट -
XrSpatialObjectSemanticLabelका उदाहरण दिया गया है. इनकी वैल्यू कुर्सी, सोफ़ा, टेबल वगैरह हो सकती हैं,XrSpatialSofaBrand, जिसकी वैल्यू IKEA, Wayfair वगैरह हो सकती है. साथ ही,XrSpatialIkeaSofa, जिसकी वैल्यू सोफ़ों के IKEA के मॉडल के नाम हो सकते हैं. इस उदाहरण में, एक ही सोफ़ा इकाई में तीनों कॉम्पोनेंट (तीनों सिमैंटिक लेबल सेट से मिले लेबल) मौजूद हैं. इनमें से हर कॉम्पोनेंट, इकाई के बारे में अलग-अलग लेवल की जानकारी देता है. - अगर कोई एक्सटेंशन, नया XrSpatialComponentTypeEXT तय कर रहा है, तो एक्सटेंशन को XrSpatialCapabilityFeatureEXT तय करने पर विचार करना चाहिए. यह नया
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;
ऊपर दिए गए उदाहरण पर विचार करें, जहां एक एक्सटेंशन, दरवाज़ों और खिड़कियों को दिखाने वाली वैल्यू के साथ मौजूदा XrSpatialPlaneSemanticLabelEXT को बढ़ाने के लिए, XrSpatialExamplePlaneSemanticLabelExtensionEXT की गिनती तय करता है. नए इन्यूमरेशन के लिए, खास जानकारी में इस फ़ॉर्म के लिए टेक्स्ट शामिल करना ज़रूरी है -
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 को बढ़ाना :
नए एनम
- 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)
- एक्सटेंशन की शुरुआती जानकारी