Unity' के एआर फ़ाउंडेशन का इस्तेमाल करके एआर गेम बनाएं

1. खास जानकारी

ARCore, स्मार्टफ़ोन पर ऑगमेंटेड रिएलिटी (एआर) की सुविधा देने वाला Google का फ़्रेमवर्क है. क्रॉस-प्लैटफ़ॉर्म एआर ऐप्लिकेशन बनाने के लिए, Unity के एआर फ़ाउंडेशन का इस्तेमाल किया जा सकता है.

आपको क्या बनाना होगा

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

हालांकि, ऐसा पूरी तरह से वर्चुअल दुनिया में नहीं होगा! खिलाड़ी के आस-पास के माहौल को समझने वाला गेम बनाकर, आपको खिलाड़ियों का एक नया अनुभव देने के लिए, फ़िज़िकल ऐट और डिजिटल बिट को मिलाकर एक नया अनुभव तैयार करना होगा.

इस कोडलैब के खत्म होने तक, आपका गेम ये काम कर पाएगा:

  • असल दुनिया के हवाई जहाज़ों का पता लगाएं और उस पर खेल का मैदान बनाएं.
  • कैमरे के व्यू से किरणें कास्ट करें और हवाई जहाज़ों के साथ बने चौराहों का पता लगाएं.
  • अपने गेम को ज़्यादा रीयलिज़म देने के लिए, असल दुनिया की लाइटिंग पर प्रतिक्रिया दें.

आप इन चीज़ों के बारे में जानेंगे

  • Unity के एआर फ़ाउंडेशन का इस्तेमाल करने वाला प्रोजेक्ट सेट अप करने का तरीका.
  • नए हवाई जहाज़ों की सदस्यता लेने के लिए, ARPlaneManager का इस्तेमाल करने का तरीका.
  • वर्चुअल ज्यामिति वाले चौराहों का पता लगाने के लिए, Raycast का इस्तेमाल करने का तरीका
  • अपने सीन में रोशनी डालने के लिए, ARLightEstimationData का इस्तेमाल कैसे करें.

आपको इनकी ज़रूरत होगी

2. अपना डेवलपमेंट एनवायरमेंट सेट अप करें

इस चरण में, Unity के एआर फ़ाउंडेशन की मदद से, आपको अपने एनवायरमेंट को डेवलपमेंट के लिए तैयार कर लिया जाएगा.

पक्का करें कि आपका डिवाइस एआर के साथ काम करता हो

Android डिवाइसों पर एआर (ऑगमेंटेड रिएलिटी) के अनुभव, ARCore की मदद से मिलते हैं. यह सुविधा ARCore की सुविधा वाले डिवाइसों पर उपलब्ध है. पक्का करें कि आपका डेवलपमेंट डिवाइस एआर के साथ काम करता हो. इसके अलावा, सही तरीके से कॉन्फ़िगर किए गए एआर के साथ काम करने वाले Android एम्युलेटर इंस्टेंस का इस्तेमाल किया जा सकता है.

अपने डिवाइस पर यूएसबी डीबग करने की सुविधा सेट अप करना

डीबग ऐप्लिकेशन चलाने के लिए, आपको अपने डिवाइस पर डेवलपर के लिए सेटिंग और टूल की सुविधा चालू करनी होगी. अगर आपने अब तक ऐसा नहीं किया है, तो डेवलपर के लिए सेटिंग और टूल की सुविधा और यूएसबी डीबग करने की सुविधा चालू करें लेख पढ़ें.

Unity (2020.3 एलटीएस) इंस्टॉल करें

अपने वर्कस्टेशन पर, Unity 2020 LTS इंस्टॉल करें. इस कोडलैब के 2020.3 (LTS) वर्शन में, Unity के यूज़र इंटरफ़ेस (यूआई) के स्क्रीनशॉट दिखाए गए हैं. Unity के अन्य वर्शन काम कर सकते हैं, लेकिन इसके लिए कुछ और चरण पूरे करने पड़ सकते हैं. यह स्क्रीनशॉट, यहां दिखाए गए स्क्रीनशॉट से अलग दिख सकता है.

