ज़रूरी बातें

Unity, OpenXR, और WebXR, इमर्सिव अनुभवों में अलग-अलग तरह के इंटरैक्शन बनाने के लिए, एक बेहतरीन टूलकिट उपलब्ध कराते हैं. इसका मकसद, ऐसे ऐप्लिकेशन बनाना है जिनमें उपयोगकर्ता, मौजूदा अनुभवों का इस्तेमाल करके इंटरैक्ट कर सकें. इसकी मदद से, आसान जेस्चर से लेकर भौतिकी पर आधारित जटिल सिम्युलेशन तक, कुछ भी डिज़ाइन किया जा सकता है.

ध्यान दें कि Unity, OpenXR, और WebXR ऐप्लिकेशन सिर्फ़ फ़ुल स्पेस में काम करते हैं.

Android XR के डिज़ाइन के सिद्धांतों के बारे में जानें.

इनपुट

XR ऐप्लिकेशन में, हाथ, आंख, और चेहरे की ट्रैकिंग, जेस्चर, और वॉइस कमांड के साथ इंटरैक्शन शामिल हो सकते हैं. साथ ही, इनमें कीबोर्ड, माउस, और कंट्रोलर जैसे सामान्य इनपुट डिवाइस भी शामिल हो सकते हैं. यह देखें कि आपके ऐप्लिकेशन को उपयोगकर्ता को सहज और आसान अनुभव देने के लिए, किन इनपुट की ज़रूरत होगी.

  • अपने ऐप्लिकेशन को इस्तेमाल करने में लोगों को आसानी हो, इसके लिए उसमें आम तौर पर इस्तेमाल होने वाले जेस्चर की सुविधा जोड़ें. 2D यूज़र इंटरफ़ेस (यूआई) के साथ इंटरैक्ट करते समय, पिंच जैसे स्टैंडर्ड सिस्टम जेस्चर का इस्तेमाल करें. गेंद को उठाने और फेंकने जैसे 3D इंटरैक्शन के लिए, आपको ऐसे जेस्चर डिज़ाइन करने चाहिए जो असल दुनिया के इंटरैक्शन की नकल करते हों. यह उपयोगकर्ता के मौजूदा ज्ञान पर आधारित होता है और ट्यूटोरियल की ज़रूरत को कम करता है.
  • अगर अतिरिक्त जेस्चर ज़रूरी हैं, तो पक्का करें कि उन्हें आसानी से सीखा जा सके, याद रखा जा सके, और उन्हें इस्तेमाल किया जा सके. जटिल और कई चरणों वाले जेस्चर या अस्वाभाविक पोज़िशन से बचें. इनसे लोगों को असहजता और थकान महसूस हो सकती है. उपयोगकर्ताओं को हाथ के जेस्चर इस्तेमाल करने का तरीका सिखाने के लिए, गाइड उपलब्ध कराएं.
  • पक्का करें कि आपके ऐप्लिकेशन को बाएं या दाएं हाथ से इस्तेमाल किया जा सके. अगर ऐसा करना संभव नहीं है, तो सिस्टम में सेट की गई, दायां या बायां हाथ इस्तेमाल करने की प्राथमिकता का पालन करें.
  • दो हाथों से इंटरैक्ट करने की सुविधा, उपयोगकर्ताओं को बेहतर अनुभव दे सकती है. हालांकि, यह सुविधा उन उपयोगकर्ताओं के लिए मुश्किल हो सकती है जिनकी गतिविधियां सीमित हैं. ज़रूरी कार्रवाइयों के लिए, एक हाथ से इस्तेमाल किए जा सकने वाले इंटरैक्शन को प्राथमिकता दें. अगर दो हाथों से किए जाने वाले जेस्चर ज़रूरी हैं, तो एक हाथ से किए जाने वाले वैकल्पिक तरीकों की जानकारी दें, ताकि वही नतीजा मिल सके.
  • Unity, OpenXR, और WebXR ऐप्लिकेशन को Android के बैक स्टैक से अपने-आप फ़ायदा नहीं मिलता. बैक स्टैक लागू करें, ताकि उपयोगकर्ता कार्रवाइयों को पहले जैसा करने या जेस्चर नेविगेशन का इस्तेमाल करके वापस जाने के लिए, Android XR के बैक जेस्चर को ऐक्सेस कर सकें.

हाथ के जेस्चर (स्पर्श) वाले नेविगेशन का इस्तेमाल करने वाले दो हाथ.

यूज़र इंटरफ़ेस (यूआई)

