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, capabilityCapacityInput XrSpatialCapabilityEXT वैल्यू की एक सरणी का पॉइंटर होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SYSTEM_INVALID
  • XR_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 के लिए चालू नहीं हैं .

मान्य इस्तेमाल (इंप्लिसिट)

रिटर्न कोड

सफल

  • XR_SUCCESS

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
  • XR_ERROR_SYSTEM_INVALID
  • XR_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 का साइज़ पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ के पैरामीटर सेक्शन देखें.

मान्य इस्तेमाल (इंप्लिसिट)

स्पेशल कैपबिलिटी की सुविधाएं

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 का एक मान्य हैंडल होना चाहिए
  • capability XrSpatialCapabilityEXT की मान्य वैल्यू होनी चाहिए
  • capabilityFeatureCountOutput, uint32_t वैल्यू का पॉइंटर होना चाहिए
  • अगर capabilityFeatureCapacityInput, 0 नहीं है, तो capabilityFeatures, capabilityFeatureCapacityInput XrSpatialCapabilityFeatureEXT वैल्यू के ऐरे का पॉइंटर capabilityFeatures होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
  • XR_ERROR_SYSTEM_INVALID
  • XR_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 का एक मान्य हैंडल होना चाहिए
  • createInfo XrSpatialContextCreateInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
  • future, XrFutureEXT वैल्यू का पॉइंटर होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_PERMISSION_INSUFFICIENT
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT
  • XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
  • XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT
  • XR_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 हैंडल बनाने के लिए ज़रूरी जानकारी के बारे में बताता है.

मान्य इस्तेमाल (इंप्लिसिट)

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 वैल्यू ज़रूर दिखानी चाहिए .

मान्य इस्तेमाल (इंप्लिसिट)

xrCreateSpatialContextCompleteEXT फ़ंक्शन को इस तरह से परिभाषित किया गया है:

XrResult xrCreateSpatialContextCompleteEXT(
    XrSession                                   session,
    XrFutureEXT                                 future,
    XrCreateSpatialContextCompletionEXT*        completion);

पैरामीटर की जानकारी

xrCreateSpatialContextCompleteEXT, xrCreateSpatialContextAsyncEXT से शुरू होने वाले एसिंक्रोनस ऑपरेशन को पूरा करता है . अगर future तैयार नहीं है, तो रनटाइम को XR_ERROR_FUTURE_PENDING_EXT दिखाना ज़रूरी है. अगर future पहले ही पूरा हो चुका है या रद्द कर दिया गया है, तो रनटाइम को XR_ERROR_FUTURE_INVALID_EXT वैल्यू ज़रूर दिखानी चाहिए.

मान्य इस्तेमाल (इंप्लिसिट)

  • xrCreateSpatialContextCompleteEXT को कॉल करने से पहले, XR_EXT_spatial_entity एक्सटेंशन को चालू करना ज़रूरी है
  • session, XrSession का एक मान्य हैंडल होना चाहिए
  • completion XrCreateSpatialContextCompletionEXT स्ट्रक्चर का पॉइंटर होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_FUTURE_INVALID_EXT
  • XR_ERROR_FUTURE_PENDING_EXT
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_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_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT

अगर futureResult एक सक्सेस कोड है, तो spatialContext मान्य होना चाहिए. अगर spatialContext मान्य है, तो यह सिर्फ़ xrCreateSpatialContextAsyncEXT :: session के लाइफ़साइकल के दौरान या ऐप्लिकेशन के spatialContext को xrDestroySpatialContextEXT से डिस्ट्रॉय करने तक मान्य रहता है. इनमें से जो भी पहले होगा , spatialContext तब तक मान्य रहेगा.

मान्य इस्तेमाल (इंप्लिसिट)

स्पेशल कॉन्टेक्स्ट को मिटाएं

xrDestroySpatialContextEXT फ़ंक्शन को इस तरह परिभाषित किया गया है:

XrResult xrDestroySpatialContextEXT(
    XrSpatialContextEXT                         spatialContext);

पैरामीटर की जानकारी