नया प्रोजेक्ट बनाएं

यूनिवर्सल रेंडर पाइपलाइन टेंप्लेट का इस्तेमाल करके एक नया प्रोजेक्ट बनाएं. इसे एक ब्यौरा देने वाला नाम और सही जगह दें. इसके बाद, बनाएं पर क्लिक करें.

ज़रूरी फ़्रेमवर्क इंस्टॉल करें

Unity का एआर (ऑगमेंटेड रिएलिटी) फ़ाउंडेशन, Unity पैकेज मैनेजर में मौजूद होता है.

  1. इसे खोलने के लिए, Window > पर क्लिक करें पैकेज मैनेजर.

  1. इस विंडो में, वे पैकेज इंस्टॉल करें जिनका इस्तेमाल इस कोडलैब में किया जाएगा. आइकॉन का इस्तेमाल करके इन फ़्रेमवर्क के नए वर्शन की एंट्री को बड़ा करके देखें. इनमें से हर फ़्रेमवर्क के लिए, नए वर्शन इंस्टॉल करें:
    • एआर फ़ाउंडेशन
    • ARCore XR प्लग इन

काम पूरा होने के बाद, आपका पैकेज मैनेजर कुछ ऐसा दिखना चाहिए:

स्टार्टर पैकेज इंस्टॉल करें

इस कोडलैब के लिए, हमने एक स्टार्टर पैकेज उपलब्ध कराया है. इसमें प्रीफ़ैब और स्क्रिप्ट शामिल हैं. इससे कोडलैब के कुछ हिस्सों को जल्दी लोड किया जा सकेगा, ताकि आप एआर फ़ाउंडेशन को इस्तेमाल करने के तरीके पर फ़ोकस कर सकें.

  1. स्टार्टर पैकेज को इंस्टॉल करने के लिए, Assets > पैकेज इंपोर्ट करें > पसंद के मुताबिक पैकेज... और starter-package.unitypackage को खोला जा रहा है.
  2. इसके बाद खुलने वाली विंडो में, पक्का करें कि आपने सब कुछ चुना हो.
  3. इंपोर्ट करें पर क्लिक करें.

बिल्ड की सेटिंग बदलें

चूंकि यह ऐप्लिकेशन Android पर चलेगा, इसलिए बिल्ड प्लैटफ़ॉर्म को Android में बदलें:

  1. फ़ाइल > खोलें बिल्ड सेटिंग.
  2. प्लैटफ़ॉर्म पैनल में, Android चुनें.
  3. इसके अलावा, डेवलपमेंट बिल्ड और स्क्रिप्ट डीबगिंग चालू करें, ताकि आपके ऐप्लिकेशन के चलने के दौरान डीबग करने की जानकारी बनी रहे.
  4. प्लैटफ़ॉर्म स्विच करें पर क्लिक करें.

प्रोजेक्ट की सेटिंग बदलें

स्टार्टअप पर XR सिस्टम शुरू करने के लिए, एआर फ़ाउंडेशन को कॉन्फ़िगर करना ज़रूरी है.

  1. बदलाव करें > प्रोजेक्ट सेटिंग... और XR प्लग-इन मैनेजमेंट सेक्शन पर क्लिक करें.
  2. Android टैब में जाकर, ARCore चालू करें.

  1. बाईं ओर मौजूद पैनल में, खिलाड़ी सेक्शन पर क्लिक करें.
  2. Android टैब में जाकर, अन्य सेटिंग में जाकर, Graphics API से Vulkan को हटाएं.

  1. ARCore का इस्तेमाल करने वाले एआर की मदद से काम करने वाले ऐप्लिकेशन के लिए, एपीआई लेवल 24 होना ज़रूरी है. नीचे की ओर स्क्रोल करें और एपीआई लेवल का कम से कम लेवल ढूंढें. एपीआई लेवल के कम से कम लेवल को 24 पर सेट करें.

