इस गाइड में, Android XR के लिए Unity की मदद से ऐप्लिकेशन बनाने के बारे में खास जानकारी दी गई है. Android XR, उन टूल और सुविधाओं के साथ काम करता है जो Unity में पहले से मौजूद हैं. साथ ही, Unity की Android XR सुविधा, OpenXR पर आधारित है. इसलिए, OpenXR की खास जानकारी में बताई गई कई सुविधाएं, Unity में भी काम करती हैं.
इनके बारे में जानने के लिए, इस गाइड का पालन करें:
- Android XR के लिए Unity की सहायता
- Unity XR की बुनियादी बातें
- Android XR के लिए ऐप्लिकेशन डेवलप और पब्लिश करना
- Android XR के लिए Unity पैकेज
- Unity OpenXR: Android XR पैकेज
- Unity के लिए Android XR एक्सटेंशन
- सुविधाएं और साथ काम करने की क्षमता से जुड़ी बातें
- इनपुट और इंटरैक्शन
Android XR के लिए Unity की सहायता
Android XR के लिए Unity ऐप्लिकेशन बनाते समय, Unity 6 में मौजूद, मिक्स्ड रिएलिटी टूल और सुविधाओं का फ़ायदा लिया जा सकता है. इसमें, XR इंटरैक्शन टूलकिट, AR Foundation, और OpenXR प्लग इन का इस्तेमाल करने वाले, मिक्स्ड रिएलिटी टेंप्लेट शामिल हैं. इनकी मदद से, आपको तुरंत काम शुरू करने में मदद मिलती है. Android XR के लिए Unity का इस्तेमाल करके ऐप्लिकेशन बनाते समय, हमारा सुझाव है कि आप रेंडर पाइपलाइन के तौर पर Universal Render Pipeline (URP) और ग्राफ़िक्स एपीआई के तौर पर Vulkan का इस्तेमाल करें. इन सुविधाओं की मदद से, Unity की कुछ नई ग्राफ़िक्स सुविधाओं का फ़ायदा लिया जा सकता है. ये सुविधाएं सिर्फ़ Vulkan के साथ काम करती हैं. इन सेटिंग को कॉन्फ़िगर करने के तरीके के बारे में ज़्यादा जानने के लिए, प्रोजेक्ट सेटअप करने के बारे में गाइड देखें.
Unity XR के बुनियादी सिद्धांत
अगर आपने Unity या एक्सआर डेवलपमेंट की शुरुआत अभी-अभी की है, तो एक्सआर के बुनियादी कॉन्सेप्ट और वर्कफ़्लो को समझने के लिए, Unity का एक्सआर मैन्युअल पढ़ें. XR मैन्युअल में यह जानकारी शामिल है:
- एक्सआर प्लैटफ़ॉर्म उपलब्ध कराने वाली कंपनी के प्लग-इन. इनमें Unity OpenXR: Android XR और Unity के लिए Android XR एक्सटेंशन शामिल हैं
- ऐप्लिकेशन-लेवल पर अतिरिक्त सुविधाएं जोड़ने के लिए, एक्सआर सहायता पैकेज
- एक्सआर आर्किटेक्चर की गाइड, जिसमें Unity XR टेक्नोलॉजी स्टैक और एक्सआर सबसिस्टम के बारे में बताया गया है
- एक्सआर प्रोजेक्ट सेट अप करना
- एक्सआर ऐप्लिकेशन बनाना और चलाना
- एक्सआर ग्राफ़िक से जुड़ी सलाह. इसमें यूनिवर्सल रेंडर पाइपलाइन, स्टीरियो रेंडरिंग, फ़ोवेटेड रेंडरिंग, मल्टीव्यू रेंडर क्षेत्र, और VR फ़्रेम टाइमिंग शामिल है
- एक्सआर ऑडियो निर्देश. इसमें ऑडियो स्पैशलाइज़र की सुविधा भी शामिल है
Android के लिए ऐप्लिकेशन डेवलप और पब्लिश करना
Unity, Android के लिए ऐप्लिकेशन बनाने, उसे बनाने, और पब्लिश करने के बारे में ज़्यादा जानकारी देने वाले दस्तावेज़ उपलब्ध कराता है. इन दस्तावेज़ों में, Unity में Android की अनुमतियां, Android के लिए बने ऐप्लिकेशन की सेटिंग, Android के लिए ऐप्लिकेशन बनाना, और Google Play पर ऐप्लिकेशन उपलब्ध कराना जैसे विषय शामिल हैं.
Android XR के लिए Unity पैकेज
Android VR के लिए Unity ऐप्लिकेशन बनाने में मदद करने वाले दो पैकेज हैं. ये दोनों पैकेज, XR प्लैटफ़ॉर्म उपलब्ध कराने वाले प्लग-इन हैं. इन्हें Unity के XR प्लग-इन मैनेजमेंट पैकेज की मदद से चालू किया जा सकता है. XR प्लग-इन मैनेजर, प्रोजेक्ट सेटिंग जोड़ता है. इससे, XR प्लग-इन को लोड करने, शुरू करने, सेटिंग करने, और उन्हें बनाने में मदद मिलती है. आपके ऐप्लिकेशन को रनटाइम के दौरान OpenXR की सुविधाएं इस्तेमाल करने की अनुमति देने के लिए, प्रोजेक्ट में प्लग-इन मैनेजर की मदद से ये सुविधाएं चालू होनी चाहिए.
इस इमेज में एक उदाहरण दिया गया है. इसमें दिखाया गया है कि Unity के एडिटर की मदद से, सुविधाओं के इन ग्रुप को कहां चालू किया जा सकता है.
Unity OpenXR Android XR
Unity OpenXR Android XR पैकेज, Unity में Android XR की सुविधा जोड़ने के लिए एक XR प्लग-इन है. यह एक्सआर प्लग-इन, Unity के लिए Android XR की ज़्यादातर सुविधाएं उपलब्ध कराता है. साथ ही, यह AR Foundation प्रोजेक्ट के लिए, Android XR डिवाइस की सुविधा चालू करता है. AR Foundation, उन डेवलपर के लिए डिज़ाइन किया गया है जो एआर या मिक्स्ड रिएलिटी के अनुभव बनाना चाहते हैं. यह एआर सुविधाओं के लिए इंटरफ़ेस उपलब्ध कराता है, लेकिन खुद कोई सुविधा लागू नहीं करता. Unity OpenXR Android XR पैकेज, इसे लागू करने की सुविधा देता है. इस पैकेज का इस्तेमाल शुरू करने के लिए, पैकेज का मैन्युअल देखें. इसमें, शुरू करने की गाइड शामिल होती है.
Unity के लिए Android XR एक्सटेंशन
Unity के लिए Android XR एक्सटेंशन, Unity OpenXR के Android XR पैकेज के साथ काम करता है. इसमें इमर्सिव अनुभव बनाने में आपकी मदद करने के लिए, अतिरिक्त सुविधाएं भी शामिल हैं. इसका इस्तेमाल, Unity OpenXR के Android XR पैकेज के साथ या अकेले किया जा सकता है.
इस पैकेज का इस्तेमाल शुरू करने के लिए, प्रोजेक्ट सेटअप करने की गाइड या Unity के लिए Android XR एक्सटेंशन इंपोर्ट करने का तरीका देखें.
सुविधाएं और साथ काम करने की क्षमता से जुड़ी बातें
इस टेबल में, Unity OpenXR: Android XR पैकेज और Unity पैकेज के लिए Android XR एक्सटेंशन की सुविधाओं के बारे में बताया गया है. इस टेबल का इस्तेमाल करके यह पता लगाया जा सकता है कि आपके लिए कौनसा पैकेज सही है और कौनसी सुविधाएं काम करती हैं.
सुविधा |
Unity OpenXR: Android XR की सुविधाओं की स्ट्रिंग |
Unity की सुविधाओं की स्ट्रिंग के लिए Android XR एक्सटेंशन |
इस्तेमाल के उदाहरण और उम्मीद के मुताबिक व्यवहार |
---|---|---|---|
Android XR: एआर सेशन
|
Android XR (एक्सटेंशन): सेशन मैनेजमेंट
|
दोनों में से किसी भी पैकेज की सुविधाओं का इस्तेमाल करने के लिए, आपको उस पैकेज के लिए एआर सेशन की सुविधा चालू करनी होगी. दोनों सुविधाओं के सेट को एक साथ चालू किया जा सकता है. अलग-अलग सुविधाएं, विवादों को उसी हिसाब से मैनेज करेंगी. |
|
लागू नहीं |
लागू नहीं |
डिवाइस ट्रैकिंग का इस्तेमाल, डिवाइस की जगह और घूमने की दिशा को ट्रैक करने के लिए किया जाता है. XR Origin GameObject, डिवाइस ट्रैकिंग को अपने-आप मैनेज करता है. साथ ही, ट्रैक किए जा सकने वाले आइटम को Unity के कोऑर्डिनेट सिस्टम में बदलता है. इसके लिए, यह अपने XROrigin कॉम्पोनेंट और कैमरे और TrackedPoseDriver के साथ GameObject हैरारकी का इस्तेमाल करता है. |
|
Android XR: एआर कैमरा |
लागू नहीं |
यह सुविधा, लाइट का अनुमान लगाने और फ़ुल स्क्रीन पासथ्रू के लिए मदद करती है. |
|
Android XR: एआर प्लेन |
Android XR (एक्सटेंशन): प्लेन |
ये दोनों सुविधाएं एक जैसी हैं. इसलिए, इनमें से किसी एक का इस्तेमाल करें. Android XR (एक्सटेंशन): प्लेन को शामिल किया गया है, ताकि डेवलपर Unity OpenXR Android XR पैकेज पर निर्भर हुए बिना, Android XR (एक्सटेंशन): ऑब्जेक्ट ट्रैकिंग और पर्सिस्टेंट ऐंकर की सुविधाओं का इस्तेमाल कर सकें. आने वाले समय में, Android XR (एक्सटेंशन): प्लेन को हटा दिया जाएगा और Android XR: एआर ऐंकर को जोड़ दिया जाएगा. |
|
लागू नहीं |
Android XR (एक्सटेंशन): ऑब्जेक्ट ट्रैकिंग |
यह सुविधा, फ़िज़िकल एनवायरमेंट में ऑब्जेक्ट का पता लगाने और उन्हें ट्रैक करने में मदद करती है. इसका इस्तेमाल, रेफ़रंस ऑब्जेक्ट लाइब्रेरी के साथ किया जाता है. |
|
Android XR: एआर फ़ेस
|
Android XR: चेहरा ट्रैक करने की सुविधा
|
अवतार की आंखों को ऐक्सेस करने की सुविधा, Android XR: एआर फ़ेस की सुविधा की मदद से मिलती है. Android XR: चेहरा ट्रैक करने की सुविधा की मदद से, उपयोगकर्ता के चेहरे के हाव-भाव ऐक्सेस करें. ज़रूरत पड़ने पर, इन दोनों सुविधाओं का एक साथ इस्तेमाल किया जा सकता है. |
|
Android XR: एआर रेकास्ट
|
लागू नहीं |
इस सुविधा की मदद से, रे का इस्तेमाल करके, उस रे और प्लेन ट्रैकबल या डीपथ ट्रैकबल के बीच के इंटरसेक्शन का हिसाब लगाया जा सकता है. ये ट्रैकबल, फ़िज़िकल एनवायरमेंट में डिटेक्ट किए जाते हैं. |
|
Android XR: एआर ऐंकर |
Android XR (एक्सटेंशन): ऐंकर
|
दोनों सुविधाओं में स्पेस ऐंकर और प्लेन ऐंकर के लिए सहायता शामिल है. इनमें से किसी एक सुविधा का इस्तेमाल करें. हमेशा मौजूद रहने वाले ऐंकर के लिए, Android XR (एक्सटेंशन): ऐंकर का इस्तेमाल करें. आने वाले समय में, Android XR (एक्सटेंशन): ऐंकर को हटा दिया जाएगा. साथ ही, ऐंकर की सभी सुविधाएं Android XR: एआर ऐंकर में उपलब्ध होंगी. |
|
Android XR: एआर ऑक्लूज़न
|
लागू नहीं |
ऑब्स्क्यूज़न की मदद से, आपके ऐप्लिकेशन में मौजूद मिक्स्ड रिएलिटी कॉन्टेंट को असल दुनिया के ऑब्जेक्ट के पीछे छिपाया जा सकता है या आंशिक तौर पर छिपाया जा सकता है. |
|
परफ़ॉर्मेंस मेट्रिक |
Android XR की परफ़ॉर्मेंस से जुड़ी मेट्रिक |
लागू नहीं |
Android XR डिवाइसों की परफ़ॉर्मेंस मेट्रिक ऐक्सेस करने के लिए, इस सुविधा का इस्तेमाल करें. |
कंपोज़िशन लेयर के साथ काम करना (OpenXR प्लग इन और XR कंपोज़िशन लेयर ज़रूरी है) |
Android XR: पासथ्रू कंपोज़िशन लेयर
|
बुनियादी कंपोज़िशन लेयर (जैसे, क्वॉड, सिलेंडर, प्रोजेक्शन) बनाने के लिए, Unity की कंपोज़िशन लेयर की सुविधा का इस्तेमाल करें. Android XR: Unity के GameObject से पढ़कर, कस्टम मेश के साथ पासथ्रू लेयर बनाने के लिए, पासथ्रू कंपोज़िशन लेयर का इस्तेमाल किया जा सकता है. |
|
फ़ोवेटेड रेंडरिंग (OpenXR प्लग इन ज़रूरी है)
|
फ़ोवेएशन (लेगसी) |
फ़ोवेटेड रेंडरिंग की मदद से, उपयोगकर्ता की परफ़िरियल विज़न में मौजूद एरिया का रिज़ॉल्यूशन कम करके, रेंडरिंग की स्पीड को तेज़ किया जा सकता है. Unity की फ़ोवेटेड रेंडरिंग की सुविधा, सिर्फ़ URP और Vulkan का इस्तेमाल करने वाले ऐप्लिकेशन के लिए उपलब्ध है. Unity के लिए Android XR एक्सटेंशन में फ़ोवेएशन (लेगसी) सुविधा, BiRP और GLES के साथ भी काम करती है. हमारा सुझाव है कि जहां तक हो सके, Unity की फ़ोवेटेड रेंडरिंग सुविधा का इस्तेमाल करें. ध्यान दें कि Android XR के लिए ऐप्लिकेशन बनाते समय, URP और Vulkan, दोनों का इस्तेमाल करने का सुझाव दिया जाता है. |
|
लागू नहीं |
Android XR: अनबाउंड रेफ़रंस स्पेस |
यह सुविधा, XRInputSubsystem ट्रैकिंग ऑरिजिन मोड को अनबाउंड पर सेट करती है. अनबाउंडेड का मतलब है कि XRInputSubsystem, वर्ल्ड ऐंकर के हिसाब से सभी InputDevices को ट्रैक करता है. यह ऐंकर बदल सकता है. |
|
लागू नहीं |
एनवायरमेंट ब्लेंड मोड |
इस सुविधा की मदद से, एक्सआर एनवायरमेंट ब्लेंड मोड सेट किया जा सकता है. इससे यह कंट्रोल होता है कि पासथ्रू मोड चालू होने पर, वर्चुअल इमेज असल दुनिया के वातावरण के साथ कैसे ब्लेंड होती है. |
इनपुट और इंटरैक्शन
Android XR, मल्टी-मोडल नेचुरल इनपुट की सुविधा देता है.
हाथ और आंखों की ट्रैकिंग के अलावा, 6DoF कंट्रोलर, माउस, और फ़िज़िकल कीबोर्ड जैसे सहायक डिवाइस भी काम करते हैं. इसका मतलब है कि Android XR के लिए बने ऐप्लिकेशन, हाथ से इंटरैक्ट करने की सुविधा के साथ काम करेंगे. हालांकि, यह नहीं माना जा सकता कि सभी डिवाइसों में कंट्रोलर होंगे.
इंटरैक्शन प्रोफ़ाइलें
Unity, इंटरैक्शन प्रोफ़ाइल का इस्तेमाल करके यह मैनेज करता है कि आपका एक्सआर ऐप्लिकेशन, अलग-अलग एक्सआर डिवाइसों और प्लैटफ़ॉर्म के साथ कैसे इंटरैक्ट करता है. ये प्रोफ़ाइलें, अलग-अलग हार्डवेयर कॉन्फ़िगरेशन के लिए, उम्मीद के मुताबिक इनपुट और आउटपुट तय करती हैं. इससे, अलग-अलग प्लैटफ़ॉर्म पर, ऐप्लिकेशन के साथ काम करने और एक जैसी सुविधाएं देने की सुविधा मिलती है. इंटरैक्शन प्रोफ़ाइल चालू करके, यह पक्का किया जा सकता है कि आपका एक्सआर ऐप्लिकेशन, अलग-अलग डिवाइसों पर सही तरीके से काम करे. साथ ही, इनपुट मैपिंग में कोई बदलाव न हो और एक्सआर की खास सुविधाओं का ऐक्सेस मिलता रहे. इंटरैक्शन प्रोफ़ाइल सेट करने के लिए:
- प्रोजेक्ट सेटिंग विंडो खोलें (मेन्यू: बदलाव करें > प्रोजेक्ट सेटिंग).
- प्लग-इन सेक्शन को बड़ा करने के लिए, एक्सआर प्लग-इन मैनेजमेंट पर क्लिक करें (अगर ज़रूरी हो).
- XR प्लग-इन की सूची में, OpenXR चुनें.
- इंटरैक्शन प्रोफ़ाइल सेक्शन में, प्रोफ़ाइल जोड़ने के लिए + बटन चुनें.
- सूची से वह प्रोफ़ाइल चुनें जिसे जोड़ना है.
हाथ से इंटरैक्ट करना
OpenXR प्लग इन, हाथ से इंटरैक्ट करने की सुविधा (XR_EXT_hand_interaction
) देता है. साथ ही, हाथ से इंटरैक्ट करने की प्रोफ़ाइल को चालू करके, Unity इनपुट सिस्टम में
एकटक देखने से इंटरैक्ट करना
OpenXR प्लग इन की मदद से, आंखों की गति से इंटरैक्ट करने की सुविधा (XR_EXT_eye_gaze_interaction
) मिलती है. इस लेआउट का इस्तेमाल करके, आंखों की पोज़िशन और रोटेशन का डेटा हासिल किया जा सकता है. यह डेटा, एक्सटेंशन से मिलता है. OpenXR इनपुट गाइड में, आंखों की गति से इंटरैक्शन के बारे में ज़्यादा पढ़ें.
कंट्रोलर इंटरैक्शन
Android XR, 6DoF कंट्रोलर के लिए Oculus Touch कंट्रोलर प्रोफ़ाइल के साथ काम करता है. ये दोनों प्रोफ़ाइलें, OpenXR प्लग इन से मिलती हैं.
माउस इंटरैक्शन
Android XR माउस इंटरैक्शन प्रोफ़ाइल (XR_ANDROID_mouse_interaction
), Unity के लिए Android XR एक्सटेंशन से मिलती है. यह Unity Input
System में <AndroidXRMouse>
डिवाइस लेआउट दिखाता है.
हथेली के इशारों से इंटरैक्ट करना
OpenXR प्लग इन, हथेली के पोज़ के इंटरैक्शन (XR_EXT_palm_pose
) के साथ काम करता है. इससे Unity इनपुट सिस्टम में <PalmPose>
लेआउट दिखता है. हथेली की पोज़िशन का इस्तेमाल, ज़्यादा जटिल इस्तेमाल के उदाहरणों के लिए, हाथ की ट्रैकिंग करने वाले एक्सटेंशन या पैकेज के विकल्प के तौर पर नहीं किया जा सकता. इसके बजाय, इसका इस्तेमाल ऐप्लिकेशन के हिसाब से विज़ुअल कॉन्टेंट दिखाने के लिए किया जा सकता है. जैसे, अवतार के विज़ुअल. हथेली की पोज़िशन और ओरिएंटेशन, दोनों को हथेली की पोज़िशन कहा जाता है.
XR Hands
XR Hands पैकेज की मदद से, हाथ की ट्रैकिंग का डेटा (XR_EXT_hand_tracking
और XR_FB_hand_tracking_aim
) ऐक्सेस किया जा सकता है. साथ ही, यह हाथ के जोड़ के डेटा को हाथ की ट्रैकिंग से इनपुट पोज़ में बदलने के लिए एक रैपर उपलब्ध कराता है.
XR Hands पैकेज की सुविधाओं का इस्तेमाल करने के लिए, हाथ ट्रैक करने की सुविधा वाला सबसिस्टम और Meta Hand Tracking Aim OpenXR सुविधाएं चालू करें.
XR hands पैकेज तब काम का हो सकता है, जब आपको हाथ की पोज़िशन या हाथ के जोड़ का ज़्यादा डेटा चाहिए हो या आपको कस्टम जेस्चर के साथ काम करना हो.
ज़्यादा जानकारी के लिए, Unity का अपने प्रोजेक्ट में XR हाथ सेट अप करने के लिए दस्तावेज़ देखें
हाथों को रेंडर करने का तरीका चुनना
Android XR, हाथों को रेंडर करने के दो तरीकों के साथ काम करता है: हाथ की मेश और पहले से तैयार विज़ुअलाइज़र.
हाथ का मेश
Android XR Unity पैकेज में, हाथ की मेश की सुविधा होती है. इससे XR_ANDROID_hand_mesh extension
को ऐक्सेस किया जा सकता है. हाथ के मेश की सुविधा से, उपयोगकर्ता के हाथों के मेश मिलते हैं. हाथ के मेश में, त्रिभुजों के ऐसे वर्टिसेस होते हैं जो हाथ की ज्यामिति दिखाते हैं. इस सुविधा का इस्तेमाल, उपयोगकर्ता के हाथों की असल ज्यामिति को दिखाने के लिए, उपयोगकर्ता के हिसाब से मेश उपलब्ध कराने के लिए किया जाता है.
XR Hands prefab
XR Hands पैकेज में हाथों को विज़ुअलाइज़ करने वाला सैंपल होता है. इसमें उपयोगकर्ता के हाथों को संदर्भ के हिसाब से दिखाने के लिए, बाएं और दाएं हाथ को पूरी तरह से रिग किया जाता है.
सिस्टम जेस्चर
Android XR में एक सिस्टम जेस्चर शामिल है. इसकी मदद से, उपयोगकर्ता मेन्यू खोल सकते हैं. इससे वे वापस जा सकते हैं, लॉन्चर खोल सकते हैं या फ़िलहाल चल रहे ऐप्लिकेशन की खास जानकारी पा सकते हैं. उपयोगकर्ता, अपने मुख्य हाथ से पिंच करके इस सिस्टम मेन्यू को चालू कर सकता है.
जब उपयोगकर्ता, सिस्टम नेविगेशन मेन्यू से इंटरैक्ट कर रहा होता है, तब ऐप्लिकेशन सिर्फ़ हेड ट्रैकिंग इवेंट का जवाब देगा. XR Hands पैकेज से पता चलता है कि उपयोगकर्ता ने कौनसी कार्रवाइयां की हैं. जैसे, इस सिस्टम के नेविगेशन मेन्यू से इंटरैक्ट करना. AimFlags SystemGesture और DominantHand की जांच करने से, आपको यह पता चलेगा कि सिस्टम की यह कार्रवाई कब की गई. AimFlags के बारे में ज़्यादा जानने के लिए, Unity के Enum MetaAimFlags दस्तावेज़ को देखें.
XR इंटरैक्शन टूलकिट
एक्सआर इंटरैक्शन टूलकिट पैकेज, वीआर और एआर अनुभव बनाने के लिए, कॉम्पोनेंट पर आधारित, इंटरैक्शन सिस्टम है. यह एक ऐसा फ़्रेमवर्क उपलब्ध कराता है जिससे Unity के इनपुट इवेंट से 3D और यूज़र इंटरफ़ेस (यूआई) इंटरैक्शन उपलब्ध होते हैं. यह हैप्टिक फ़ीडबैक, विज़ुअल फ़ीडबैक, और लोकोमोशन जैसे इंटरैक्शन टास्क के साथ काम करता है.