एकता और नुकसान में 3 डी मॉडल आयात करें

यह यूनिटी में 3 डी मॉडल के साथ काम करने पर हमारी श्रृंखला का तीसरा लेख है। पिछले लेख: "एकता में मेष के साथ काम करने की विशेषताएं" और "एकता: मेष का प्रक्रियात्मक संपादन"

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

इस लेख में, हम उन कुछ कठिनाइयों के बारे में बात करेंगे, जिन्हें हमें एकता में मॉडल के साथ काम करते समय (विशेष रूप से ModelImporter की कार्यप्रणाली में , 3 डी वस्तुओं के निरूपण में अंतर आदि) और साथ ही इन कठिनाइयों को दूर करने के लिए हमने कौन से उपकरण बनाए हैं।



ModelImporter की विशेषताएं


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

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

पहला मॉडल फॉर्म के प्रदर्शन की शुद्धता से संबंधित है। तो, एक गैर-प्लानर चतुर्भुज का आकार सीधे विकर्ण की पसंद पर निर्भर करता है।


ब्लेंडर (क्वाड मेथड: ब्यूटी) और यूनिटी (स्वचालित रूप से आयात पर) में सुजाना त्रिभुजित

इसके अलावा, सामान्य मानचित्र बेकिंग एल्गोरिदम विभाजन डेटा का उपयोग करता है, जिसके कारण त्रिकोणीयता में अंतर चकाचौंध पर क्रॉस के रूप में कलाकृतियों को जन्म दे सकता है।


स्वस्थ आदमी स्कूटर और धूम्रपान करने वाला स्कूटर

बनावट स्कैनिंग में दूसरे समूह की समस्याएं सामने आती हैं। उदाहरण के लिए, हमारे पास एक कोण के साथ एक चतुर्भुज है जो एक त्रुटि के लिए पर्याप्त है। जब एक 3 डी पैकेज में पूर्वावलोकन किया जाता है, तो यह विकर्णों में से दो पूरी तरह से तह त्रिकोण में टूट जाता है।


स्रोत बहुभुज


बहुभुज ब्लेंडर में त्रिभुजित

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


एकता में एक बहुभुज एक त्रिभुज के साथ एक पतित के करीब (सही त्रिकोण एक खंड से लगभग अप्रभेद्य है)

बहुभुज की विकृति से जुड़ी समस्याएं फ्लोटिंग पॉइंट गणना में त्रुटियों के कारण होती हैं, साथ ही रेंडरिंग के दौरान पिक्सेल इंटरपोल की विशेषताएं भी होती हैं। इस तरह के त्रिकोण के साथ नरक क्या होता है: वे चिकोटी लेते हैं, प्रत्येक फ्रेम रंग बदलता है। अत्यंत छोटे क्रॉस-सेक्शनल आयाम प्रकाश को संसाधित करने में कठिनाइयाँ पैदा करते हैं, यही वजह है कि गतिशील वस्तुओं के हिस्से झिलमिला सकते हैं। और प्रकाश मानचित्र को बेक करने के गैर-निर्धारकवाद में , कुछ भी अच्छा नहीं है।

मैं एक 3D पैकेज हूं, जैसा कि मैं देख रहा हूं




3 डी मॉडलिंग में, अक्सर एक 3D पैकेज में वर्टिकल की वास्तविक संख्या और उनकी संख्या के बीच अंतर होता है। समस्या का सार उस जानकारी में निहित है जो वीडियो कार्ड द्वारा प्रसंस्करण के लिए आवश्यक है। शीर्ष के लिए डेटा संरचना पूर्वनिर्धारित है और इसमें प्रत्येक चैनल और रंग के लिए स्थिति, सामान्य, स्पर्शरेखा, बनावट स्कैन निर्देशांक शामिल हैं। अर्थात्, दो मानदंडों को एक शीर्ष में नहीं धकेला जा सकता है।

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

तो, सामान्य क्यूब आदिम ज्यामितीय रूप से 8 शीर्षकों द्वारा दर्शाया जाता है। हालांकि, प्रत्येक चेहरे से प्रकाश के प्रतिबिंब को सही ढंग से संचारित करने और बनावट को सही ढंग से लागू करने के लिए, क्यूब के प्रत्येक कोने में, एक ही स्थिति के साथ 3 कोने, लेकिन अलग-अलग मानदंड और बनावट निर्देशांक आवश्यक हैं, क्योंकि प्रत्येक कोने में 3 किनारों को एकाग्र किया जाता है। प्रलेखन का एक छोटा सा ब्लॉक इस क्षण के लिए समर्पित था। वहां आप उदाहरण देख सकते हैं।


ब्लेंडर क्यूब मेट्रिक्स