सीन के लिए ज़रूरी एलिमेंट जोड़ें

यूनिवर्सल रेंडर पाइपलाइन टेंप्लेट में कुछ ऐसे गेम ऑब्जेक्ट मौजूद हैं जिनका इस्तेमाल इस ट्यूटोरियल में नहीं किया जाएगा.

  1. SampleScene में मौजूद सभी गेम ऑब्जेक्ट मिटाएं.

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

आपकी हैरारकी कुछ इस तरह से दिखनी चाहिए:

  1. क्रम में आपने जो एआर सेशन ऑरिजिन बनाया है उसे बड़ा करें और एआर कैमरा ऑब्जेक्ट चुनें. इंस्पेक्टर में, इसके टैग को MainCamera में बदलें.

रेंडरिंग सेट अप करें

Unity के यूनिवर्सल रेंडर पाइपलाइन को एआर फ़ाउंडेशन के साथ काम करने के लिए, एक बदलाव की ज़रूरत है.

  1. प्रोजेक्ट पैनल में, ऐसेट > सेटिंग ताकि ForRenderer एसेट को ढूंढा जा सके.

  1. ForwardRenderer चुनें.
  2. इंस्पेक्टर पैनल में, एआर (ऑगमेंटेड रिएलिटी) बैकग्राउंड रेंडरर की सुविधा जोड़ने के लिए, रेंडरर की सुविधा जोड़ें का इस्तेमाल करें. यह कॉम्पोनेंट आपके सीन में कैमरा फ़ीड को रेंडर करेगा.

सेटअप की पुष्टि करें

  1. पक्का करें कि आपका डिवाइस प्लग-इन हो और ADB डीबग करने की सुविधा चालू हो.
  2. फ़ाइल > बनाएं और चलाएं... इससे आपके डिवाइस पर ऐप्लिकेशन अपलोड हो जाएगा और इंस्टॉल हो जाने पर यह शुरू हो जाएगा.
  3. आपको अपने डिवाइस की स्क्रीन पर कैमरा फ़ीड दिखेगा.

अगले चरण में, आपको अपने ऐप्लिकेशन में फ़ंक्शन जोड़ना शुरू करना होगा.

3. असल दुनिया में हवाई जहाज़ों का पता लगाएं

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

एक ARPlaneManager कॉम्पोनेंट जोड़ें

ARPlaneManager, ARPlane का पता लगाता है और गेम ऑब्जेक्ट बनाता है, उन्हें अपडेट करता है, और हटाता है. ऐसा तब होता है, जब डिवाइस, आस-पास के माहौल की जानकारी को समझ लेता है.

  1. हैरारकी पैनल का इस्तेमाल करके, खाली GameObject बनाएं.
  2. इसका नाम बदलकर Driving Surface Manager करें. यह कॉम्पोनेंट तब तक हवाई जहाज़ों को दिखाता रहेगा, जब तक प्लेयर इनमें से किसी एक को नहीं चुन लेता.
  3. नया गेम ऑब्जेक्ट चुनें. इंस्पेक्टर पैनल में, एआर प्लेन मैनेजर जोड़ने के लिए कॉम्पोनेंट जोड़ें पर क्लिक करें.

  1. Plane Prefab फ़ील्ड को सेट करके, ARPlaneManager को कॉन्फ़िगर करें:
    1. Select GameObject विंडो लाने के लिए, None के बगल में मौजूद बटन पर क्लिक करें.
    2. ऐसेट टैब चुनें और ड्राइविंग सरफ़ेस प्लेन खोजें.

स्टार्टर पैकेज का यह प्रीफ़ैब, फ़्लोर को आकर्षक बनाता है. इसका इस्तेमाल हवाई जहाज़ की सजावट के लिए किया जाएगा.

  1. Detection Mode को Horizontal में बदलें. यह ARPlaneManager को सिर्फ़ हॉरिज़ॉन्टल प्लेन उपलब्ध कराने के लिए कॉन्फ़िगर करता है, जो गाड़ी चलाने के लिए बेहतर होते हैं.