बटन, पैनल, और टेक्स्ट जैसे यूज़र इंटरफ़ेस एलिमेंट, XR ऐप्लिकेशन में स्वाभाविक इंटरैक्शन के लिए ज़रूरी हैं. डिज़ाइन में, उपयोगकर्ता को आसान और सहज अनुभव देने पर ज़्यादा ध्यान दिया जाना चाहिए. यूज़र इंटरफ़ेस (यूआई) के डिज़ाइन के विकल्प, आपके ऐप्लिकेशन की खास ज़रूरतों पर निर्भर करेंगे.

  • मुख्य इंटरैक्टिव एलिमेंट और अहम कॉन्टेंट को उपयोगकर्ता की नज़र के दायरे और फ़ील्ड ऑफ़ व्यू में रखें. इससे, कॉन्टेंट को बेहतर तरीके से देखा जा सकता है और बेहतर अनुभव मिलता है. यह तय करने के लिए कि इंटरफ़ेस को किस दूरी पर रखा जाना चाहिए, यह देखें कि उपयोगकर्ता उससे कैसे इंटरैक्ट करेंगे. उदाहरण के लिए, क्या वे लेज़र पॉइंटर का इस्तेमाल कर रहे हैं या सीधे अपनी उंगलियों से बटन पर टैप कर रहे हैं? उपयोगकर्ता से इंटरफ़ेस की दूरी के हिसाब से, इंटरफ़ेस का साइज़ कॉन्फ़िगर करें. Android XR के साइज़ और स्केल की गाइड देखें.
  • बटन जैसे इंटरैक्टिव यूज़र इंटरफ़ेस (यूआई) एलिमेंट डिज़ाइन करते समय, यह ध्यान रखें कि उपयोगकर्ता उनसे कैसे इंटरैक्ट करेंगे. साथ ही, यह भी ध्यान रखें कि हर इनपुट के तरीके के लिए कितनी सटीक जानकारी की ज़रूरत है. जैसे, हाथ से ट्रैकिंग बनाम माउस. इसके हिसाब से, टारगेट के साइज़ और स्पेसिंग जैसे फ़ैक्टर में बदलाव करें. पक्का करें कि यूज़र इंटरफ़ेस (यूआई) की पोज़िशन, आसानी से इंटरैक्ट करने की सुविधा देती हों. उपयोगकर्ता की कार्रवाइयों के लिए विज़ुअल फ़ीडबैक दें. Android XR की स्टाइल गाइड देखें.
  • पैनल जैसे 2D यूज़र इंटरफ़ेस (यूआई), मेन्यू पर आधारित इंटरैक्शन के लिए सबसे सही होते हैं. स्पेस वाले एनवायरमेंट के साथ इंटरैक्ट करते समय, 3D यूज़र इंटरफ़ेस (यूआई) ज़्यादा असरदार हो सकता है. जैसे, फ़िज़िकल बटन, लीवर, और स्विच. बेहतर तरीके से पढ़ने के लिए पैनल पर आधारित इंटरैक्शन और दुनिया के बारे में जानकारी देने के लिए 3D ऑब्जेक्ट का सही तरीके से इस्तेमाल करके, दर्शकों को बेहतरीन अनुभव दिया जा सकता है.
  • पक्का करें कि टेक्स्ट ऐसे फ़ॉन्ट में लिखा हो जिसे साफ़-साफ़ पढ़ा जा सके. साथ ही, उसका फ़ॉन्ट साइज़ और टाइप सही हो और कंट्रास्ट भी सही हो. उपयोगकर्ताओं को टेक्स्ट देखने की दूरी के आधार पर, यूज़र इंटरफ़ेस (यूआई) की पोज़िशन तय करें. अलग-अलग फ़ॉन्ट साइज़ में टेक्स्ट को आसानी से रेंडर करने के लिए, साइन किए गए डिस्टेंस फ़ील्ड फ़ॉन्ट का इस्तेमाल करें. Android XR टाइपोग्राफ़ी गाइड देखें.

एक व्यक्ति, बहुत बड़ी स्क्रीन पर स्पेसिएल एनवायरमेंट में पूरी तरह से डूबा हुआ है. वे चट्टानों पर खड़े हैं और उनके हाथ में यूज़र इंटरफ़ेस (यूआई) के कंट्रोल हैं.

अलग-अलग दूरी पर इंटरैक्शन

