विषयसूची:

ऑगमेंटेड रिएलिटी वुफोरिया 7 ग्राउंड प्लेन डिटेक्शन: 8 स्टेप्स
ऑगमेंटेड रिएलिटी वुफोरिया 7 ग्राउंड प्लेन डिटेक्शन: 8 स्टेप्स

वीडियो: ऑगमेंटेड रिएलिटी वुफोरिया 7 ग्राउंड प्लेन डिटेक्शन: 8 स्टेप्स

वीडियो: ऑगमेंटेड रिएलिटी वुफोरिया 7 ग्राउंड प्लेन डिटेक्शन: 8 स्टेप्स
वीडियो: Augmented reality Unity+Vuforia project_1 (Markers) 2024, नवंबर
Anonim
ऑगमेंटेड रियलिटी वुफोरिया 7 ग्राउंड प्लेन डिटेक्शन।
ऑगमेंटेड रियलिटी वुफोरिया 7 ग्राउंड प्लेन डिटेक्शन।
ऑगमेंटेड रियलिटी वुफोरिया 7 ग्राउंड प्लेन डिटेक्शन।
ऑगमेंटेड रियलिटी वुफोरिया 7 ग्राउंड प्लेन डिटेक्शन।

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

वुफोरिया के एसएलएएम के बारे में सबसे अच्छी बात यह है कि यह आईओएस और एंड्रॉइड डिवाइसों की मात्रा का समर्थन करता है। एक पूर्ण डिवाइस सूची यहां पाई जा सकती है:

library.vuforia.com/articles/Solution/grou…

चरण 1: एक नई परियोजना शुरू करें।

एक नई परियोजना शुरू करें।
एक नई परियोजना शुरू करें।

यदि आपके पास पहले से यूनिटी 3डी नहीं है तो यहां से डाउनलोड करें:

आपके पास जो डिवाइस है, उसके आधार पर वुफोरिया ऑगमेंटेड रियलिटी और एंड्रॉइड या आईओएस के लिए सपोर्ट इंस्टॉल करना सुनिश्चित करें।

एकता खोलें और एक नई एकता परियोजना शुरू करें, जिसे आप चाहते हैं उसे कॉल करें।

सबसे पहले ऐप को बनाने के लिए सेट अप करें ताकि हम भूल न जाएं। तो, दृश्य को सहेजें और इसे "मुख्य" कहें।

फ़ाइल पर जाएँ, सेटिंग्स बनाएँ, और अपने बिल्ड प्लेटफ़ॉर्म को Android या IOS पर स्विच करें। प्लेयर सेटिंग्स में एक्सआर सेटिंग्स पर नेविगेट करें और वुफोरिया ऑगमेंटेड रियलिटी सपोर्टेड चेक करें।

यदि आपका एंड्रॉइड पर आपको कुछ और नहीं करना होगा, लेकिन आईओएस पर अन्य सेटिंग्स पर जाएं और अपने बंडल आइडेंटिफायर के लिए कुछ डालना सुनिश्चित करें। "com. YourCompanyName. YourAppName" प्रारूप का उपयोग करें।

कैमरा उपयोग विवरण के लिए कुछ भी डालें और लक्ष्य न्यूनतम बिल्ड संस्करण को कम से कम 9.0 में बदलें।

उसमें से बंद करें और अब बाकी सब कुछ सेट करते हैं।

चरण 2: चलो वुफोरिया सेट करें।

चलो वुफोरिया सेट करें।
चलो वुफोरिया सेट करें।

आइए अब सब कुछ सेट कर लें।

टॉप मेन्यू में गेमऑब्जेक्ट पर जाएं और ARCamera पर क्लिक करें। अब अपने सीन से मुख्य कैमरा हटा दें।

ARCamera का चयन करें और इंस्पेक्टर में दाईं ओर ओपन वुफोरिया कॉन्फ़िगरेशन पर क्लिक करें। डेटासेट संग्रह पर क्लिक करें और सब कुछ अनचेक करें क्योंकि हम यहां किसी छवि लक्ष्य का उपयोग नहीं कर रहे हैं।

डिवाइस ट्रैकर पर क्लिक करें और ट्रैक डिवाइस पोज पर क्लिक करें। ट्रैकिंग को रोटेशनल से पोजिशनल में बदलें।

अब गेम ऑब्जेक्ट टैब पर वापस जाएं और वुफोरिया, ग्राउंड प्लेन और प्लेन फाइंडर पर क्लिक करें। इसमें वे स्क्रिप्ट हैं जो हमारे ग्राउंड प्लेन को ढूंढती हैं।

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

चरण 3: एक नई स्क्रिप्ट जोड़ें।