स्पेशल एंटिटी की खोज और अपडेट करने के टास्क पूरे होने के बाद, ऐप्लिकेशन spatialContext हैंडल और उससे जुड़े संसाधनों को रिलीज़ करने के लिए, xrDestroySpatialContextEXT फ़ंक्शन को कॉल कर सकता है. अगर spatialContext के जैसी ही स्पेशल क्षमताएं रखने वाला कोई अन्य मान्य XrSpatialContextEXT नहीं है, तो यह कॉल, रनटाइम को यह सुझाव देता है कि वह उन क्षमताओं के लिए ज़रूरी ट्रैकिंग सेवाओं को बंद कर दे, ताकि सिस्टम के संसाधनों को बचाया जा सके.

मान्य इस्तेमाल (इंप्लिसिट)

  • xrDestroySpatialContextEXT को कॉल करने से पहले, XR_EXT_spatial_entity एक्सटेंशन को चालू करना ज़रूरी है
  • spatialContext एक मान्य XrSpatialContextEXT हैंडल होना चाहिए

थ्रेड सेफ़्टी

  • spatialContext और बच्चों के सभी हैंडल को बाहरी तौर पर सिंक किया जाना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_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);

पैरामीटर की जानकारी

ऐप्लिकेशन, XrSpatialEntityEXT हैंडल बनाने के लिए xrCreateSpatialEntityFromIdEXT का इस्तेमाल कर सकता है. यह हैंडल, उपयोगकर्ता के एनवायरमेंट में मौजूद किसी इकाई का रेफ़रंस होता है.

अगर XrSpatialEntityFromIdCreateInfoEXT :: entityId, spatialContext के लिए मान्य आईडी नहीं है, तो रनटाइम को XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT दिखाना ज़रूरी है .

मान्य इस्तेमाल (इंप्लिसिट)

  • xrCreateSpatialEntityFromIdEXT को कॉल करने से पहले, XR_EXT_spatial_entity एक्सटेंशन को चालू करना ज़रूरी है
  • spatialContext एक मान्य XrSpatialContextEXT हैंडल होना चाहिए
  • createInfo एक मान्य XrSpatialEntityFromIdCreateInfoEXT स्ट्रक्चर का पॉइंटर होना चाहिए
  • spatialEntity XrSpatialEntityEXT हैंडल का पॉइंटर होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

XrSpatialEntityFromIdCreateInfoEXT स्ट्रक्चर को इस तरह से परिभाषित किया गया है:

typedef struct XrSpatialEntityFromIdCreateInfoEXT {
    XrStructureType         type;
    const void*             next;
    XrSpatialEntityIdEXT    entityId;
} XrSpatialEntityFromIdCreateInfoEXT;

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

  • type इस स्ट्रक्चर का XrStructureType है.
  • next, NULL होता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है. इस तरह के स्ट्रक्चर, OpenXR के मुख्य स्पेसिफ़िकेशन या इस एक्सटेंशन में तय नहीं किए गए हैं.
  • entityId, उस इकाई का XrSpatialEntityIdEXT है जिसके लिए ऐप्लिकेशन को हैंडल बनाना है.

मान्य इस्तेमाल (इंप्लिसिट)

स्पेशल एंटिटी हैंडल को डिस्ट्रॉय करना

xrDestroySpatialEntityEXT फ़ंक्शन को इस तरह से परिभाषित किया गया है:

XrResult xrDestroySpatialEntityEXT(
    XrSpatialEntityEXT                          spatialEntity);

पैरामीटर की जानकारी

जब ऐप्लिकेशन को इस हैंडल से रेफ़र की गई इकाई में दिलचस्पी नहीं रहती है, तब वह spatialEntity हैंडल को रिलीज़ करने के लिए xrDestroySpatialEntityEXT का इस्तेमाल कर सकता है.

मान्य इस्तेमाल (इंप्लिसिट)

  • xrDestroySpatialEntityEXT को कॉल करने से पहले, XR_EXT_spatial_entity एक्सटेंशन को चालू करना ज़रूरी है
  • spatialEntity एक मान्य XrSpatialEntityEXT हैंडल होना चाहिए

थ्रेड सेफ़्टी

  • spatialEntity और बच्चों के सभी हैंडल को बाहरी तौर पर सिंक किया जाना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

स्पेशल स्नैपशॉट

XR_DEFINE_HANDLE(XrSpatialSnapshotEXT)

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

ऐप्लिकेशन, जितने चाहें उतने स्नैपशॉट बना सकता है. हालांकि, उसे हर नए स्नैपशॉट के लिए मेमोरी का ध्यान रखना होगा. साथ ही, जब उसे स्नैपशॉट की ज़रूरत न हो, तो उसे उन्हें मिटाना होगा.