एक ARRaycastManager कॉम्पोनेंट जोड़ें

ARRaycastManager, रेकास्ट फ़ंक्शन की जानकारी दिखाता है. अगले चरण में, हम उपयोगकर्ता को कंट्रोल देने के लिए इस ऑब्जेक्ट का इस्तेमाल करेंगे.

  1. पक्का करें कि हैरारकी पैनल में Driving Surface Manager नाम का ऑब्जेक्ट चुना गया हो.
  2. इंस्पेक्टर में, अपने गेम ऑब्जेक्ट में कोई ARRaycastManager कॉम्पोनेंट जोड़ने के लिए, कॉम्पोनेंट जोड़ें पर क्लिक करें.

इस कॉम्पोनेंट के लिए किसी और कॉन्फ़िगरेशन की ज़रूरत नहीं है.

DrivingSurfaceManager कॉम्पोनेंट जोड़ें

DrivingSurfaceManager, स्टार्टर पैकेज की एक हेल्पर स्क्रिप्ट है. इसकी मदद से, ARPlane को चुना जा सकता है. ARPlane को चुनने के बाद, बाकी सभी प्लेन छिपा दिए जाएंगे और नए हवाई जहाज़ बंद कर दिए जाएंगे.

  1. पक्का करें कि हैरारकी पैनल में Driving Surface Manager नाम का ऑब्जेक्ट चुना गया हो.
  2. इंस्पेक्टर में, अपने गेम ऑब्जेक्ट में DrivingSurfaceManager कॉम्पोनेंट जोड़ने के लिए, कॉम्पोनेंट जोड़ें पर क्लिक करें.

इस कॉम्पोनेंट के लिए किसी और कॉन्फ़िगरेशन की ज़रूरत नहीं है.

ऐप्लिकेशन चलाएं

  1. फ़ाइल > अपने बदलावों को टेस्ट करने के लिए, बनाएं और चलाएं....
  2. अपने डिवाइस को हॉरिज़ॉन्टल असल दुनिया की सतह पर रखें और दुनिया के बारे में ARCore को बेहतर तरीके से समझने के लिए अपने डिवाइस को चारों ओर घुमाएं.

  1. जब ARCore को हवाई जहाज़ का पता चलता है, तो आपको असल दुनिया की सतहों पर गंदगी दिखने लगेगी. ARPlaneManager, खोजे गए हर हवाई जहाज़ के लिए दिए गए Plane Prefab को इंस्टैंशिएट करता है. Driving Surface Plane प्रीफ़ैब में एक ARPlaneMeshVisualizer कॉम्पोनेंट होता है, जो दिए गए ARPlane के लिए एक मेश बनाता है.

अगले चरण में, पहचाने गए हवाई जहाज़ का इस्तेमाल खेल के मैदान के तौर पर किया जाएगा.

4. जिन हवाई जहाज़ों का पता चला है उनकी तुलना में हिट टेस्ट करें

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

टारगेट करने के लिए रेटिकल बनाना

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

"स्टिक" करने के लिए एआर प्लेन का यह रेटिकल, तो हिट टेस्ट का इस्तेमाल करें. हिट टेस्ट एक ऐसी तकनीक है जो किसी दी गई दिशा में रे कास्ट करते समय, इंटरसेक्शन की गणना करती है. कैमरे के व्यू की दिशा में किसी चौराहे का पता लगाने के लिए, हिट टेस्ट का इस्तेमाल किया जाएगा.