XR में कुछ बेहतरीन इंटरैक्शन में, उपयोगकर्ता सीधे तौर पर 3D ऑब्जेक्ट के साथ इंटरैक्ट कर सकता है. यह किसी ऑब्जेक्ट को उठाने, उसकी जांच करने, और उसे फेंकने जैसा आसान हो सकता है. इसमें ज़्यादा जटिल इंटरैक्शन भी शामिल हैं, जैसे कि लीवर खींचना, बटन दबाना, और उन एलिमेंट के साथ इंटरैक्ट करना जो उपयोगकर्ता के पास पहले से मौजूद हैं. जैसे, स्प्रे बोतल से स्प्रे करना. 3D ऑब्जेक्ट के साथ आसानी से इंटरैक्ट करने के लिए, उपयोगकर्ता की दुनिया के बारे में पहले से मौजूद जानकारी के आधार पर डिज़ाइन करें.

  • अगर आपको असल जैसी कार्रवाइयां बनानी हैं, तो फ़िज़िक्स इंजन इंटिग्रेट करें. Unity में गेम बनाते समय, इसमें पहले से मौजूद फ़िज़िक्स इंजन का इस्तेमाल किया जा सकता है. ध्यान रखें कि फ़िज़िक्स इंजन, प्रोसेसिंग पावर का कितना इस्तेमाल करते हैं. साथ ही, परफ़ॉर्मेंस को ऑप्टिमाइज़ करें.
  • असल जैसा दिखाने के बजाय, उसे ज़्यादा भरोसेमंद बनाना ज़्यादा ज़रूरी है. उदाहरण के लिए, अगर किसी उपयोगकर्ता को लगता है कि उसने गेंद को ज़ोर से फेंका है, तो ऐप्लिकेशन को गेंद में ज़्यादा फ़ोर्स जोड़ना चाहिए. यह फ़ोर्स, डिवाइस के सेंसर से मिले फ़ोर्स से ज़्यादा होना चाहिए.
  • ऑब्जेक्ट को उनके फ़ंक्शन के हिसाब से बनाया जाना चाहिए. इसका मतलब है कि आपके ऐप्लिकेशन में, किसी ऑब्जेक्ट पर या उसके साथ उपयोगकर्ता की हर संभावित कार्रवाई का हिसाब होना चाहिए. उदाहरण के लिए, डोनट को उठाया जा सकता है, फेंका जा सकता है, और खाया जा सकता है. डोनट खाने के बजाय, ऐप्लिकेशन में वॉइसओवर की मदद से यह कहा जा सकता है कि "मुझे अभी भूख नहीं है". ये सलूशन, उन कार्रवाइयों को पूरा करते हैं जिन्हें उपयोगकर्ता डोनट के साथ करना चाहता है.
  • ऑब्जेक्ट को कई तरीकों से होल्ड किया जा सकता है. जैसे, पैरंटिंग, फ़िज़िक्स जॉइंट, फ़ॉलोइंग, और फ़िज़िक्स फ़ोर्स. हर तकनीक के अपने फ़ायदे और नुकसान होते हैं. कस्टम ग्रैब का तरीका लागू करने से पहले, सबसे सही तरीका तय करने के लिए, अलग-अलग तरीकों पर रिसर्च करना और उन्हें आज़माना ज़रूरी है.
  • 3D एनवायरमेंट में डिज़ाइन करते समय, एर्गोनॉमिक्स का ध्यान रखना ज़रूरी है. सुलभता के लिए, सपाट सतहों पर हैंडल जोड़ें, ताकि उपयोगकर्ता उसे अपनी पसंद के हिसाब से ऊंचाई पर सेट कर सके. स्पेस में मौजूद हर ऑब्जेक्ट को अलग-अलग तरह के उपयोगकर्ताओं के साथ टेस्ट करना न भूलें, क्योंकि हर व्यक्ति का शरीर अलग होता है.

Job Simulator, एक ऐसा वीआर गेम है जिसमें उपयोगकर्ता ऑफ़िस के क्विबल में, पुराने कंप्यूटर के सामने बैठा है. इस गेम में वर्चुअल हाथ होते हैं, जो 3D ऑब्जेक्ट के साथ इंटरैक्ट कर सकते हैं.