एकता घन मेट्रिक्स

इसे रोको!


इन और इसी तरह की समस्याओं का सामना करते हुए, हमने एकता परियोजना में आयात करते समय एक मॉडल विश्लेषण और सत्यापन उपकरण बनाने का फैसला किया। दूसरे शब्दों में, एक कस्टम सत्यापनकर्ता, जो अनुरोध पर "खाएं!" उत्तर: “मैं नहीं करूँगा! Redo ”, - या चेतावनी और विभिन्न मापदंडों के मूल्यों के सेट को थूक दें, यह सूचित करते हुए कि कुछ उसके लिए अच्छा नहीं है।

विश्लेषण और सत्यापन के लिए, हमने निम्नलिखित कार्यक्षमता विकसित की:

  • कोने की अद्वितीय स्थिति, रंगीन कोने, हार्ड किनारों , यूवी सीमों की संख्या की गिनती;
  • अक्ष-संरेखित बाउंडिंग बॉक्स (AABB) और उसके केंद्र की गणना;
  • युवी के निर्देशांक के आउटपुट का निर्धारण 0.0-2.0 की सीमा से परे स्कैन करें;
  • टेक्सटाइल ओवरले परिभाषा;
  • किसी दिए गए बनावट रिज़ॉल्यूशन के लिए निर्दिष्ट पिक्सेल इंडेंटेशन की पर्याप्तता के लिए बनावट स्कैन की जाँच करना।

यह हमें क्या देता है?

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

एएबीबी और उसके केंद्र की गणना - आपको अपने स्वयं के समन्वय प्रणाली की शुरुआत के सापेक्ष मॉडल के विस्थापन को निर्धारित करने की अनुमति देता है। यह संपत्ति की अनुमानित स्थिति के लिए आवश्यक है जो कि दृश्य में आरम्भ की जाती है, जबकि अनुप्रयोग चल रहा है। तो, भवन के एएबीबी में एक अच्छी तरह से मिनी = 0 होना चाहिए, और कुछ झूमर जो छत से जुड़ा हुआ है - अधिकतम = 0।







रेंज के लिए यूवी-स्कैन के कोने के निर्देशांक से बाहर निकलें 0.0-1.0 - ज्यादातर मामलों में (उदाहरण के लिए, यदि बनावट मॉडल पर टाइल की जानी चाहिए) प्रदान की गई है। अक्सर इस दृष्टिकोण का उपयोग दृश्य में बहुत कम-विस्तृत छोटी वस्तुओं (वनस्पति) और / या दूरी में स्थित होने के साथ-साथ बड़ी सजातीय वस्तुओं (इमारतों) को दर्शाने के लिए किया जाता है। टाइलिंग के मामले में, एक विशिष्ट यूवी चैनल के समन्वित मूल्यों को केवल छायादार स्तर पर पूरे हिस्से को काट दिया जाता है, अगर बनावट का रैप मोड रिपीट पर सेट है।

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

पहले मान लें कि आपने स्वीपर में पूर्णांक भाग को पहले से काट दिया है। इस मामले में, बहुभुज को ओवरलैप करने का एक मौका है, जिसके बारे में हम नीचे चर्चा करेंगे।

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



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

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

एक उदाहरण है। हमने खेल में गतिशील वस्तुओं के लिए मॉडल के एक सेट के साथ काम किया। चूंकि उनके लिए बेकिंग लाइट में कोई समस्या नहीं थी, इसलिए यूवी स्कैन में ओवरले की अनुमति दी गई थी।


ओवरले के साथ मूल यूवी स्कैन का एक उदाहरण (लाल रंग में दिखाया गया है)

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

यहां, प्रकाश की शुद्धता के साथ स्पष्ट समस्याएं थीं। जाहिर है, आंख में एक मूर्ति में प्रवेश करने वाली किरणों को सिर के पीछे पांचवें बिंदु पर चकाचौंध पैदा नहीं करनी चाहिए।


गलत ढंग से पके हुए मॉडल प्रकाश (बाएं) और सही (दाएं)

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

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



दूसरा तरीका बेकिंग के लिए एक बुनियादी यूवी स्कैन का उपयोग करना है। एक बहुत ही आकर्षक विकल्प, क्योंकि जब एक बनावट स्कैन के साथ काम करते हैं, तो दो के साथ काम करते समय त्रुटि होने की संभावना कम होती है। इस कारण से, हम उन मॉडल की संख्या को कम करने की कोशिश करते हैं जो बेस यूवी में ओवरले हैं। निर्मित उपकरण हमें ऐसा करने में मदद करते हैं।

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

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

Source: https://habr.com/ru/post/hi447820/


All Articles