इस कोडलैब (कोड बनाना सीखने के लिए ट्यूटोरियल) के बारे में जानकारी
1. खास जानकारी
ARCore, Google का एक फ़्रेमवर्क है. इसका इस्तेमाल करके, स्मार्टफ़ोन पर ऑगमेंटेड रिएलिटी (एआर) के अनुभव दिए जा सकते हैं. क्रॉस-प्लैटफ़ॉर्म एआर ऐप्लिकेशन बनाने के लिए, Unity के एआर फ़ाउंडेशन का इस्तेमाल किया जा सकता है.
आपको क्या बनाना है
इस कोडलैब में, AR Foundation का इस्तेमाल करके एक आसान गेम बनाया जाएगा. इस गेम का मकसद, एक कार का इस्तेमाल करके पैकेज इकट्ठा करना है. इस कार को हैंडहेल्ड डिवाइस से कंट्रोल किया जाता है.
हालांकि, ऐसा पूरी तरह से वर्चुअल दुनिया में नहीं होगा! खिलाड़ी के आस-पास के माहौल को समझने वाला गेम बनाकर, आपको खिलाड़ियों का एक नया अनुभव देने के लिए, फ़िज़िकल ऐट और डिजिटल बिट को मिलाकर एक नया अनुभव तैयार करना होगा.
इस कोडलैब के आखिर तक, आपका गेम ये काम कर पाएगा:
- रीयल-लाइफ़ प्लेन का पता लगाना और उस पर गेमिंग फ़ील्ड बनाना.
- कैमरे के व्यू से किरणें कास्ट करें और हवाई जहाज़ों के साथ बने चौराहों का पता लगाएं.
- अपने गेम को ज़्यादा असली बनाने के लिए, असल दुनिया की रोशनी की स्थितियों के हिसाब से बदलाव करें.
आपको क्या सीखने को मिलेगा
- Unity के एआर फ़ाउंडेशन का इस्तेमाल करने वाला प्रोजेक्ट सेट अप करने का तरीका.
- नए हवाई जहाज़ों की सदस्यता लेने के लिए,
ARPlaneManager
का इस्तेमाल करने का तरीका. - वर्चुअल ज्यामिति के इंटरसेक्शन ढूंढने के लिए,
Raycast
का इस्तेमाल करने का तरीका - अपने सीन को रोशन करने के लिए,
ARLightEstimationData
का इस्तेमाल करने का तरीका.
आपको किन चीज़ों की ज़रूरत होगी
- ARCore के साथ काम करने वाला डिवाइस, जिसे यूएसबी केबल की मदद से डेवलपमेंट मशीन से कनेक्ट किया गया हो.
- Google Play Services for AR 1.23 या इसके बाद का वर्शन.
- Unity Hub या Unity 2020 LTS इंस्टॉल किया गया हो.
2. अपना डेवलपमेंट एनवायरमेंट सेट अप करें
इस चरण में, Unity के एआर फ़ाउंडेशन की मदद से, आपको अपने एनवायरमेंट को डेवलपमेंट के लिए तैयार कर लिया जाएगा.
पक्का करें कि आपका डिवाइस एआर के साथ काम करता हो
Android डिवाइसों पर एआर की सुविधाएं, ARCore की मदद से काम करती हैं. यह सुविधा ARCore के साथ काम करने वाले डिवाइसों पर उपलब्ध है. पक्का करें कि आपका डिवाइस, एआर के साथ काम करता हो. इसके अलावा, एआर (ऑगमेंटेड रिएलिटी) के साथ काम करने वाले Android एमुलेटर इंस्टेंस का इस्तेमाल किया जा सकता है. हालांकि, इसके लिए ज़रूरी है कि उसे सही तरीके से कॉन्फ़िगर किया गया हो.
अपने डिवाइस पर यूएसबी डीबग करने की सुविधा सेट अप करना
डीबग ऐप्लिकेशन चलाने के लिए, आपको अपने डिवाइस पर डेवलपर के लिए सेटिंग और टूल चालू करने होंगे. अगर आपने अब तक ऐसा नहीं किया है, तो डेवलपर के विकल्प और यूएसबी डीबगिंग की सुविधा चालू करना लेख पढ़ें.
Unity (2020.3 LTS) इंस्टॉल करना
अपने वर्कस्टेशन पर, Unity 2020 LTS इंस्टॉल करें. इस कोडलैब के 2020.3 (LTS) वर्शन में, Unity के यूज़र इंटरफ़ेस (यूआई) के स्क्रीनशॉट दिखाए गए हैं. Unity के अन्य वर्शन काम कर सकते हैं. हालांकि, इसके लिए आपको कुछ और चरण पूरे करने पड़ सकते हैं. यह स्क्रीनशॉट, यहां दिखाए गए स्क्रीनशॉट से अलग दिख सकता है.
नया प्रोजेक्ट बनाएं
यूनिवर्सल रेंडर पाइपलाइन टेंप्लेट का इस्तेमाल करके नया प्रोजेक्ट बनाएं. इसे एक ब्यौरा देने वाला नाम और सही जगह दें. इसके बाद, बनाएं पर क्लिक करें.
ज़रूरी फ़्रेमवर्क इंस्टॉल करना
Unity का एआर (ऑगमेंटेड रिएलिटी) फ़ाउंडेशन, Unity पैकेज मैनेजर में मौजूद होता है.
- इसे खोलने के लिए, विंडो > पैकेज मैनेजर पर क्लिक करें.
- इस विंडो में, वे पैकेज इंस्टॉल करें जिनका इस्तेमाल आपको इस कोडलैब में करना है.
►
आइकॉन का इस्तेमाल करके इन फ़्रेमवर्क के नए वर्शन की एंट्री को बड़ा करके देखें. इनमें से हर फ़्रेमवर्क के लिए, नया वर्शन इंस्टॉल करें:- एआर फ़ाउंडेशन
- ARCore XR प्लग इन
बदलाव करने के बाद, आपका पैकेज मैनेजर कुछ ऐसा दिखेगा:
स्टार्टर पैकेज इंस्टॉल करें
इस कोडलैब के लिए, हमने एक स्टार्टर पैकेज उपलब्ध कराया है. इसमें प्रीफ़ैब और स्क्रिप्ट शामिल हैं. इससे कोडलैब के कुछ हिस्सों को जल्दी लोड किया जा सकेगा, ताकि आप एआर फ़ाउंडेशन को इस्तेमाल करने के तरीके पर फ़ोकस कर सकें.
- स्टार्टर पैकेज को इंस्टॉल करने के लिए, Assets > पैकेज इंपोर्ट करें > कस्टम पैकेज... और
starter-package.unitypackage
को खोला जा रहा है. - इसके बाद खुलने वाली विंडो में, पक्का करें कि आपने सब कुछ चुना हो.
- इंपोर्ट करें पर क्लिक करें.
बिल्ड सेटिंग बदलना
ऐप्लिकेशन Android पर चलेगा, इसलिए बिल्ड प्लैटफ़ॉर्म को Android पर बदलें:
- फ़ाइल > बिल्ड सेटिंग खोलें.
- प्लैटफ़ॉर्म पैनल में, Android चुनें.
- इसके अलावा, डेवलपमेंट बिल्ड और स्क्रिप्ट डीबगिंग चालू करें, ताकि आपके ऐप्लिकेशन के चलने के दौरान डीबग करने की जानकारी बनी रहे.
- प्लैटफ़ॉर्म स्विच करें पर क्लिक करें.
प्रोजेक्ट की सेटिंग बदलना
स्टार्टअप पर XR सिस्टम शुरू करने के लिए, एआर फ़ाउंडेशन को कॉन्फ़िगर करना ज़रूरी है.
- बदलाव करें > प्रोजेक्ट सेटिंग... खोलें और एक्सआर प्लग-इन मैनेजमेंट सेक्शन पर क्लिक करें.
- Android टैब में जाकर, ARCore चालू करें.
- बाईं ओर मौजूद पैनल में, प्लेयर सेक्शन पर क्लिक करें.
- Android टैब में जाकर, अन्य सेटिंग में जाकर, Graphics API से Vulkan को हटाएं.
- ARCore का इस्तेमाल करने वाले एआर की मदद से काम करने वाले ऐप्लिकेशन के लिए, एपीआई लेवल 24 होना ज़रूरी है. नीचे की ओर स्क्रोल करें और एपीआई लेवल का कम से कम लेवल ढूंढें. एपीआई लेवल को कम से कम 24 पर सेट करें.
सीन के लिए ज़रूरी एलिमेंट जोड़ें
Universal Render Pipeline टेंप्लेट में कुछ गेम ऑब्जेक्ट होते हैं. हालांकि, इस ट्यूटोरियल में इनका इस्तेमाल नहीं किया जाएगा.
SampleScene
में मौजूद सभी गेम ऑब्जेक्ट मिटाएं.
- एआर फ़ाउंडेशन ऑब्जेक्ट जोड़ें. क्रम वाले पैनल में राइट क्लिक करें. इसे जोड़ने के लिए इस मेन्यू का इस्तेमाल करें:
- एक्सआर > एआर सेशन: यह ऑब्जेक्ट, एआर के अनुभव की लाइफ़साइकल को कंट्रोल करता है.
- एक्सआर > एआर सेशन ऑरिजिन: यह ऑब्जेक्ट, एआर निर्देशांक को यूनिटी वर्ल्ड निर्देशांक में बदल देता है.
- हल्का > डायरेक्शनल लाइट: यह गेम ऑब्जेक्ट को रोशन करने के लिए लाइट सोर्स देता है.
आपकी हैरारकी कुछ इस तरह से दिखनी चाहिए:
- क्रम में आपने जो एआर सेशन ऑरिजिन बनाया है उसे बड़ा करें और एआर कैमरा ऑब्जेक्ट चुनें. जांचने वाले टूल में, इसके टैग को MainCamera पर सेट करें.
रेंडरिंग सेट अप करना
Unity के यूनिवर्सल रेंडर पाइपलाइन को एआर फ़ाउंडेशन के साथ काम करने के लिए, एक बदलाव की ज़रूरत है.
- प्रोजेक्ट पैनल में, ऐसेट > सेटिंग ताकि ForRenderer एसेट को ढूंढा जा सके.
- ForwardRenderer चुनें.
- एआर बैकग्राउंड रेंडरर की सुविधा जोड़ने के लिए, इंस्पेक्टर पैनल में रेंडरर की सुविधा जोड़ें का इस्तेमाल करें. यह कॉम्पोनेंट, आपके सीन में कैमरे के फ़ीड को रेंडर करेगा.
सेटअप की पुष्टि करें
- पक्का करें कि आपका डिवाइस प्लग इन हो और ADB डीबगिंग चालू हो.
- फ़ाइल > बनाएं और चलाएं... पर क्लिक करें ऐसा करने पर, ऐप्लिकेशन आपके डिवाइस पर अपलोड हो जाएगा और इंस्टॉल होने के बाद चालू हो जाएगा.
- आपको अपने डिवाइस की स्क्रीन पर कैमरा फ़ीड दिखेगा.
अगले चरण में, आपको अपने ऐप्लिकेशन में फ़ंक्शन जोड़ने होंगे.
3. असल दुनिया में फ़्लाइट का पता लगाना
बुनियादी सीन सेट अप हो जाने के बाद, गेम डेवलप करना शुरू किया जा सकता है. इस चरण में, आपको फ़्लाइट का पता लगाना होगा और उन्हें सीन में ड्रॉ करना होगा.
ARPlaneManager
कॉम्पोनेंट जोड़ना
ARPlaneManager
, ARPlane
का पता लगाता है. साथ ही, जब डिवाइस के आस-पास के माहौल में बदलाव होता है, तो गेम ऑब्जेक्ट बनाता है, अपडेट करता है, और हटाता है.
- हैरारकी पैनल का इस्तेमाल करके, खाली
GameObject
बनाएं. - इसका नाम बदलकर
Driving Surface Manager
करें. यह कॉम्पोनेंट तब तक हवाई जहाज़ों को दिखाता रहेगा, जब तक प्लेयर इनमें से किसी एक को नहीं चुन लेता. - नया गेम ऑब्जेक्ट चुनें. एआर प्लेन मैनेजर जोड़ने के लिए, Inspector पैनल में कॉम्पोनेंट जोड़ें पर क्लिक करें.
Plane Prefab
फ़ील्ड को सेट करके,ARPlaneManager
को कॉन्फ़िगर करें:- गेम आइटम चुनें विंडो खोलने के लिए,
None
के बगल में मौजूद बटन पर क्लिक करें. - ऐसेट टैब चुनें और ड्राइविंग सरफ़ेस प्लेन खोजें.
- गेम आइटम चुनें विंडो खोलने के लिए,
स्टार्टर पैकेज का यह प्रीफ़ैब, फ़्लोर को आकर्षक बनाता है. इसका इस्तेमाल हवाई जहाज़ की सजावट के लिए किया जाएगा.
Detection Mode
कोHorizontal
में बदलें. यहARPlaneManager
को सिर्फ़ हॉरिज़ॉन्टल प्लेन उपलब्ध कराने के लिए कॉन्फ़िगर करता है, जो गाड़ी चलाने के लिए बेहतर होते हैं.
ARRaycastManager
कॉम्पोनेंट जोड़ना
ARRaycastManager
, रेकास्ट फ़ंक्शन की जानकारी दिखाता है. अगले चरण में, हम उपयोगकर्ता को कंट्रोल देने के लिए इस ऑब्जेक्ट का इस्तेमाल करेंगे.
- पक्का करें कि हैरारकी पैनल में,
Driving Surface Manager
नाम का ऑब्जेक्ट चुना गया हो. - इंस्पेक्टर में, अपने गेम ऑब्जेक्ट में कोई
ARRaycastManager
कॉम्पोनेंट जोड़ने के लिए, कॉम्पोनेंट जोड़ें पर क्लिक करें.
इस कॉम्पोनेंट के लिए किसी और कॉन्फ़िगरेशन की ज़रूरत नहीं है.
DrivingSurfaceManager
कॉम्पोनेंट जोड़ना
DrivingSurfaceManager
, स्टार्टर पैकेज की एक हेल्पर स्क्रिप्ट है. इसकी मदद से, ARPlane
को चुना जा सकता है. ARPlane
को चुनने के बाद, बाकी सभी प्लेन छिपा दिए जाएंगे और नए हवाई जहाज़ बंद कर दिए जाएंगे.
- पक्का करें कि हैरारकी पैनल में,
Driving Surface Manager
नाम का ऑब्जेक्ट चुना गया हो. - इंस्पेक्टर में, अपने गेम ऑब्जेक्ट में
DrivingSurfaceManager
कॉम्पोनेंट जोड़ने के लिए, कॉम्पोनेंट जोड़ें पर क्लिक करें.
इस कॉम्पोनेंट के लिए, किसी और कॉन्फ़िगरेशन की ज़रूरत नहीं है.
ऐप्लिकेशन चलाना
- फ़ाइल > अपने बदलावों को टेस्ट करने के लिए, बनाएं और चलाएं....
- अपने डिवाइस को हॉरिज़ॉन्टल असल दुनिया की सतह पर रखें और दुनिया के बारे में ARCore को बेहतर तरीके से समझने के लिए अपने डिवाइस को चारों ओर घुमाएं.
- जब ARCore को किसी प्लेन का पता चलता है, तो आपको असल दुनिया की सतहों पर गंदगी का टेक्स्चर दिखेगा.
ARPlaneManager
, पहचाने गए हर प्लेन के लिए दिए गएPlane Prefab
को इंस्टैंशिएट करता है.Driving Surface Plane
प्रीफ़ैब में एकARPlaneMeshVisualizer
कॉम्पोनेंट होता है, जो दिए गएARPlane
के लिए एक मेश बनाता है.
अगले चरण में, आपको पहचाने गए प्लेन का इस्तेमाल, गेमिंग फ़ील्ड के तौर पर करना होगा.
4. जिन हवाई जहाज़ों का पता चला है उनकी तुलना में हिट टेस्ट करें
पिछले चरण में, आपने एक ऐसा ऐप्लिकेशन प्रोग्राम किया था जो प्लेन का पता लगा सकता है. ये प्लेन आपके गेम के सीन में दिखते हैं. अब आपको इन प्लेन के साथ इंटरैक्टिविटी जोड़नी होगी. इसके लिए, आपको एक टारगेट करने वाला रेटिकल और एक कार बनानी होगी, जो ढूंढे गए प्लेन की सतह पर चलेगी.
टारगेट करने के लिए रेटिकल बनाना
इस ऐप्लिकेशन की कंट्रोल स्कीम में, प्लेयर अपने फ़ोन को किसी जगह की ओर इशारा करता है. तय की गई जगह के बारे में साफ़ तौर पर विज़ुअल फ़ीडबैक देने के लिए, आपको टारगेट करने वाले रेटिकल का इस्तेमाल करना होगा.
इस रेटिकल को एआर प्लेन पर "चिपकाने" के लिए, हिट टेस्ट का इस्तेमाल करें. हिट टेस्ट एक ऐसी तकनीक है जो किसी दी गई दिशा में रे कास्ट करते समय, इंटरसेक्शन की गणना करती है. कैमरे के व्यू की दिशा में किसी चौराहे का पता लगाने के लिए, हिट टेस्ट का इस्तेमाल किया जाएगा.
रेटिकल जोड़ना
- स्क्रीन पर सबसे नीचे मौजूद प्रोजेक्ट पैनल में, एसेट > स्टार्टर पैकेज पर जाएं.
- Reticle Prefab को प्रोजेक्ट के क्रम के पैनल में खींचकर, सीन में रखें.
- हैरारकी में रेटिकल चुनें.
- इंस्पेक्टर में, कॉम्पोनेंट जोड़ें पर क्लिक करें. स्टार्टर पैकेज से
ReticleBehaviour
स्क्रिप्ट जोड़ें. इस स्क्रिप्ट में, रेटिकल को कंट्रोल करने के लिए कुछ बोइलरप्लेट शामिल हैं. ReticleBehaviour
स्क्रिप्ट, पहले बनाए गएDriving Surface Manager
पर निर्भर करती है. इसलिए,Driving Surface Manager
सिलेक्टर पर क्लिक करके डिपेंडेंसी जोड़ें. सीन टैब चुनें औरDriving Surface Manager
चुनें.
ReticleBehaviour
में बदलाव करना
ReticleBehavior
स्क्रिप्ट, डिवाइस के व्यूपोर्ट के बीच में मौजूद प्लेन पर रेटिकल की जगह तय करेगी.
Script
फ़ील्ड पर दो बार क्लिक करके,ReticleBehaviour.cs
स्क्रिप्ट खोलें.- कैमरे के
ViewToScreenPoint
का इस्तेमाल करके, स्क्रीन के बीच वाले हिस्से से छुएं.Update()
तरीके में बदलाव करके, इन्हें जोड़ें:
var screenCenter = Camera.main.ViewportToScreenPoint(new Vector3(0.5f, 0.5f));
- इस पॉइंट का इस्तेमाल करके रेकास्ट करें. इन्हें जोड़ें:
var hits = new List<ARRaycastHit>();
DrivingSurfaceManager.RaycastManager.Raycast(screenCenter, hits, TrackableType.PlaneWithinBounds);
वैरिएबल hits
में ARRaycastHit
शामिल होंगे. ये ट्रैक किए जा सकने वाले उन पॉइंट के बारे में बताते हैं जिन्हें ray
से इंटरसेक्ट किया गया है.
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);
}
- अगर
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);
रेटिकल की जांच करना
- अपने बदलावों की जांच करने के लिए, फ़ाइल > बनाएं और चलाएं... पर क्लिक करें.
- जब आप अपने डिवाइस को समतल जगह पर रखते हैं, तो आपको अपने कैमरे की मूवमेंट के हिसाब से रेटिकल दिखेगा.
कार बनाएं
खिलाड़ी एक खिलौना कार को नियंत्रित करेगा, जो रेटिकल की जगह की ओर ड्राइव करेगी. इस कार के मॉडल और व्यवहार की जानकारी स्टार्टर पैकेज में दी गई है.
अपने सीन में CarManager
जोड़ें
- क्रम में, कोई नया खाली
GameObject
बनाएं. - इसका नाम बदलकर
Car Spawner
करें. - आपने जो ऑब्जेक्ट बनाया है उसे चुनें. क्रम वाले पैनल में,
CarManager
कॉम्पोनेंट जोड़ने के लिए कॉम्पोनेंट जोड़ें पर क्लिक करें. - हर फ़ील्ड के लिए, चुनने के विकल्प पर क्लिक करके
CarManager
की डिपेंडेंसी सेट अप करें:- कार प्रीफ़ैब: ऐसेट में जाकर कार प्रीफ़ैब चुनें.
- Reticle: सीन में, Reticle Prefab को चुनें.
- ड्राइविंग सरफ़ेस मैनेजर: सीन में जाकर, ड्राइविंग सरफ़ेस मैनेजर चुनें.
CarManager
के इस व्यवहार से, उस प्लेन पर एक खिलौना कार जनरेट होती है जिस पर रेटिकल है. अगर आपको कार को प्रोग्राम करने का तरीका जानना है, तो CarBehaviour
स्क्रिप्ट देखें.
टेस्ट ड्राइविंग
- फ़ाइल > अपने बदलावों को टेस्ट करने के लिए, बनाएं और चलाएं.
- किसी हवाई जहाज़ पर टैप करने पर, आपको उस जगह पर एक छोटी कार दिखेगी. यह कार रेटिकल के पीछे से जाएगी.
गेम एलिमेंट जोड़ना
अब खिलाड़ी, सीन में मौजूद किसी इकाई को कंट्रोल कर सकता है. इसलिए, खिलाड़ी को ड्राइव करने के लिए कोई डेस्टिनेशन दें.
- हैरारकी में एक नया खाली
GameObject
बनाएं. - इसका नाम बदलकर
Package Spawner
करें. - आपने जो ऑब्जेक्ट बनाया है उसे चुनें.
PackageSpawner
कॉम्पोनेंट जोड़ने के लिए, क्रम पैनल में, कॉम्पोनेंट जोड़ें पर क्लिक करें. - हर फ़ील्ड के लिए चुनने वाले टूल पर क्लिक करके,
PackageSpawner
की डिपेंडेंसी सेट अप करें:- पैकेज Prefab: Assets में, पैकेज Prefab चुनें.
- ड्राइविंग सरफ़ेस मैनेजर सीन में, ड्राइविंग सरफ़ेस मैनेजर चुनें.
अगर पहले से कोई पैकेज नहीं है, तो PackageSpawner
लॉक किए गए ARPlane
पर किसी भी क्रम में एक नया पैकेज बनाता है.
गेम की जांच करें
- फ़ाइल > अपने बदलावों को टेस्ट करने के लिए, बनाएं और चलाएं. 2, कार बनाने के बाद, एक पैकेज जनरेट होना चाहिए.
- अपनी कार को पैकेज तक ले जाएं.
- किसी रैंडम स्थान पर एक नया दिखाई देगा.
5. लाइटिंग का अनुमान लगाने की सुविधा सेट अप करना
बुनियादी गेम पूरा हो जाने के बाद, अपने एआर सीन में ज़्यादा असलीपन जोड़ें. इस चरण में, आने वाले कैमरे के फ़्रेम के आधार पर असल दुनिया में मौजूद लाइटिंग का पता लगाने के लिए, ARCore के Lighting अनुमानित API का इस्तेमाल करें. इस जानकारी का इस्तेमाल, आपके सीन की रोशनी को असल दुनिया की लाइटिंग के हिसाब से बनाने के लिए किया जाएगा.
लाइटिंग का अनुमान लगाने की सुविधा चालू करें
- क्रम में, एआर सेशन की शुरुआत की जगह को बड़ा करें और एआर कैमरा ऑब्जेक्ट चुनें.
- इंस्पेक्टर में जाकर, एआर कैमरा मैनेजर स्क्रिप्ट को बड़ा करें.
- रोशनी का अनुमान फ़ील्ड को सभी में बदलें.
डायरेक्ट्री लाइट में बदलाव करना
- क्रम में, डायरेक्शनल लाइट ऑब्जेक्ट चुनें.
- इसमें
LightEstimation
कॉम्पोनेंट जोड़ें. स्टार्टर पैकेज का यह कॉम्पोनेंट, लाइटिंग में होने वाले बदलावों की सदस्यता लेने के लिए कुछ बुनियादी जानकारी देता है. 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;
}
बदलावों की जांच करना
- अपने बदलावों की जांच करने के लिए, फ़ाइल > बनाएं और चलाएं पर क्लिक करें.
- सीन में मौजूद ऑब्जेक्ट को देखते समय, आपको यह दिख सकता है कि वे आस-पास की रोशनी के हिसाब से रंगे गए हैं.
- अगर हो सके, तो रोशनी में बदलाव करें. उदाहरण के लिए, अपने मौजूदा कमरे की लाइटें बंद करें। आपको दिखना चाहिए कि चीज़ों की रोशनी असल दुनिया की रोशनी में हो रहे बदलाव के हिसाब से ढल जाती है.
6. आखिर में खास जानकारी
बधाई हो! Unity AR Foundation पर इस कोडलैब को पूरा कर लिया गया है.
आपने क्या कवर किया
- Unity के AR Foundation और Universal Rendering Pipeline का इस्तेमाल करके, कोई बुनियादी प्रोजेक्ट सेट अप करने का तरीका.
- नए हवाई जहाज़ों की सदस्यता लेने के लिए,
ARPlaneManager
का इस्तेमाल करने का तरीका. - वर्चुअल ज्यामिति के इंटरसेक्शन खोजने के लिए,
Raycast
का इस्तेमाल करने का तरीका. - अपने सीन को रोशन करने के लिए,
ARLightEstimationData
का इस्तेमाल करने का तरीका.
अगले चरण
- Unity के AR Foundation के सैंपल देखें.
- AR Foundation का दस्तावेज़ ब्राउज़ करें.
- Unity के AR Foundation के लिए ARCore एक्सटेंशन के बारे में Google के दस्तावेज़ देखें.
बोनस असाइनमेंट
अगर आप यहां अपने बनाए हुए गेम को आगे बढ़ाना चाहते हैं, तो यहां दिए गए कुछ आइडिया को अपनाएं:
- जब
PackageManager
कोई नया पैकेज जनरेट करता है, तोTextMeshPro
में बदलाव करके, अपने गेम में स्कोर काउंटर जोड़ें. - परफ़ॉर्मेंस ओवरले को चालू करके, गेम चलने के दौरान उसकी परफ़ॉर्मेंस की जानकारी देखें.
- पहले अपने सीन में नए ऑब्जेक्ट रखने के लिए, परसिस्टेंट रेकास्ट का इस्तेमाल करें. जब उस इलाके में किसी हवाई जहाज़ का पता चलता है, तो उस ऑब्जेक्ट को उस हवाई जहाज़ पर स्नैप करने के लिए अपडेट कर दिया जाएगा.