सीन का डिज़ाइन

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

  • ऐसे सीन सीमित करें जो उपयोगकर्ता के आस-पास घूमते हों. जैसे, फ़्लाइंग. इससे असुविधा हो सकती है. खास तौर पर, अगर उपयोगकर्ता का शरीर एक ही जगह पर बना रहता है. लोकोमोशन की कुछ तकनीकों से, इस समस्या से राहत मिलती है. जैसे, टनल विज़न (इसके बारे में अगले सेक्शन में बताया गया है).
  • मिक्स्ड रिएलिटी अनुभव देने के लिए, Android XR की सीन समझने की सुविधाओं का इस्तेमाल किया जा सकता है. इससे, वर्चुअल ऑब्जेक्ट को उपयोगकर्ता के फ़िज़िकल एनवायरमेंट में इंटिग्रेट किया जा सकता है.
  • वर्चुअल रिएलिटी ऐप्लिकेशन के लिए, हो सकता है कि आप वर्चुअल स्पेस में असल दुनिया के कुछ व्यू शामिल करना चाहें. इससे उपयोगकर्ताओं को अपने आस-पास की चीज़ों के बारे में पता चलता है. साथ ही, इमर्सिव अनुभव के दौरान, वे आस-पास मौजूद चीज़ों के साथ इंटरैक्ट कर पाते हैं.

लोकोमोशन

Android XR के अनुभवों को इस तरह से डिज़ाइन किया जाना चाहिए कि उपयोगकर्ता, कॉन्फ़िगर की गई सीमा के हिसाब से अपने आस-पास के फ़िज़िकल स्पेस में आसानी से घूम सकें. उदाहरण के लिए, कुछ उपयोगकर्ताओं को वर्चुअल अनुभव तब ज़्यादा असरदार लगते हैं, जब उन्हें किसी ऐसे स्पेस के आस-पास डिज़ाइन किया गया हो जिसमें कोई बदलाव न हुआ हो. अगर आपको लगता है कि उपयोगकर्ता, सीमाओं के बजाय बड़े वर्चुअल स्पेस में घूमना चाहेंगे, तो गतिविधियों को बढ़ाने वाली तकनीकों का इस्तेमाल करें. जैसे, टेलीपोर्टेशन.

टेलीपोर्टेशन की मदद से, उपयोगकर्ता किसी नई जगह पर तुरंत जाने के लिए, उस जगह को चुनता है या कंट्रोलर का इस्तेमाल करता है. यह तेज़ी से लंबी दूरियां तय करने के लिए बेहतरीन है. साथ ही, अक्सर यह यात्रा का ऐसा तरीका होता है जिससे मोशन सिकनेस (यात्रा के दौरान होने वाली बीमारी) की संभावना सबसे कम होती है. ट्रांज़िशन के दौरान स्क्रीन को कुछ समय के लिए धुंधला करने से, आरामदायक अनुभव मिल सकता है.

चलने-फिरने के अन्य तरीके

अगर आपने गेम में कहीं जाने के लिए अन्य तरीके इस्तेमाल किए हैं, तो टेलीपोर्टेशन को भी विकल्प के तौर पर उपलब्ध कराएं.

  • अपनी जगह पर हाथ हिलाते हुए चलना: अपनी जगह पर चलने की गतिविधी को सिम्युलेट करने के लिए, अपने हाथ हिलाएं या अपने कंट्रोलर को ऊपर और नीचे घुमाएं. कुछ उपयोगकर्ताओं को यह तरीका थकाऊ या कम आसान लग सकता है.
  • लगातार मूवमेंट: वर्चुअल वर्ल्ड में अपने वर्चुअल वर्शन को मूव करने के लिए, कंट्रोलर के जॉयस्टिक या थंबस्टिक का इस्तेमाल करें. ज़्यादातर मामलों में, आपको इस तरीके का इस्तेमाल नहीं करना चाहिए, क्योंकि यह मोशन सिकनेस की सामान्य वजह है.

अगर आपको अपने अनुभव में लोकोमोशन का इस्तेमाल करना है, तो उपयोगकर्ताओं की प्राथमिकताओं को ध्यान में रखते हुए कई विकल्प दें. इससे उपयोगकर्ता अनुभव को बेहतर बनाने में मदद मिलेगी.