खोज के नतीजों का स्नैपशॉट बनाना

xrCreateSpatialDiscoverySnapshotAsyncEXT फ़ंक्शन को इस तरह से परिभाषित किया गया है:

XrResult xrCreateSpatialDiscoverySnapshotAsyncEXT(
    XrSpatialContextEXT                         spatialContext,
    const XrSpatialDiscoverySnapshotCreateInfoEXT* createInfo,
    XrFutureEXT*                                future);

पैरामीटर की जानकारी

ऐप्लिकेशन, 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 हैंडल होना चाहिए
  • createInfo XrSpatialDiscoverySnapshotCreateInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
  • future, XrFutureEXT वैल्यू का पॉइंटर होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT
  • XR_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 हैंडल बनाने के लिए जानकारी देता है.

मान्य इस्तेमाल (इंप्लिसिट)

xrCreateSpatialDiscoverySnapshotCompleteEXT फ़ंक्शन को इस तरह से परिभाषित किया गया है:

XrResult xrCreateSpatialDiscoverySnapshotCompleteEXT(
    XrSpatialContextEXT                         spatialContext,
    const XrCreateSpatialDiscoverySnapshotCompletionInfoEXT* createSnapshotCompletionInfo,
    XrCreateSpatialDiscoverySnapshotCompletionEXT* completion);

पैरामीटर की जानकारी

xrCreateSpatialDiscoverySnapshotCompleteEXT, xrCreateSpatialDiscoverySnapshotAsyncEXT से शुरू होने वाले एसिंक्रोनस ऑपरेशन को पूरा करता है . अगर XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future तैयार नहीं है, तो रनटाइम को XR_ERROR_FUTURE_PENDING_EXT वैल्यू ज़रूर दिखानी चाहिए. अगर XrCreateSpatialDiscoverySnapshotCompletionInfoEXT :: future पहले ही पूरा हो गया है या रद्द कर दिया गया है, तो रनटाइम को XR_ERROR_FUTURE_INVALID_EXT वैल्यू ज़रूर दिखानी चाहिए.

मान्य इस्तेमाल (इंप्लिसिट)

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_FUTURE_INVALID_EXT
  • XR_ERROR_FUTURE_PENDING_EXT
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_TIME_INVALID
  • XR_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 पर मौजूद है.

मान्य इस्तेमाल (इंप्लिसिट)

XrCreateSpatialDiscoverySnapshotCompletionEXT स्ट्रक्चर को इस तरह से परिभाषित किया गया है:

typedef struct XrCreateSpatialDiscoverySnapshotCompletionEXT {
    XrStructureType         type;
    void*                   next;
    XrResult                futureResult;
    XrSpatialSnapshotEXT    snapshot;
} XrCreateSpatialDiscoverySnapshotCompletionEXT;

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

  • type इस स्ट्रक्चर का XrStructureType है.
  • next, NULL होता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है.
  • futureResult, स्पेस के बारे में जानकारी इकट्ठा करने वाले स्नैपशॉट को बनाने के ऑपरेशन का XrResult है.
  • snapshot एक XrSpatialSnapshotEXT है. इसका इस्तेमाल, खोजी गई स्पेशल एंटिटी के कॉम्पोनेंट डेटा के बारे में क्वेरी करने के लिए किया जा सकता है.

आने वाले समय में इस्तेमाल किए जाने वाले रिटर्न कोड

futureResult वैल्यू:

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED

मान्य इस्तेमाल (इंप्लिसिट)

डिस्कवरी से जुड़ी सलाह देने वाला इवेंट

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 से उस कॉन्टेक्स्ट के लिए, ऐसे किसी भी इवेंट को वापस नहीं भेजना चाहिए.

मान्य इस्तेमाल (इंप्लिसिट)

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

xrQuerySpatialComponentDataEXT फ़ंक्शन को इस तरह से परिभाषित किया गया है:

XrResult xrQuerySpatialComponentDataEXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialComponentDataQueryConditionEXT* queryCondition,
    XrSpatialComponentDataQueryResultEXT*       queryResult);

पैरामीटर की जानकारी

ऐप्लिकेशन, स्नैपशॉट में मौजूद इकाइयों के कॉम्पोनेंट डेटा के बारे में क्वेरी करने के लिए, 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 से जुड़ी सूची के स्ट्रक्चर में मौजूद उस इकाई के इंडेक्स पर डेटा में बदलाव नहीं करना चाहिए .

