सामान्य नक्शे नीले और बैंगनी रंग के क्यों होते हैं?


11

मैं सामान्य मैपिंग के बारे में सीख रहा हूं। मैं समझ गया कि RGB मान XYZ में परिवर्तित हो जाते हैं, लेकिन मेरा प्रश्न यह है कि इसे कैसे रूपांतरित किया जाता है और सामान्य मानचित्र नीले और बैंगनी रंग में क्यों होता है?

जवाबों:


12

क्योंकि एक सामान्य नक्शा -1 से 1 तक वैक्टर को कवर कर रहा है, जिससे इस रेंज को 0-> 1 तक फैलाने का कोई मतलब नहीं है, इसलिए यह सभी आरजीबी की सीमा के अंदर फिट हो सकते हैं।

इसलिए आमतौर पर हम इसे सामान्य रूप से बदलने के लिए लागू करते हैं जिसे हम देख सकते हैं।

vec3 colour = vec3(0.5) + normal * 0.5;

नीला रंग इसलिए है क्योंकि सामान्य नक्शे को त्रिकोण के सामान्य से विचलन को इंगित करने के लिए डिफ़ॉल्ट (0,0,1) दिशा के साथ आदिम (त्रिकोण / आदि) सामान्य के सापेक्ष उपयोग किया जाना चाहिए। आमतौर पर टुकड़े टुकड़े करने वाले को रन-टाइम पर वर्तमान प्रति पिक्सेल सामान्य के संबंध में इस सामान्य को घुमाने की जरूरत होती है।


क्या यह कोड vec3 colour = vec3(0.5) + normal * 0.5;RGB को XYZ में परिवर्तित कर रहा है?
अभिनय सिंह नेगी

1
@AbhinaySInghNegi नहीं, रंग RGB है और सामान्य XYZ है, इसलिए यह XYZ को RGB में परिवर्तित कर रहा है। यदि आप आरजीबी को एक्सवाईजेड के लिए चाहते हैं तो आप उपयोग करते हैंvec3 normal = (colour - vec3(0.5)) * 2.0;
bram0101

20

केवल स्पर्शरेखा स्थान सामान्य मानचित्र मुख्यतः नीले होते हैं। इसका कारण यह है कि रंग नीला सामान्य (0,0,1) का प्रतिनिधित्व करता है, जो कि एक अपरिवर्तित सामान्य होगा जब त्रिभुज x और y में समतल होता है, अर्थात सतह पर लंबवत। स्पर्शरेखा, x और द्वि-स्पर्शरेखा, y (जिसे द्वि-सामान्य के रूप में भी संदर्भित किया जाता है) लाल और हरे रंग के चैनलों में एन्कोडेड होते हैं और ये रूप त्रिकोण की सतह पर एक बिंदु के लिए एक स्पर्शरेखा स्थान को सामान्य बनाते हैं।

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

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

एक तुलना यहाँ देखी जा सकती है:

यहाँ छवि विवरण दर्ज करें

व्यवहार में सामान्य नक्शे आमतौर पर बीसी 5 जैसे एक 2 चैनल प्रारूप में एन्कोडेड होते हैं जो वास्तव में केवल x और y को स्टोर करता है z के साथ फिर से जोड़ा जाता है क्योंकि हम जानते हैं कि यह एक यूनिट वेक्टर है। यह आपको फ़ाइल आकार को बढ़ाए बिना अधिक बिट्स के साथ उच्च परिशुद्धता बनाए रखने की अनुमति देता है।


स्पर्शरेखा रिक्त स्थान विशिष्ट रूप से पैराट्राइज्ड नहीं होते हैं, फिर भी मुझे चारों ओर बहुत सारे जाल + सामान्य-मानचित्र-इन-स्पर्शरेखा-स्थान चित्र मिलते हैं। क्या स्पर्शरेखा स्थान के आधार को परिभाषित करने का एक पारंपरिक तरीका है?
एलेक जैकबसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.