XR_ANDROID_unbounded_reference_space OpenXR एक्सटेंशन

Name String

XR_ANDROID_unbounded_reference_space

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

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

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

468

बदलाव

1

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

OpenXR 1.0

पिछली बार बदलाव करने की तारीख

2024-09-12

आईपी स्टेटस

आईपी पर कोई दावा नहीं किया गया है.

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

स्पेंसर क्विन, Google

जेरेड फ़ाइंडर, Google

फ़ेंगताओ फ़ैन, Google

लैचलन फ़ोर्ड, Google

निहाव जैन, Google

लेवाना चेन, Google

खास जानकारी

इस एक्सटेंशन की मदद से, ऐप्लिकेशन UNBOUNDED_ANDROID रेफ़रंस स्पेस बना सकते हैं. इस रेफ़रंस स्पेस की मदद से, दर्शक किसी जटिल परिवेश में आसानी से घूम सकता है. अक्सर, वह शुरू की जगह से कई मीटर दूर तक जा सकता है. साथ ही, दर्शक के आस-पास कोऑर्डिनेट सिस्टम को हमेशा ऑप्टिमाइज़ किया जाता है. डिवाइस, बेहतर तरीके से सीन को समझने के लिए अपने आस-पास के माहौल को ज़्यादा से ज़्यादा महसूस करता है. इसलिए, डिवाइस ट्रैकिंग को बनाए रखने के लिए, रेफ़रंस स्पेस के ऑरिजिन में बड़े बदलाव हो सकते हैं.

UNBOUNDED_ANDROID रेफ़रंस स्पेस बनाने के लिए, ऐप्लिकेशन XrReferenceSpaceCreateInfo::referenceSpaceType XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID को सेट कर सकता है और xrCreateReferenceSpace को पास कर सकता है.

XrInstance instance; // previously initialized
XrSession session; // previously initialized
XrPosef pose; // previously initialized

// Use the new reference space type in the create info struct
XrReferenceSpaceCreateInfo createInfo = {
    .type = XR_REFERENCE_SPACE_CREATE_INFO;
    .next = nullptr;
    .referenceSpaceType = XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID;
    .poseInReferenceSpace = pose;
}
XrSpace referenceSpace;
CHK_XR(xrCreateReferenceSpace(session, &createInfo, &referenceSpace));

// After usage
CHK_XR(xrDestroySpace(referenceSpace));

डिवाइस ट्रैकिंग शुरू होने पर, UNBOUNDED_ANDROID रेफ़रंस स्पेस, हेडसेट की पोज़िशन का वर्ल्ड-लॉक किया गया ऑरिजिन सेट करता है. पिच और रोल को हटाने के लिए, इसे गुरुत्वाकर्षण के हिसाब से अलाइन किया गया है. इसमें +X को दाईं ओर, +Y को ऊपर, और -Z को आगे की ओर रखा गया है.

UNBOUNDED_ANDROID स्पेस तब काम का होता है, जब किसी ऐप्लिकेशन को विश्व-स्तर का ऐसा कॉन्टेंट रेंडर करना हो जो एक STAGE की सीमाओं से परे हो. उदाहरण के लिए, किसी इमारत का पूरा फ़्लोर या एक से ज़्यादा फ़्लोर.

UNBOUNDED_ANDROID स्पेस, समय के साथ अपने ऑरिजिन में बदलाव करके, दर्शक के आस-पास स्थिरता बनाए रखता है. डिवाइस की ट्रैकिंग को बनाए रखने के लिए, ज़रूरत के हिसाब से इसमें थोड़े और ज़्यादा बदलाव किए जा सकते हैं.

  • छोटे बदलावों के जवाब में, रनटाइम को XrEventDataReferenceSpaceChangePending इवेंट को सूची में नहीं जोड़ना चाहिए.
  • बड़े बदलावों के जवाब में, रनटाइम को XrEventDataReferenceSpaceChangePending इवेंट को सूची में जोड़ना चाहिए. उदाहरण के लिए, ट्रैकिंग बंद होने की वजह से UNBOUNDED_ANDROID स्पेस में पोज़ को रीसेट किया जाता है. साथ ही, दुनिया के डिसकनेक्ट किए गए अनुमान (एक "नया मैप") पर ट्रैकिंग फिर से शुरू की जाती है.
  • सिस्टम, दुनिया के बारे में अपनी जानकारी को लगातार अपडेट करता रहता है और डिवाइस ट्रैकिंग में बदलाव करता रहता है. अगर किसी ऐप्लिकेशन को ट्रैकिंग रीसेट होने के बावजूद, जगह की जानकारी सेव रखने की ज़रूरत है, तो इस मामले में ऐंकर का इस्तेमाल किया जा सकता है.