मान्य इस्तेमाल (इंप्लिसिट)

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_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 का एक ऐसा कलेक्शन है जिसके लिए स्नैपशॉट से डेटा पाना है.

मान्य इस्तेमाल (इंप्लिसिट)

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 हैंडल का इस्तेमाल करके, अपडेट स्नैपशॉट बना सकता है. इस स्नैपशॉट में, दी गई इकाइयों के कॉम्पोनेंट का रनटाइम का सबसे नया डेटा होता है.

मान्य इस्तेमाल (इंप्लिसिट)

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 . स्ट्रिंग बफ़र पाने के लिए, XrSpatialBufferIdEXT can को 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 एक्सटेंशन को चालू करना ज़रूरी है
  • snapshot must be a valid XrSpatialSnapshotEXT handle
  • info XrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
  • bufferCountOutput, uint32_t वैल्यू का पॉइंटर होना चाहिए
  • अगर bufferCapacityInput, 0 नहीं है, तो buffer, bufferCapacityInput char वैल्यू की किसी ऐरे का पॉइंटर होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

xrGetSpatialBufferUint8EXT फ़ंक्शन को इस तरह से तय किया गया है:

XrResult xrGetSpatialBufferUint8EXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    uint8_t*                                    buffer);

पैरामीटर की जानकारी

  • snapshot, XrSpatialSnapshotEXT का हैंडल है .
  • info में क्वेरी करने के लिए बफ़र की जानकारी होती है.
  • bufferCapacityInput, ऐरे की क्षमता है. अगर आपको ज़रूरी क्षमता वापस पाने का अनुरोध करना है, तो इसे 0 पर सेट करें.
  • bufferCountOutput, buffer कलेक्शन में मौजूद एलिमेंट की संख्या है. अगर bufferCapacityInput की क्षमता कम है, तो यह ज़रूरी क्षमता है.
  • buffer, uint8_t का एक कलेक्शन है . अगर bufferCapacityInput की वैल्यू 0 है, तो इसकी वैल्यू NULL हो सकती है.
  • ज़रूरी buffer का साइज़ पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ के पैरामीटर सेक्शन देखें.

ऐप्लिकेशन, कॉम्पोनेंट की ओर से दिए गए XrSpatialBufferEXT का डेटा पा सकता है. इसके लिए, xrGetSpatialBufferUint8EXT का इस्तेमाल करके, XrSpatialBufferEXT :: bufferType को XR_SPATIAL_BUFFER_TYPE_UINT8_EXT किया जाता है.

अगर XrSpatialBufferGetInfoEXT :: bufferId के लिए XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_UINT8_EXT नहीं है, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना ज़रूरी है .

अगर XrSpatialBufferGetInfoEXT :: bufferId, snapshot से नहीं जुड़ा है, तो रनटाइम को XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT वैल्यू वापस भेजनी चाहिए .

मान्य इस्तेमाल (इंप्लिसिट)

  • xrGetSpatialBufferUint8EXT को कॉल करने से पहले, XR_EXT_spatial_entity एक्सटेंशन को चालू करना ज़रूरी है
  • snapshot must be a valid XrSpatialSnapshotEXT handle
  • info XrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
  • bufferCountOutput, uint32_t वैल्यू का पॉइंटर होना चाहिए
  • अगर bufferCapacityInput, 0 नहीं है, तो buffer, bufferCapacityInput uint8_t वैल्यू की एक सरणी का पॉइंटर होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_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 एक्सटेंशन को चालू करना ज़रूरी है
  • snapshot must be a valid XrSpatialSnapshotEXT handle
  • info XrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
  • bufferCountOutput, uint32_t वैल्यू का पॉइंटर होना चाहिए
  • अगर bufferCapacityInput, 0 नहीं है, तो buffer, bufferCapacityInput uint16_t वैल्यू की एक सरणी का पॉइंटर होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_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 एक्सटेंशन को चालू करना ज़रूरी है
  • snapshot must be a valid XrSpatialSnapshotEXT handle
  • info XrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
  • bufferCountOutput, uint32_t वैल्यू का पॉइंटर होना चाहिए
  • अगर bufferCapacityInput, 0 नहीं है, तो buffer, bufferCapacityInput uint32_t वैल्यू की एक सरणी का पॉइंटर होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_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 एक्सटेंशन को चालू करना ज़रूरी है
  • snapshot must be a valid XrSpatialSnapshotEXT handle
  • info XrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
  • bufferCountOutput, uint32_t वैल्यू का पॉइंटर होना चाहिए
  • अगर bufferCapacityInput, 0 नहीं है, तो buffer, bufferCapacityInput float वैल्यू की एक सरणी का पॉइंटर होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