एक नई स्क्रिप्ट जोड़ें।
एक नई स्क्रिप्ट जोड़ें।
एक नई स्क्रिप्ट जोड़ें।
एक नई स्क्रिप्ट जोड़ें।

इस ग्राउंड प्लेन डिटेक्शन का डिफ़ॉल्ट व्यवहार हर बार स्क्रीन पर दबाने पर एक नई वस्तु रखना है। हम जो चाहते हैं वह यह है कि हर बार जब आप स्क्रीन पर दबाते हैं तो ऑब्जेक्ट को बस रिपोज करें। तो अपने संपत्ति फ़ोल्डर में राइट क्लिक करें और एक नई सी # स्क्रिप्ट बनाएं। इसे "DeployStageOnce" कहें और सब कुछ इस कोड से बदलें:

सिस्टम का उपयोग करना;

यूनिटीइंजिन का उपयोग करना; वुफोरिया का उपयोग करना; पब्लिक क्लास DeployStageOnce: MonoBehaviour { public GameObject AnchorStage; निजी पोजिशनलडिवाइसट्रैकर _deviceTracker; निजी गेमऑब्जेक्ट _पिछला एंकर; सार्वजनिक शून्य प्रारंभ () { अगर (एंकरस्टेज == शून्य) {डीबग। लॉग ("एंकरस्टेज निर्दिष्ट होना चाहिए"); वापसी; } AnchorStage. SetActive(false); } सार्वजनिक शून्य जाग () {VuforiaARController. Instance. RegisterVuforiaStartedCallback(OnVuforiaStarted); } सार्वजनिक शून्य OnDestroy() {VuforiaARController. Instance. UnregisterVuforiaStartedCallback(OnVuforiaStarted); } निजी शून्य OnVuforiaStarted() { _deviceTracker = TrackerManager. Instance. GetTracker (); } सार्वजनिक शून्य OnInteractiveHitTest (HitTestResult परिणाम) { अगर (परिणाम == नल || एंकरस्टेज == शून्य) {डीबग। लॉगवार्निंग ("हिट टेस्ट अमान्य है या एंकरस्टेज सेट नहीं है"); वापसी; } वर एंकर = _deviceTracker. CreatePlaneAnchor(Guid. NewGuid ()। ToString (), परिणाम); अगर (एंकर! = शून्य) { AnchorStage.transform.parent = एंकर.ट्रांसफॉर्म; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; एंकरस्टेज।सेटएक्टिव (सच); } अगर (_previousAnchor != null) {नष्ट करें(_previousAnchor); } _पिछला एंकर = एंकर; } }

यह सुनिश्चित करने के लिए कि इस स्क्रिप्ट का उपयोग किया जाता है, हमें ऑनइंटरएक्टिवहिटटेस्ट () फ़ंक्शन को कॉल करने की आवश्यकता है, इसलिए एकता पर वापस जाएं और प्लेन फाइंडर गेम ऑब्जेक्ट पर क्लिक करें। मोड को ऑटोमैटिक से इंटरएक्टिव में बदलें। प्लेन फाइंडर गेम ऑब्जेक्ट पर हमारे द्वारा अभी बनाई गई स्क्रिप्ट को ड्रैग करें। ContentPositioningBehavior स्क्रिप्ट को हटा दें। आप DeployStageOnce स्क्रिप्ट पर गेम ऑब्जेक्ट के लिए एक स्पॉट देखेंगे, प्लेन फाइंडर को वहां खींचें, और इस स्क्रिप्ट को ढूंढें, सूची के शीर्ष से OnInteractiveHitTest फ़ंक्शन चुनें। अब जब भी यूजर स्क्रीन पर क्लिक करेगा तो हमारा फंक्शन कॉल हो जाएगा!

चरण 4: चलो कार जोड़ें।

चलो कार जोड़ें।
चलो कार जोड़ें।

इस मुफ्त कार 3D मॉडल को यहां से डाउनलोड करें (.obj संस्करण प्राप्त करना सुनिश्चित करें):

www.turbosquid.com/3d-models/max-exterior-…

इसके अलावा, इस ध्वनि को डाउनलोड करें क्योंकि जब कार जमीन से टकराती है तो हम इसे बजाने वाले होते हैं:

freesound.org/people/PaulMorek/sounds/1967…

उन दोनों फाइलों को अनज़िप करें और उन्हें अपने एसेट फोल्डर में ड्रैग करें।

कार पर क्लिक करें और दाईं ओर देखें, शीर्ष पर ड्रॉप डाउन मेनू से बाहरी सामग्री (विरासत) का उपयोग करने के लिए एम्बेडेड सामग्री का उपयोग करें बदलें। अब हम कार के सभी मैटेरियल का रंग बदल सकेंगे।