रेटिकल जोड़ें

  1. स्क्रीन पर सबसे नीचे मौजूद प्रोजेक्ट पैनल में, ऐसेट > पर जाएं स्टार्टर पैकेज.
  2. Reticle Prefab को प्रोजेक्ट के क्रम के पैनल में खींचकर, सीन में रखें.
  3. क्रम में रेटिकल को चुनें.
  4. जांचने वाले टूल में, कॉम्पोनेंट जोड़ें पर क्लिक करें. स्टार्टर पैकेज से ReticleBehaviour स्क्रिप्ट जोड़ें. इस स्क्रिप्ट में रेटिकल को नियंत्रित करने के लिए कुछ बॉयलरप्लेट मौजूद हैं.
  5. ReticleBehaviour स्क्रिप्ट, पहले बनाए गए Driving Surface Manager पर निर्भर करती है. इसलिए, Driving Surface Manager सिलेक्टर पर क्लिक करके डिपेंडेंसी जोड़ें. सीन टैब चुनें और Driving Surface Manager चुनें.

ReticleBehaviour में बदलाव करें

ReticleBehavior स्क्रिप्ट, डिवाइस के व्यूपोर्ट के बीच में मौजूद प्लेन पर रेटिकल की जगह तय करेगी.

  1. Script फ़ील्ड पर दो बार क्लिक करके, ReticleBehaviour.cs स्क्रिप्ट खोलें.
  2. कैमरे के ViewToScreenPoint का इस्तेमाल करके, स्क्रीन के बीच वाले हिस्से से छुएं. Update() तरीके में बदलाव करके, इन्हें जोड़ें:
var screenCenter = Camera.main.ViewportToScreenPoint(new Vector3(0.5f, 0.5f));
  1. इस पॉइंट का इस्तेमाल करके रेकास्ट करें. इन्हें जोड़ें:
var hits = new List<ARRaycastHit>();
DrivingSurfaceManager.RaycastManager.Raycast(screenCenter, hits, TrackableType.PlaneWithinBounds);

वैरिएबल hits में ARRaycastHit शामिल होंगे. ये ट्रैक किए जा सकने वाले उन पॉइंट के बारे में बताते हैं जिन्हें ray से इंटरसेक्ट किया गया है.

  1. hits सूची पर क्वेरी करके, इंटरसेक्शन का पता लगाएं. DrivingSurfaceManager में मौजूद लॉक किए गए प्लेन को प्राथमिकता दें. अगर यह मौजूद नहीं है, तो पहले प्लेन हिट का इस्तेमाल करें. Update() के आखिर में यह जोड़ें:
CurrentPlane = null;
ARRaycastHit? hit = null;
if (hits.Length > 0)
{
    // If you don't have a locked plane already...
    var lockedPlane = DrivingSurfaceManager.LockedPlane;
    hit = lockedPlane == null
        // ... use the first hit in `hits`.
        ? hits[0]
        // Otherwise use the locked plane, if it's there.
        : hits.SingleOrDefault(x => x.trackableId == lockedPlane.trackableId);
}
  1. अगर hit में कोई परिणाम शामिल है, तो इस GameObject के रूपांतरण को हिट स्थिति में ले जाएं.
if (hit.HasValue)
{
    CurrentPlane = DrivingSurfaceManager.PlaneManager.GetPlane(hit.Value.trackableId);
    // Move this reticle to the location of the hit.
    transform.position = hit.Value.pose.position;
}
Child.SetActive(CurrentPlane != null);

रेटिकल की जांच करें

  1. फ़ाइल > अपने बदलावों को टेस्ट करने के लिए, बनाएं और चलाएं....
  2. जब आप अपने डिवाइस को समतल जगह पर रखते हैं, तो आपको अपने कैमरे की मूवमेंट के हिसाब से रेटिकल दिखेगा.

कार बनाएं

खिलाड़ी एक खिलौना कार को नियंत्रित करेगा, जो रेटिकल की जगह की ओर ड्राइव करेगी. इस कार के मॉडल और व्यवहार की जानकारी स्टार्टर पैकेज में दी गई है.