xrGetSpatialBufferVector2fEXT फ़ंक्शन को इस तरह से परिभाषित किया गया है:

XrResult xrGetSpatialBufferVector2fEXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    XrVector2f*                                 buffer);

पैरामीटर की जानकारी

  • snapshot, XrSpatialSnapshotEXT का हैंडल है .
  • info में क्वेरी करने के लिए बफ़र की जानकारी होती है.
  • bufferCapacityInput, ऐरे की क्षमता है. अगर आपको ज़रूरी क्षमता वापस पाने का अनुरोध करना है, तो इसे 0 पर सेट करें.
  • bufferCountOutput, buffer कलेक्शन में मौजूद एलिमेंट की संख्या है. अगर bufferCapacityInput की क्षमता कम है, तो यह ज़रूरी क्षमता है.
  • buffer, XrVector2f का एक कलेक्शन है . अगर bufferCapacityInput की वैल्यू 0 है, तो इसकी वैल्यू NULL हो सकती है.
  • ज़रूरी buffer का साइज़ पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ के पैरामीटर सेक्शन देखें.

ऐप्लिकेशन, कॉम्पोनेंट से मिले XrSpatialBufferEXT का डेटा पा सकता है. इसके लिए, xrGetSpatialBufferVector2fEXT का इस्तेमाल करके, XrSpatialBufferEXT :: bufferType को XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT किया जाता है.

अगर XrSpatialBufferGetInfoEXT :: bufferId के लिए XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_VECTOR2F_EXT नहीं है, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना ज़रूरी है .

अगर XrSpatialBufferGetInfoEXT :: bufferId, snapshot से नहीं जुड़ा है, तो रनटाइम को XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT वैल्यू ज़रूर दिखानी चाहिए .

मान्य इस्तेमाल (इंप्लिसिट)

  • xrGetSpatialBufferVector2fEXT को कॉल करने से पहले, XR_EXT_spatial_entity एक्सटेंशन को चालू करना ज़रूरी है
  • snapshot must be a valid XrSpatialSnapshotEXT handle
  • info XrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
  • bufferCountOutput, uint32_t वैल्यू का पॉइंटर होना चाहिए
  • अगर bufferCapacityInput, 0 नहीं है, तो buffer, bufferCapacityInput XrVector2f स्ट्रक्चर के ऐरे का पॉइंटर होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

xrGetSpatialBufferVector3fEXT फ़ंक्शन को इस तरह से परिभाषित किया गया है:

XrResult xrGetSpatialBufferVector3fEXT(
    XrSpatialSnapshotEXT                        snapshot,
    const XrSpatialBufferGetInfoEXT*            info,
    uint32_t                                    bufferCapacityInput,
    uint32_t*                                   bufferCountOutput,
    XrVector3f*                                 buffer);

पैरामीटर की जानकारी

  • snapshot, XrSpatialSnapshotEXT का हैंडल है .
  • info में क्वेरी करने के लिए बफ़र की जानकारी होती है.
  • bufferCapacityInput, ऐरे की क्षमता है. अगर आपको ज़रूरी क्षमता वापस पाने का अनुरोध करना है, तो इसे 0 पर सेट करें.
  • bufferCountOutput, buffer कलेक्शन में मौजूद एलिमेंट की संख्या है. अगर bufferCapacityInput की क्षमता कम है, तो यह ज़रूरी क्षमता है.
  • buffer, XrVector3f का कलेक्शन है . अगर bufferCapacityInput की वैल्यू 0 है, तो इसकी वैल्यू NULL हो सकती है.
  • ज़रूरी buffer का साइज़ पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ के पैरामीटर सेक्शन देखें.

ऐप्लिकेशन, किसी कॉम्पोनेंट से मिले XrSpatialBufferEXT का डेटा पा सकता है. इसके लिए, xrGetSpatialBufferVector3fEXT का इस्तेमाल करके, XrSpatialBufferEXT :: bufferType को XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT किया जाता है.

अगर XrSpatialBufferGetInfoEXT :: bufferId के लिए XrSpatialBufferTypeEXT, XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT नहीं है, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना ज़रूरी है .