स्पेस में बदलाव करने से जुड़ा इवेंट

XrEventDataReferenceSpaceChangePending स्ट्रक्चर से तय किए गए पैरामीटर के लिए, जो दुनिया के बदलाव या जगह के हिसाब से कॉन्टेंट को ऑप्टिमाइज़ करने वाले इवेंट के आधार पर दिखाए गए हैं:

typedef struct XrEventDataReferenceSpaceChangePending {
    XrStructureType         type;
    const void*             next;
    XrSession               session;
    XrReferenceSpaceType    referenceSpaceType;
    XrTime                  changeTime;
    XrBool32                poseValid;
    XrPosef                 poseInPreviousSpace;
} XrEventDataReferenceSpaceChangePending;

पैसे चुकाकर बने सदस्यों के ब्यौरे

  • referenceSpaceType XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID है.
  • changeTime से उस XrTime की जानकारी मिलेगी जिस दिन फिर से स्थानीय भाषा में अनुवाद पूरा हो गया.
  • डिसकनेक्ट होने की वजह से, poseValid की जगह false दिखेगा. डिसकनेक्ट होने के बाद, true दिखेगा.
  • poseValid के false होने पर, poseInPreviousSpace मान्य नहीं होगा.

जब व्यू, कंट्रोलर या अन्य स्पेस में UNBOUNDED_ANDROID स्पेस के मुकाबले ट्रैकिंग में कमी आती है, तो ऐप्लिकेशन को अनुमानित या पिछली position और orientation वैल्यू मिलती रहती हैं. उदाहरण के लिए, ये अनुमानित पोज़, गर्दन के मॉडल के अपडेट, इनर्शियल डेड रेकिंग या आखिरी बार की गई गतिविधि के आधार पर हो सकते हैं. कोई ऐप्लिकेशन यह मान सकता है कि उसके पास XR_SPACE_LOCATION_POSITION_VALID_BIT और XR_VIEW_STATE_POSITION_VALID_BIT सेट रहेगा, लेकिन XR_SPACE_LOCATION_POSITION_TRACKED_BIT और XR_VIEW_STATE_POSITION_TRACKED_BIT को रनटाइम के दौरान मिटाया जा सकता है. इससे यह पता चलता है कि जगह की जानकारी का अनुमान लगाया गया है या यह पिछली बार मिली जानकारी है.

ट्रैकिंग वापस आने पर, रनटाइम हो सकता है कि ओरिजिन को मनमुताबिक फिर से बीच में ले आए. उदाहरण के लिए, ओरिजिन को दर्शक के हिसाब से ले जाना. कोई ऐप्लिकेशन, XrEventDataReferenceSpaceChangePending इवेंट से मिली poseValid वैल्यू की जांच करके यह पता लगा सकता है कि वह इस्तेमाल के लिए तैयार है या नहीं.

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

फ़्लैग के नए टाइप

नई Enum Constant

XrReferenceSpaceType एनोटेशन को इनके साथ जोड़ा गया है:

  • XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID

नए Enums

नए स्ट्रक्चर

नए फ़ंक्शन

समस्याएं

वर्शन का इतिहास

  • पहला बदलाव, 12-09-2024 (लेवन चेन)
    • एक्सटेंशन के बारे में शुरुआती जानकारी