अपने सीन में CarManager जोड़ें

  1. क्रम में, कोई नया खाली GameObject बनाएं.
  2. इसका नाम बदलकर Car Spawner करें.
  3. आपने जो ऑब्जेक्ट बनाया है उसे चुनें. क्रम वाले पैनल में, CarManager कॉम्पोनेंट जोड़ने के लिए कॉम्पोनेंट जोड़ें पर क्लिक करें.
  4. हर फ़ील्ड के लिए, चुनने के विकल्प पर क्लिक करके CarManager की डिपेंडेंसी सेट अप करें:
    • कार प्रीफ़ैब: ऐसेट में जाकर कार प्रीफ़ैब चुनें.
    • Reticle: सीन में, Reticle Prefab को चुनें.
    • ड्राइविंग प्लैटफ़ॉर्म मैनेजर: सीन में, ड्राइविंग सरफ़ेस मैनेजर चुनें.

CarManager के इस व्यवहार से उस हवाई जहाज़ पर एक खिलौना कार बनती है जिस पर रेटिकल चालू है. अगर आप चाहें, तो CarBehaviour स्क्रिप्ट देखें. इससे आपको पता चलेगा कि कार को कैसे प्रोग्राम किया गया है.

टेस्ट ड्राइविंग

  1. फ़ाइल > अपने बदलावों को टेस्ट करने के लिए, बनाएं और चलाएं.
  2. किसी हवाई जहाज़ पर टैप करने पर, आपको उस जगह पर एक छोटी कार दिखेगी. यह कार रेटिकल के पीछे से जाएगी.

गेम एलिमेंट जोड़ें

अब प्लेयर, सीन में मौजूद किसी इकाई को कंट्रोल कर सकता है. इसलिए, प्लेयर को ऐसा डेस्टिनेशन दें जिस पर वह ड्राइव करके पहुंच सके.

  1. हैरारकी में एक नया खाली GameObject बनाएं.
  2. इसका नाम बदलकर Package Spawner करें.
  3. आपने जो ऑब्जेक्ट बनाया है उसे चुनें. क्रम के पैनल में, PackageSpawner कॉम्पोनेंट को जोड़ने के लिए कॉम्पोनेंट जोड़ें पर क्लिक करें.
  4. हर फ़ील्ड के लिए, चुनने के विकल्प पर क्लिक करके PackageSpawner की डिपेंडेंसी सेट अप करें:
    • पैकेज Prefab: Assets में, पैकेज Prefab चुनें.
    • ड्राइविंग प्लैटफ़ॉर्म मैनेजर सीन में, ड्राइविंग सरफ़ेस मैनेजर चुनें.

अगर पहले से कोई पैकेज नहीं है, तो PackageSpawner लॉक किए गए ARPlane पर किसी भी क्रम में एक नया पैकेज बनाता है.

गेम की जांच करें

  1. फ़ाइल > अपने बदलावों को टेस्ट करने के लिए, बनाएं और चलाएं. 2, जब आप कार बना लेते हैं, तो एक पैकेज बढ़ता है.
  2. अपनी कार को पैकेज तक ले जाएं.
  3. किसी रैंडम स्थान पर एक नया दिखाई देगा.

5. लाइटिंग का अनुमान लगाने की सुविधा सेट अप करें

आपका बेसिक गेम पूरा हो गया है. इसलिए, अपने एआर (ऑगमेंटेड रिएलिटी) सीन में कुछ असली अंदाज़ में दिखाएं. इस चरण में, आने वाले कैमरे के फ़्रेम के आधार पर असल दुनिया में मौजूद लाइटिंग का पता लगाने के लिए, ARCore के Lighting estimation API का इस्तेमाल किया जा सकता है. इस जानकारी का इस्तेमाल, आपके सीन की रोशनी को असल दुनिया की लाइटिंग के हिसाब से बनाने के लिए किया जाएगा.

लाइटिंग का अनुमान लगाने की सुविधा चालू करें

  1. क्रम में, एआर सेशन की शुरुआत की जगह को बड़ा करें और एआर कैमरा ऑब्जेक्ट चुनें.
  2. इंस्पेक्टर में जाकर, एआर कैमरा मैनेजर स्क्रिप्ट को बड़ा करें.
  3. लाइटिंग अनुमान फ़ील्ड को एवरीथिंग में बदलें.

दिशा बदलने वाली लाइट में बदलाव करें

  1. क्रम में, डायरेक्शनल लाइट ऑब्जेक्ट चुनें.
  2. इसमें LightEstimation कॉम्पोनेंट जोड़ें. स्टार्टर पैकेज का यह कॉम्पोनेंट, लाइटिंग में होने वाले बदलावों के लिए कुछ बॉयलरप्लेट उपलब्ध कराता है.
  3. FrameReceived() फ़ंक्शन में, यह जोड़ें:
ARLightEstimationData lightEstimation = args.lightEstimation;

if (lightEstimation.averageBrightness.HasValue)
    Light.intensity = lightEstimation.averageBrightness.Value;

if (lightEstimation.averageColorTemperature.HasValue)
    Light.colorTemperature = lightEstimation.averageColorTemperature.Value;

if (lightEstimation.colorCorrection.HasValue)
    Light.color = lightEstimation.colorCorrection.Value;

if (lightEstimation.mainLightDirection.HasValue)
    Light.transform.rotation = Quaternion.LookRotation(lightEstimation.mainLightDirection.Value);

if (lightEstimation.mainLightColor.HasValue)
    Light.color = lightEstimation.mainLightColor.Value;

if (lightEstimation.mainLightIntensityLumens.HasValue)
    Light.intensity = lightEstimation.averageMainLightBrightness.Value;

if (lightEstimation.ambientSphericalHarmonics.HasValue)
{
    RenderSettings.ambientMode = AmbientMode.Skybox;
    RenderSettings.ambientProbe = lightEstimation.ambientSphericalHarmonics.Value;
}

बदलावों की जांच करना

  1. फ़ाइल > अपने बदलावों को टेस्ट करने के लिए, बनाएं और चलाएं.
  2. सीन में मौजूद चीज़ों को देखते समय, आपने देखा होगा कि वे आस-पास की लाइटिंग के हिसाब से रंगीन हैं.
  3. अगर हो सके, तो रोशनी में बदलाव करें. उदाहरण के लिए, आप जिस कमरे में हैं उसकी लाइटें बंद करके देखें. आपको दिखना चाहिए कि चीज़ों की रोशनी असल दुनिया की रोशनी में हो रहे बदलाव के हिसाब से ढल जाती है.

6. आखिर में खास जानकारी

बधाई हो! आपने Unity AR Foundation पर मौजूद इस कोडलैब के आखिर में पहुंच बना लिया है.

आपने क्या कवर किया

  • Unity के एआर फ़ाउंडेशन और यूनिवर्सल रेंडरिंग पाइपलाइन का इस्तेमाल करके, बुनियादी प्रोजेक्ट सेट अप करने का तरीका.
  • नए हवाई जहाज़ों की सदस्यता लेने के लिए, ARPlaneManager का इस्तेमाल करने का तरीका.
  • वर्चुअल ज्यामिति के इंटरसेक्शन खोजने के लिए, Raycast का इस्तेमाल करने का तरीका.
  • अपने सीन में रोशनी डालने के लिए, ARLightEstimationData का इस्तेमाल कैसे करें.

अगले चरण

बोनस असाइनमेंट

अगर आप यहां अपने बनाए हुए गेम को आगे बढ़ाना चाहते हैं, तो यहां दिए गए कुछ आइडिया को अपनाएं:

  • जब PackageManager कोई नया पैकेज तैयार करता है, तो TextMeshPro में बदलाव करके, अपने गेम में स्कोर काउंटर जोड़ें.
  • जब आपका गेम चल रहा हो, तब परफ़ॉर्मेंस ओवरले को चालू करके परफ़ॉर्मेंस की जानकारी देखें.
  • पहले अपने सीन में नए ऑब्जेक्ट रखने के लिए, परसिस्टेंट रेकास्ट का इस्तेमाल करें. जब उस क्षेत्र में किसी प्लेन का पता चलता है, तो वह ऑब्जेक्ट उस प्लेन में स्नैप करने के लिए अपडेट हो जाएगा.