कार को अपने ग्राउंड प्लेन स्टेज पर खींचें और इसे बच्चा बनाएं। x, y, और z पर स्केल को.035 में बदलें।

अब प्रत्येक कार चाइल्ड गेम ऑब्जेक्ट के माध्यम से जाएं और उनकी सामग्री को आप जो भी रंग चाहते हैं उसे बदल दें।

कार के रूट गेम ऑब्जेक्ट में एक कठोर बॉडी कंपोनेंट जोड़ें और एक बॉक्स कोलाइडर भी जोड़ें, इसे स्केल करें ताकि यह पूरी कार को कवर कर सके। ग्राउंड प्लेन स्टेज में एक बॉक्स कोलाइडर भी जोड़ें और इसे स्केल करें ताकि यह ग्राउंड प्लेन स्टेज से कुछ गुना चौड़ा हो। इस तरह हम कार को आसमान से गिरा सकते हैं और यह यूनिटी के बिल्ट इन फिजिक्स इंजन का उपयोग करके जमीन से टकराएगी।

चरण 5: कार को आकाश में रखें।

कार को आकाश में रखो।
कार को आकाश में रखो।

कार के रूट गेम ऑब्जेक्ट में एक ऑडियो सोर्स कंपोनेंट जोड़ें, कार क्रैश साउंड को इसके ऑडियो क्लिप स्पॉट में खींचें।

अब हमें एक स्क्रिप्ट बनाने की जरूरत है जो उपयोगकर्ता द्वारा स्क्रीन पर दबाए जाने पर कार को हवा में रखेगी और फिर कार के जमीन से टकराने पर क्रैश साउंड बजाएगी। तो, संपत्ति फ़ोल्डर में राइट क्लिक करें और एक नई सी # स्क्रिप्ट बनाएं और इसे "कारकंट्रोलर" कहें।

इसके साथ वहां सभी कोड बदलें:

सिस्टम का उपयोग करना। संग्रह;

