यह आदर्श है: सामान्य नक्शे क्या हैं और वे कैसे काम करते हैं

कई सालों तक, मैंने सामान्य नक्शे और उन समस्याओं को समझने की कोशिश की, जो आमतौर पर उनके साथ काम करते समय उत्पन्न होती हैं।

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

पहले मानव निर्मित 3 डी मॉडल कुछ इस तरह दिखते थे:

छवि

यह बहुत अच्छा है, लेकिन इस तरह के एक मॉडल में एक स्पष्ट सीमा है: यह बहुत बहुभुज दिखता है।

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

छवि

एक अलग समाधान की आवश्यकता थी, और इसलिए मानदंडों का आविष्कार किया गया था। (ऐसा बिलकुल नहीं हुआ, लेकिन इसे समझाना और समझना आसान है।)

चलो बहुभुज के केंद्र से इसकी सतह तक लंबवत रेखा का अनुसरण करें। हम इस रेखा को एक बहुत ही असामान्य नाम देंगे: सामान्य। सामान्य का लक्ष्य यह नियंत्रित करना है कि सतह कहाँ इंगित करती है, ताकि जब प्रकाश इस सतह को प्रतिबिंबित करे, तो यह परिणामी प्रतिबिंब की गणना करने के लिए सामान्य का उपयोग कर सकता है। जब प्रकाश बहुभुज से टकराता है, तो हम प्रकाश किरण के कोण की तुलना बहुभुज के सामान्य से करते हैं। बीम सामान्य दिशा के सापेक्ष समान कोण पर परावर्तित होती है:

छवि

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

छवि

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

छवि

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

यह वह है जिसे हम चौरसाई समूहों (3ds मैक्स, ब्लेंडर) या हार्ड या चिकनी (मोडो, माया) के रूप में निर्दिष्ट किनारों को नियंत्रित करते हैं: हम कार्यक्रम को बताते हैं कि चेहरों के बीच कौन सा संक्रमण आसान होना चाहिए और कौन सा कठोर होना चाहिए।

यहाँ 288 बहुभुज के एक गोले की तुलना कठिन और चिकनी संक्रमण के साथ की गई है:

छवि

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

छवि

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

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

चूँकि हम जिस तरह से प्रकाश को किसी वस्तु से परावर्तित कर रहे हैं, उसे बदल रहे हैं, हम एक बहुत ही साधारण वस्तु को भी प्रकाश को जटिल के रूप में दर्शा सकते हैं। इसे सामान्य नक्शा कहा जाता है। हम एक 3D ऑब्जेक्ट से परावर्तित प्रकाश की दिशा को बदलने के लिए एक बनावट का उपयोग करते हैं, जिससे यह वास्तव में की तुलना में कठिन दिखता है।

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

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

प्रत्येक शीर्ष को एक या अधिक मानदंडों से जोड़ा जा सकता है। यदि यह एक सामान्य है, तो हम इसे वर्टेक्स के औसत सामान्य कह सकते हैं, और यदि कई - तो वर्टेक्स के विभाजित सामान्य।

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

छवि

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

छवि

छवि

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

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

मान लीजिए कि हमारे पास ऐसा लो-पॉली मॉडल (लोप्रोली) है। यूवी सेटिंग्स के साथ एक चार-शिखर वाली सपाट सतह जो बेकिंग प्रोग्राम का उपयोग एक सामान्य नक्शा बनाने के लिए करेगी।

छवि

और उसे इस हाईपोली मॉडल से मानदंडों के बारे में जानकारी प्राप्त करने की आवश्यकता है, जिनमें से मानदंड अधिक जटिल हैं।

छवि

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

बेकिंग प्रोग्राम एक लोप्रोली मॉडल लेता है और निम्नपॉल मानदंडों के निर्देशों का पालन करते हुए किरणों का उत्सर्जन करता है (यही कारण है कि हमें लोपोली मानदंडों को नियंत्रित करने की आवश्यकता है)। इन किरणों की एक सीमित लंबाई होती है ताकि दूर के किनारों से सामान्य जानकारी प्राप्त न हो (आमतौर पर इस दूरी को बेक दूरी या पिंजरे की दूरी कहा जाता है)। जब ये किरणें हाईपोली से टकराती हैं, तो बेकिंग प्रोग्राम इन किरणों को परावर्तित करने के तरीके की गणना करता है ताकि वे हाईपोली मानदंडों की दिशा का पालन करें और इस जानकारी को सामान्य मानचित्र में संग्रहीत करें।

छवि

यहाँ हमारे उदाहरण के लिए बेकिंग परिणाम है:

छवि

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

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

आप सामान्य मानचित्र को तीन रंगों के एक सेट के रूप में ग्रे के रंगों में देख सकते हैं, एक छवि में संग्रहीत:

छवि

पहली छवि इंजन को बताती है कि कैसे इस मॉडल को दाईं ओर प्रकाश की घटना को प्रतिबिंबित करना चाहिए; इसे सामान्य मानचित्र बनावट के लाल चैनल में संग्रहीत किया जाता है।

दूसरी छवि इंजन को बताती है कि मॉडल को नीचे से प्रकाश की घटना को कैसे प्रतिबिंबित करना चाहिए *; इसे सामान्य मानचित्र बनावट के हरे चैनल में संग्रहीत किया जाता है।

* कुछ कार्यक्रमों में, प्रकाश नीचे से नहीं गिरता है, लेकिन ऊपर से, अर्थात्, "बाईं ओर" और "दाईं ओर" सामान्य नक्शे हो सकते हैं। जैसा कि हम बाद में देखेंगे, यह कुछ समस्याएं पैदा कर सकता है।

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

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

संक्षेप में:

नॉर्मल वेक्टर होते हैं जिनका उपयोग यह निर्धारित करने के लिए किया जाता है कि सतह से प्रकाश कैसे परावर्तित होता है। उनका उपयोग चेहरों के बीच संक्रमण को नियंत्रित करने के लिए किया जा सकता है (एक चिकनी संक्रमण बनाने के लिए या उन्हें एक कठोर संक्रमण बनाने के लिए अलग करने के लिए जुड़ा हुआ है), लेकिन आप उनकी दिशा भी बदल सकते हैं ताकि लोप्रोली मॉडल उसी तरह से प्रकाश को प्रतिबिंबित करे जैसे एक अधिक जटिल मॉडल।

यह जानकारी तीन अलग-अलग छवि चैनलों में संग्रहीत है, और एक 3 डी संपादक इसे समझने के लिए पढ़ता है कि मॉडल की सतह को किस दिशा में देखना चाहिए।

श्रृंखला के अगले लेख में, हम इन भागों को हाईपोली मॉडल से लोपोली में कैसे बाँधें, इस बारे में बात करेंगे।

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


All Articles