मोशन सिकनेस तब हो सकती है, जब उपयोगकर्ता की असल गतिविधि और वर्चुअल अनुभव में अंतर हो. गतिविधि के दौरान उपयोगकर्ता को ज़्यादा आरामदायक अनुभव देने के लिए:

  • पक्का करें कि वर्चुअल हॉरिज़ॉन्ट एक ही लेवल पर और स्थिर रहे.
  • अगर लगातार किसी ऑब्जेक्ट को दिखाना है, तो उसकी रफ़्तार में अचानक बदलाव न करें. वीडियो की स्पीड एक जैसी रखें.
  • टनल विज़न की मदद से, उपयोगकर्ता के फ़ील्ड ऑफ़ व्यू को छोटा करके, गति से होने वाली बीमारी को कम किया जा सकता है. ऐसा, वाइनेट इफ़ेक्ट की मदद से किया जाता है, जो किनारों पर दिखने वाली गति को सीमित करता है.
  • घुमाने के लिए, उपयोगकर्ता के व्यूपॉइंट को खास ऐंगल पर स्नैप करें. इससे आपको कुछ समय के लिए थोड़ा 'बेहोश' महसूस हो सकता है. हालांकि, इससे मोशन सिकनेस की समस्या कम हो जाएगी.
  • उपयोगकर्ताओं के लिए, विज्ञापन दिखाने की सीमा अलग-अलग होती है. उन्हें अपनी पसंद के हिसाब से, आरामदायक सेटिंग में बदलाव करने की अनुमति दें. जैसे, अपनी पसंद के हिसाब से, आगे बढ़ने का तरीका चुनना, टनल व्यू को चालू या बंद करना या अपनी गति में बदलाव करना.

स्पेशल ऑडियो

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

  • ऑडियो के लिए, Ambisonics की सुविधा, स्काईबॉक्स की तरह काम करती है. इससे आपके उपयोगकर्ताओं को बेहतरीन साउंडस्केप मिलता है. बैकग्राउंड में मौजूद पर्यावरण की आवाज़ों या ऐसी अन्य स्थितियों के लिए ऐम्बिसॉनिक्स का इस्तेमाल करें जहां आपको सुनने वाले के चारों ओर मौजूद साउंड फ़ील्ड को दोहराना हो.
  • स्पेसिएलाइज़्ड ऑडियो के ज़रिए, उपयोगकर्ता का ध्यान खींचा जा सकता है.
  • वीडियो में ज़्यादा दिलचस्पी पैदा करने के लिए, साउंड इफ़ेक्ट को स्पेसिएलाइज़ करें.
  • स्पेसलाइज़ेशन की मदद से, स्पीकर की जगह के हिसाब से आवाज़ को ऑडियो में बदलने पर, उपयोगकर्ताओं को ऐसा लगता है कि स्पीकर उनके सामने है. भले ही, वे स्पीकर के सामने न हों.
  • उपयोगकर्ताओं को ऑडियो की आवाज़ कम या ज़्यादा करने की अनुमति दें. उदाहरण के लिए, हो सकता है कि वे बैकग्राउंड संगीत, साउंड इफ़ेक्ट या वॉइस-ओवर की आवाज़ को बंद करना या बदलना चाहें.
  • बधिर या कम सुनने वाले लोगों के लिए सबटाइटल जोड़ें.

आरामदायक अनुभव के लिए ज़्यादा बातें

सुलभता को प्राथमिकता देने के लिए, उपयोगकर्ताओं की अलग-अलग ज़रूरतों और प्राथमिकताओं के हिसाब से, पसंद के मुताबिक विकल्प उपलब्ध कराएं. इससे यह पक्का होता है कि अलग-अलग तरह के उपयोगकर्ता, immersive experience का आनंद ले पाएं.

  • अपने ऐप्लिकेशन को 72 फ़्रेम प्रति सेकंड पर चलाएं: इससे विज़ुअल में होने वाली झटके वाली गति को कम करने और मतली को रोकने में मदद मिलेगी.
  • उपयोगकर्ताओं को कंट्रोल दें: XR के अलग-अलग लेवल के उपयोगकर्ताओं के लिए, अपने ऐप्लिकेशन को उपयोगकर्ता के हिसाब से बनाएं. इसके लिए, उपयोगकर्ताओं को अपनी पसंद के मुताबिक सेटिंग बनाने की सुविधा दें. उपयोगकर्ताओं को अपनी ज़रूरतों या प्राथमिकताओं के हिसाब से, कंट्रोलर के बटन और जेस्चर को फिर से मैप करने की अनुमति दें. उदाहरण के लिए, जिन लोगों के हाथ में कम मोबिलिटी है उन्हें बटन के अलग-अलग लेआउट या बड़े और आसान इनपुट कंट्रोल से फ़ायदा मिल सकता है.

खास प्लैटफ़ॉर्म के बारे में दिशा-निर्देश पाने के लिए, ये देखें:

OpenXR के लिए ऐप्लिकेशन डेवलप करना

Unity की मदद से डेवलप करना

WebXR का दस्तावेज़