अगर XrSpatialBufferGetInfoEXT :: bufferId, snapshot से नहीं जुड़ा है, तो रनटाइम को XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT वैल्यू ज़रूर दिखानी चाहिए .

मान्य इस्तेमाल (इंप्लिसिट)

  • xrGetSpatialBufferVector3fEXT को कॉल करने से पहले, XR_EXT_spatial_entity एक्सटेंशन को चालू करना ज़रूरी है
  • snapshot must be a valid XrSpatialSnapshotEXT handle
  • info XrSpatialBufferGetInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
  • bufferCountOutput, uint32_t वैल्यू का पॉइंटर होना चाहिए
  • अगर bufferCapacityInput 0 नहीं है , तो buffer में bufferCapacityInput XrVector3f स्ट्रक्चर के ऐरे का पॉइंटर होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
  • XR_ERROR_VALIDATION_FAILURE

XrSpatialBufferGetInfoEXT स्ट्रक्चर को इस तरह से परिभाषित किया गया है:

typedef struct XrSpatialBufferGetInfoEXT {
    XrStructureType         type;
    const void*             next;
    XrSpatialBufferIdEXT    bufferId;
} XrSpatialBufferGetInfoEXT;

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

  • type इस स्ट्रक्चर का XrStructureType है.
  • next, NULL होता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है.
  • bufferId उस बफ़र के लिए XrSpatialBufferIdEXT जिसका डेटा वापस पाना है.

मान्य इस्तेमाल (इंप्लिसिट)

#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);

पैरामीटर की जानकारी

ऐप्लिकेशन, स्नैपशॉट बनाने के लिए xrCreateSpatialUpdateSnapshotEXT का इस्तेमाल कर सकता है. साथ ही, रनटाइम के हिसाब से कुछ खास इकाइयों के लिए कॉम्पोनेंट का नया डेटा पा सकता है. स्नैपशॉट बनाते समय, ऐप्लिकेशन XrSpatialEntityEXT हैंडल और कॉम्पोनेंट टाइप दे सकते हैं.

ऐप्लिकेशन, XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes का इस्तेमाल कर सकता है. इससे उन कॉम्पोनेंट की सूची को फ़िल्टर किया जा सकता है जिनका डेटा स्नैपशॉट में शामिल करना ज़रूरी है. अगर ऐप्लिकेशन, XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes में, स्पेस से जुड़े कॉम्पोनेंट टाइप की मान्य सूची देता है, तो रनटाइम को स्नैपशॉट में सिर्फ़ उन स्पेस से जुड़ी इकाइयों को शामिल करना चाहिए जिनमें XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes में दिए गए कॉम्पोनेंट में से कम से कम एक कॉम्पोनेंट मौजूद हो . इसके अलावा, रनटाइम में सिर्फ़ स्नैपशॉट में मौजूद कॉम्पोनेंट का डेटा शामिल होना चाहिए.

अगर spatialContext बनाते समय, XrSpatialContextCreateInfoEXT :: capabilityConfigs को पास की गई स्पेशल सुविधाओं के लिए, XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes में मौजूद XrSpatialComponentTypeEXT में से कोई भी सुविधा चालू नहीं है, तो रनटाइम को XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT दिखाना ज़रूरी है .

अगर ऐप्लिकेशन, XrSpatialUpdateSnapshotCreateInfoEXT :: componentTypes में स्पेस से जुड़े कॉम्पोनेंट टाइप की सूची नहीं देता है, तो रनटाइम को स्नैपशॉट में XrSpatialUpdateSnapshotCreateInfoEXT :: entities में दी गई सभी स्पेस से जुड़ी इकाइयों को शामिल करना होगा. साथ ही, उसे spatialContext के लिए कॉन्फ़िगर की गई सुविधाओं के सभी चालू कॉम्पोनेंट का डेटा शामिल करना होगा.

रंटाइम में ऐसी स्पेशल एंटिटी शामिल नहीं होनी चाहिए जो snapshot में XrSpatialUpdateSnapshotCreateInfoEXT :: entities में शामिल नहीं हैं .

ऐप्लिकेशन, जितने चाहें उतने स्नैपशॉट बना सकता है. हालांकि, उसे हर नए स्नैपशॉट के लिए मेमोरी का ध्यान रखना होगा. साथ ही, जब उसे स्नैपशॉट की ज़रूरत न हो, तो उसे उन्हें मिटाना होगा.