System. Collections. Generic का उपयोग करना; यूनिटीइंजिन का उपयोग करना; पब्लिक क्लास कारकंट्रोलर: मोनोबिहेवियर {निजी बूल साउंडप्लेड = झूठा; // अपडेट को एक बार प्रति फ्रेम शून्य अपडेट कहा जाता है () {if (!soundPlayed &&Transform.localPosition.y <.05f) { साउंडप्लेड = ट्रू; StartCooutine (DelayPlaySound ()); } } सार्वजनिक शून्य मूवकार () {transform.localPosition += new Vector3 (0, 10, 0); Transform.eulerAngles += new Vector3 (5, 20, 5); साउंडप्लेड = झूठा; } IEnumerator DelayPlaySound(){ यील्ड रिटर्न नया WaitForSeconds (.2f); गेटकंपोनेंट ()। प्ले (); } }

मूवकार फ़ंक्शन को OnInteractiveHitTest ईवेंट में जोड़ें, जैसा कि ऊपर चित्र में है। अब यूजर के स्क्रीन पर क्लिक करने पर यह कॉल आएगा।

चरण 6: लैंबो दरवाजे।

लैंबो दरवाजे।
लैंबो दरवाजे।

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

एक खाली गेम ऑब्जेक्ट बनाएं जो कार का बच्चा हो। दरवाजों को अंदर खींचें और उन्हें इस नए गेम ऑब्जेक्ट का बच्चा बनाएं। पैरेंट गेम ऑब्जेक्ट को उस स्थान पर ले जाएं जहां धुरी बिंदु होना चाहिए, दरवाजे के टिका से। अब बच्चे के दरवाजे वापस जगह में ले जाएँ। अब जब हम दरवाजे के पैरेंट को घुमाते हैं, तो धुरी बिंदु सही जगह पर होता है।

हम एक स्क्रिप्ट बनाने जा रहे हैं जो कार के करीब पहुंचने पर दरवाजे खोलती है लेकिन ऐसा करने से पहले हमें घटना को "ट्रिगर" करने का एक तरीका चाहिए। अपने डोर पैरेंट गेम ऑब्जेक्ट में एक बॉक्स कोलाइडर जोड़ें और इसे स्केल करें ताकि यह दोनों दिशाओं में कार के ऊपर से थोड़ा आगे बढ़े। "isTrigger" चेक करें। अब मुख्य कैमरे में एक बॉक्स कोलाइडर जोड़ें और इसे उचित रूप से स्केल करें। "isTrigger" भी जांचें। अपने कैमरे में एक कठोर शारीरिक घटक जोड़ें और "यूज ग्रेविटी" को अनचेक करें। अपने कैमरे के चयन के साथ, निरीक्षक के शीर्ष पर इसके टैग को "मेनकैमरा" में बदलें।

"LamboDoorBehavior" नामक एक नई स्क्रिप्ट जोड़ें और नीचे कोड जोड़ें। स्क्रिप्ट को अपने दरवाजे के माता-पिता पर खींचें।

सिस्टम का उपयोग करना। संग्रह;

System. Collections. Generic का उपयोग करना; यूनिटीइंजिन का उपयोग करना; पब्लिक क्लास लैंबोडूरबिहेवियर: मोनोबिहेवियर {निजी फ्लोट currAngle = 0; निजी फ्लोट वांछितकोण = 0; // अपडेट को एक बार प्रति फ्रेम शून्य अपडेट कहा जाता है () {currAngle = Mathf. LerpAngle (currAngle, वांछितAngle, Time.deltaTime * 3f); ट्रांसफॉर्म.लोकलयूलरएंगल्स = नया वेक्टर3 (currAngle, 0, 0); } सार्वजनिक शून्य OpenDoors(){वांछितएंगल = 60f; } सार्वजनिक शून्य CloseDoors () {वांछितकोण = 0; } शून्य OnTriggerEnter(Collider col){ if (col. CompareTag ("MainCamera")) { OpenDoors (); } } शून्य OnTriggerExit(Collider col){ if (col. CompareTag ("MainCamera")) { CloseDoors (); } } }

जब आप दो बिंदुओं (या इस मामले में दो कोणों) के बीच इंटरपोलेट करते हैं, तो यह स्क्रिप्ट आपके दरवाजे को धीरे-धीरे खोलने का कारण बनेगी, जब आप Lerp () फ़ंक्शन का उपयोग करके उन्हें AR में बंद कर देंगे।

चरण 7: एआर में वीडियो चलाना।

एआर में वीडियो चला रहा है।
एआर में वीडियो चला रहा है।
एआर में वीडियो चला रहा है।
एआर में वीडियो चला रहा है।

आखिरी चीज जो हमें करने की ज़रूरत है वह है एआर में वीडियो चलाना।

किसी भी गेम ऑब्जेक्ट पर राइट क्लिक करें जो आपकी कार का बच्चा है और एक 3D ऑब्जेक्ट, क्वाड बनाएं। यह सुनिश्चित करेगा कि क्वाड आपकी कार का बच्चा है। इस क्वाड को स्थिति और आकार दें जैसे कि यह आपकी कार के डैश के अंदर फिट बैठता है और ऐसा लगता है कि इसे वहां होना चाहिए। यह वही है जिस पर हम वीडियो चलाने जा रहे हैं।

अपने क्वाड में एक वीडियो प्लेयर घटक जोड़ें। स्रोत को URL में बदलें और. MP4 फ़ाइल का हार्ड लिंक ढूंढें या किसी वीडियो फ़ाइल को अपने एसेट फ़ोल्डर में खींचें और फिर उस क्लिप को खाली स्लॉट में खींचें। यदि आप किसी URL से किसी वीडियो को स्ट्रीम करना चाहते हैं, तो Instragram एक बेहतरीन स्रोत है। Google क्रोम में किसी भी Instagram वीडियो पर राइट क्लिक करें और निरीक्षण पर क्लिक करें। वीडियो युक्त डिव ढूंढें और वहां से लिंक कॉपी करें (मेरे पास यह विधि ऊपर चित्रित है)।

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

अंत में हम कर रहे हैं!

चरण 8: ऐप को अपने फोन पर रखें

ऐप को अपने फोन पर रखें!
ऐप को अपने फोन पर रखें!

यदि आप Android के लिए निर्माण कर रहे हैं, तो आप फ़ाइल पर जा सकते हैं और बिल्ड को हिट कर सकते हैं और अपने फ़ोन को प्लग इन करके चला सकते हैं।

यदि आप iPhone या iPad का निर्माण कर रहे हैं, तो ऐप स्टोर से Xcode डाउनलोड करना सुनिश्चित करें। साथ ही, www.apple.developer.com से एक निःशुल्क ऐप्पल डेवलपर खाते के लिए साइन अप करें। फाइल पर जाएं और बिल्ड हिट करें। Xcode से बनाई गई फ़ाइल को खोलें और अपने फ़ोन में प्लग इन करें। अपनी विकास टीम चुनें और प्ले बटन दबाएं।

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

मज़े करो और मुझे बताएं कि क्या आपके पास टिप्पणियों में कोई प्रश्न है!

सिफारिश की: