दिन 8: कैसे एकता में एआर फाउंडेशन का उपयोग कर वस्तुओं को छिपाने के लिए रोड़ा का उपयोग करें। - एआर के लिए ट्यूटोरियल

इस ट्यूटोरियल में हम सीखेंगे कि वास्तविक दुनिया की वस्तुओं और दीवारों के पीछे वस्तुओं को छिपाने के लिए रोड़ा का उपयोग कैसे करें ताकि हम एआर में अधिक यथार्थवादी अनुभव बना सकें। हम इसे प्राप्त करने के लिए एकता में एआर फाउंडेशन का उपयोग करेंगे।

यह 30 दिनों के स्प्रिंट का हिस्सा है, जहां हम 30 दिनों में 30 प्रोजेक्ट प्रकाशित करने का प्रयास करते हैं, इसका मतलब है कि स्क्रैच से पूर्ण प्रोजेक्ट बनाना। कोड को डबल चेक करना, ट्यूटोरियल लिखना और फिर उसे पोस्ट करना। अगर कोई टाइपोस है तो हमें बताएं और मुझे आशा है कि आप इस ट्यूटोरियल और प्रोजेक्ट का आनंद लेंगे।

पिछले लेखों में, हमने एआर फाउंडेशन और एआर के सिद्धांतों के बारे में सीखा। हमने प्लेन का पता लगाने और ट्रैक किए गए ट्रैक का भी निर्माण किया और पता लगाए गए विमानों पर वस्तुओं को रखा।

उस लेख से, अगर आपने गौर किया, तो जिन क्यूब्स को हमने विमानों पर रखा था, वे खुली जगह में होने पर वास्तविक लगे। लेकिन जल्द ही यथार्थवाद अलग हो गया जब पर्यावरण में कई वस्तुएं और ज्यामिति थीं।

हम इसे और अधिक यथार्थवादी बनाने के लिए क्या कर सकते हैं ताकि हमारी आभासी वस्तुएं वास्तविक दुनिया के साथ मिल सकें?

रोड़ा

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

हम इसे AR में कैसे लागू करते हैं?

हम शेड्स का उपयोग करते हैं, शेडर्स स्क्रिप्ट्स हैं जो गणितीय गणना करते हैं और दृश्य पर प्रदान किए जाने वाले प्रत्येक पिक्सेल के लिए एल्गोरिदम पकड़ते हैं। वे उस वस्तु और सामग्री के प्रकाश गुणों पर निर्भर होते हैं जिस पर इसे लागू किया जाता है।

हम अपनी प्लेन ऑब्जेक्ट के लिए एक शेडर बनाएंगे और लागू करेंगे। इस shader में, हम एक Z-Buffer को लिखेंगे जो प्रत्येक पिक्सेल की z स्थिति को संग्रहीत करता है जो तब निर्णय लेता है कि उस पिक्सेल के मूल्य के आधार पर रेंडरिंग कैसे होगी।

जब हम अपने विमान पर इस shader को लागू करते हैं। जो भी वस्तु पीछे है, उसका Z-Buffer मान कम होगा और इसलिए उसका प्रतिपादन नहीं किया जाएगा। इस प्रकार पता चला विमान के पीछे हमारी आभासी वस्तुओं को छिपाते हुए उदाहरण के लिए, एक मेज या एक दीवार।

हम इस लेख में इसे प्रदर्शित करने के लिए एक एप्लिकेशन का निर्माण करेंगे।

यह वही है जो अंतिम परिणाम की तरह दिखेगा।

शुरू करना

आवश्यक शर्तें

  1. एकता 2019.2.18f1।
  2. प्रोग्रामिंग की बुनियादी समझ।
  3. इससे पहले एआर फाउंडेशन और प्लेन ट्रैकिंग स्थापित करने के बारे में पहले लेख।

स्रोत कोड डाउनलोड करें

शैडर बनाना

यह एंड्रॉइड और आईओएस दोनों पर काम करता है क्योंकि शेडर प्लेटफॉर्म-स्वतंत्र है।

एक बार जब आप पिछले लेख का अनुसरण कर चुके होते हैं, तो आइए एक शेडर स्क्रिप्ट बनाकर शुरू करें।

प्रोजेक्ट विंडो में "शेडर्स" नामक एक नया फ़ोल्डर बनाएं और इसके अंदर राइट-क्लिक करें -> क्रिएट -> शेडर -> स्टैंडर्ड सरफेस शेडर। हम अपने उद्देश्य के लिए संपादित और संशोधित करेंगे।

इसे "PlaneOcclusionShader" का नाम दें।

शेडर पर डबल क्लिक करें और यह विज़ुअल स्टूडियो में खुल जाएगा। स्क्रिप्ट में सब कुछ हटा दें और इसे निम्न स्क्रिप्ट से बदल दें

Shader "कस्टम / प्लेनओक् शिफ़्टशेयर" {SubShader {Tags {"RenderType" = "Opaque"} टैग {"Queue" = "ज्यामिति -1"} ZWrite पर ZTT LEqual ColorMask 0 Pass {CGPROGRAM #pragma vertex vert #pragma फ्रेग्नेंस फ्रैक्शन। "UnityCG.cginc" स्ट्रक्चर एपडैट {फ्लोट 4 वर्टेक्स: स्थिति; }; संरचना v2f {float4 vertex: SV_POSITION; }; v2f लंब (appdata v) {v2f o; o.vertex = UnityObjectToClipPos (v.vertex); वापसी ओ; } फिक्स्ड 4 फ़ोर (v2f i): SV_Target {रिटर्न फिक्स्ड 4 (0.0, 0.0, 0.0, 0.0); } ENDCG}}}

इसे बचाओ और एकता में वापस जाओ। हमारी शाद अब तैयार है।

सामग्री का निर्माण

अब हम एक नई सामग्री बनाएंगे और इसे इस शेडर को असाइन करेंगे। फिर, सामग्री को हमारे प्लेन प्रीफैब को सौंपा जाएगा।

प्रोजेक्ट व्यू में एक फोल्डर बनाएं और उसके अंदर राइट-क्लिक करें -> क्रिएट -> मटीरियल।

इसे PlaneOcclusionMat का नाम दें

सामग्री का चयन करें और इंस्पेक्टर विंडो में, शेडर ड्रॉपडाउन का पता लगाएं और चुनें -> कस्टम -> PlaneOcclusionShader,

अब Prefabs फ़ोल्डर में प्लेन प्रीफैब पर जाएं और इसके इंस्पेक्टर विंडो में, इसके मेश रेंडरर घटक के तहत सामग्री का आकार 2 पर सेट करें।

सामग्री संपत्ति के तत्व 1 क्षेत्र के लिए PlaneOcclusionMat सामग्री असाइन करें।

बस। विमान में अब रोड़ा संपत्ति है और इसके पीछे कोई भी आभासी वस्तु छिपी होगी।

पहली सामग्री के कारण विमान डिफ़ॉल्ट रूप से दिखाई देंगे - तत्व 0 में डीबग विमान सामग्री को सौंपा गया है। यदि आप नहीं चाहते कि विमान दिखाई दें, तो पहले तत्व 0 को हटा दें।

अब आप अपने डिवाइस पर एप्लिकेशन का निर्माण कर सकते हैं और परीक्षण कर सकते हैं।

कृपया नीचे टिप्पणी अनुभाग में कोई प्रतिक्रिया या प्रश्न छोड़ दें!

मूल रूप से 24 फरवरी, 2020 को https://tutorialsforar.com पर प्रकाशित।