मान्य इस्तेमाल (इंप्लिसिट)

  • xrCreateSpatialUpdateSnapshotEXT को कॉल करने से पहले, XR_EXT_spatial_entity एक्सटेंशन को चालू करना ज़रूरी है
  • spatialContext एक मान्य XrSpatialContextEXT हैंडल होना चाहिए
  • createInfo XrSpatialUpdateSnapshotCreateInfoEXT स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
  • snapshot, XrSpatialSnapshotEXT हैंडल का पॉइंटर होना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT
  • XR_ERROR_TIME_INVALID
  • XR_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 हो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो
  • entities must be a pointer to an array of entityCount valid XrSpatialEntityEXT handles
  • अगर componentTypeCount, 0 नहीं है, तो componentTypes, componentTypeCount मान्य XrSpatialComponentTypeEXT वैल्यू के ऐरे का पॉइंटर होना चाहिए
  • baseSpace मान्य XrSpace हैंडल होना चाहिए
  • entityCount पैरामीटर की वैल्यू, 0 से ज़्यादा होनी चाहिए
  • baseSpace और entities के एलिमेंट, दोनों को एक ही XrSession से बनाया, असाइन किया या वापस पाया गया होना चाहिए

स्नैपशॉट मिटाना

xrDestroySpatialSnapshotEXT फ़ंक्शन को इस तरह से परिभाषित किया गया है:

XrResult xrDestroySpatialSnapshotEXT(
    XrSpatialSnapshotEXT                        snapshot);

पैरामीटर की जानकारी

ऐप्लिकेशन, XrSpatialSnapshotEXT हैंडल और उससे जुड़े संसाधनों को डिस्ट्रॉय करने के लिए, xrDestroySpatialSnapshotEXT को कॉल कर सकता है.

मान्य इस्तेमाल (इंप्लिसिट)

  • xrDestroySpatialSnapshotEXT को कॉल करने से पहले, XR_EXT_spatial_entity एक्सटेंशन को चालू करना ज़रूरी है
  • snapshot must be a valid XrSpatialSnapshotEXT handle

थ्रेड सेफ़्टी

  • snapshot और बच्चों के सभी हैंडल को बाहरी तौर पर सिंक किया जाना चाहिए

रिटर्न कोड

सफल

  • XR_SUCCESS

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_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, boundCount XrSpatialBounded2DDataEXT स्ट्रक्चर के ऐरे का पॉइंटर होना चाहिए
  • 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, boundCount XrBoxf स्ट्रक्चर की श्रेणी का पॉइंटर होना चाहिए
  • 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, parentCount XrSpatialEntityIdEXT वैल्यू के कलेक्शन का पॉइंटर होना चाहिए
  • parentCount पैरामीटर की वैल्यू, 0 से ज़्यादा होनी चाहिए
कॉन्फ़िगरेशन

अगर किसी सुविधा के लिए, XrSpatialCapabilityComponentTypesEXT :: componentTypes में XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT को गिना गया है, तो ऐप्लिकेशन XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents सूची में enum को शामिल करके, इसे चालू कर सकता है. इस कॉम्पोनेंट को XrSpatialCapabilityConfigurationBaseHeaderEXT की अगली चेन में शामिल करने के लिए, किसी खास कॉन्फ़िगरेशन की ज़रूरत नहीं होती .

मेश 3D

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

XrSpatialMeshDataEXT स्ट्रक्चर को इस तरह परिभाषित किया गया है:

typedef struct XrSpatialMeshDataEXT {
    XrPosef               origin;
    XrSpatialBufferEXT    vertexBuffer;
    XrSpatialBufferEXT    indexBuffer;
} XrSpatialMeshDataEXT;

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

  • origin एक XrPosef है, जो मेश के ऑरिजिन को तय करता है. मेश के सभी वर्टेक्स, इस ऑरिजिन के हिसाब से होने चाहिए.
  • vertexBuffer, XrSpatialBufferEXT है. यह उस बफ़र का आईडी देता है जो उस इकाई के वर्टेक्स बफ़र को दिखाता है जिस पर यह कॉम्पोनेंट मौजूद है. वर्टेक्स की पोज़िशन, origin के हिसाब से होनी चाहिए .
  • indexBuffer एक XrSpatialBufferEXT है जो त्रिकोण इंडेक्स के कलेक्शन को दिखाने वाले बफ़र के लिए आईडी उपलब्ध कराता है. यह vertexBuffer में मेश वर्टेक्स के इंडेक्स तय करता है. ट्रायंगल इंडेक्स को घड़ी की उल्टी दिशा में क्रम से दिखाया जाना ज़रूरी है. साथ ही, तीन इंडेक्स से एक ट्रायंगल का पता चलता है.

XrSpatialMeshDataEXT का इस्तेमाल करने वाले कॉम्पोनेंट टाइप को, vertexBuffer और indexBuffer के XrSpatialBufferTypeEXT के बारे में ज़रूर बताना चाहिए .

मान्य इस्तेमाल (इंप्लिसिट)

  • XrSpatialMeshDataEXT का इस्तेमाल करने से पहले, XR_EXT_spatial_entity एक्सटेंशन को चालू करना ज़रूरी है
  • vertexBuffer must be a valid XrSpatialBufferEXT structure
  • indexBuffer must 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, meshCount XrSpatialMeshDataEXT स्ट्रक्चर के ऐरे का पॉइंटर होना चाहिए
  • 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 है.

मान्य इस्तेमाल (इंप्लिसिट)

कोड का उदाहरण

ऐप्लिकेशन का इस्तेमाल

आम तौर पर, ऐप्लिकेशन इस पैटर्न में स्पैटियल एंटिटी एक्सटेंशन का इस्तेमाल करते हैं:

  • कोई ऐप्लिकेशन, 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 से जोड़ सकता है. इससे इस कॉम्पोनेंट के डेटा से जुड़ी क्वेरी के लिए अतिरिक्त फ़िल्टर उपलब्ध कराए जा सकते हैं.
  • एक्सटेंशन, ऐसे स्ट्रक्चर तय कर सकते हैं जो XrSpatialDiscoverySnapshotCreateInfoEXT को बढ़ाते हैं, ताकि खोज के लिए अतिरिक्त फ़िल्टर उपलब्ध कराए जा सकें. स्नैपशॉट बनाने के लिए इस्तेमाल किए जाने वाले फ़िल्टर, स्पैटियल कॉन्टेक्स्ट के कॉन्फ़िगरेशन पर असर नहीं डालने चाहिए. इसके बजाय, इनका इस्तेमाल रनटाइम को यह बताने के लिए किया जाना चाहिए कि स्पैटियल कॉन्टेक्स्ट के मौजूदा कॉन्फ़िगरेशन के हिसाब से, स्नैपशॉट में कौनसी इकाइयां और डेटा शामिल किया जाना है. इसलिए, इनका इस्तेमाल बुनियादी सेवाओं के मौजूदा कॉन्फ़िगरेशन के हिसाब से किया जाना चाहिए.

  • अगर कोई एक्सटेंशन नया XrSpatialCapabilityEXT तय करता है ,

  • अगर कोई एक्सटेंशन, नया 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
|====

नए मैक्रो

नए बेस टाइप

  • XrSpatialBufferIdEXT
  • XrSpatialEntityIdEXT

नए ऑब्जेक्ट टाइप

नए निर्देश

नई संरचनाएं

नए एनम

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

  • XR_EXT_SPATIAL_ENTITY_EXTENSION_NAME
  • XR_EXT_spatial_entity_SPEC_VERSION
  • XrObjectType को बढ़ाना :

    • XR_OBJECT_TYPE_SPATIAL_CONTEXT_EXT
    • XR_OBJECT_TYPE_SPATIAL_ENTITY_EXT
    • XR_OBJECT_TYPE_SPATIAL_SNAPSHOT_EXT
  • XrResult को बढ़ाना :

    • XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT
    • XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT
    • XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT
    • XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT
    • XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT
    • XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT
  • XrStructureType को बढ़ाना :

    • XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXT
    • XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXT
    • XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXT
    • XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT
    • XR_TYPE_SPATIAL_BUFFER_GET_INFO_EXT
    • XR_TYPE_SPATIAL_CAPABILITY_COMPONENT_TYPES_EXT
    • XR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_BOUNDED_3D_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT
    • XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_PARENT_LIST_EXT
    • XR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXT
    • XR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXT
    • XR_TYPE_SPATIAL_ENTITY_FROM_ID_CREATE_INFO_EXT
    • XR_TYPE_SPATIAL_FILTER_TRACKING_STATE_EXT
    • XR_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)

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