मैं सामान्य मैपिंग के बारे में सीख रहा हूं। मैं समझ गया कि RGB मान XYZ में परिवर्तित हो जाते हैं, लेकिन मेरा प्रश्न यह है कि इसे कैसे रूपांतरित किया जाता है और सामान्य मानचित्र नीले और बैंगनी रंग में क्यों होता है?
मैं सामान्य मैपिंग के बारे में सीख रहा हूं। मैं समझ गया कि RGB मान XYZ में परिवर्तित हो जाते हैं, लेकिन मेरा प्रश्न यह है कि इसे कैसे रूपांतरित किया जाता है और सामान्य मानचित्र नीले और बैंगनी रंग में क्यों होता है?
जवाबों:
क्योंकि एक सामान्य नक्शा -1 से 1 तक वैक्टर को कवर कर रहा है, जिससे इस रेंज को 0-> 1 तक फैलाने का कोई मतलब नहीं है, इसलिए यह सभी आरजीबी की सीमा के अंदर फिट हो सकते हैं।
इसलिए आमतौर पर हम इसे सामान्य रूप से बदलने के लिए लागू करते हैं जिसे हम देख सकते हैं।
vec3 colour = vec3(0.5) + normal * 0.5;
नीला रंग इसलिए है क्योंकि सामान्य नक्शे को त्रिकोण के सामान्य से विचलन को इंगित करने के लिए डिफ़ॉल्ट (0,0,1) दिशा के साथ आदिम (त्रिकोण / आदि) सामान्य के सापेक्ष उपयोग किया जाना चाहिए। आमतौर पर टुकड़े टुकड़े करने वाले को रन-टाइम पर वर्तमान प्रति पिक्सेल सामान्य के संबंध में इस सामान्य को घुमाने की जरूरत होती है।
vec3 normal = (colour - vec3(0.5)) * 2.0;
केवल स्पर्शरेखा स्थान सामान्य मानचित्र मुख्यतः नीले होते हैं। इसका कारण यह है कि रंग नीला सामान्य (0,0,1) का प्रतिनिधित्व करता है, जो कि एक अपरिवर्तित सामान्य होगा जब त्रिभुज x और y में समतल होता है, अर्थात सतह पर लंबवत। स्पर्शरेखा, x और द्वि-स्पर्शरेखा, y (जिसे द्वि-सामान्य के रूप में भी संदर्भित किया जाता है) लाल और हरे रंग के चैनलों में एन्कोडेड होते हैं और ये रूप त्रिकोण की सतह पर एक बिंदु के लिए एक स्पर्शरेखा स्थान को सामान्य बनाते हैं।
यदि एक स्पर्शरेखा स्थान सामान्य मानचित्र केवल लाल (1.0, 0.0, 0.0) में एक रंग को सांकेतिक शब्दों में बदलना था, तो यह त्रिकोण सतह के समानांतर एक स्पर्शरेखा-स्थान सामान्य उत्पन्न करेगा। यह कभी नहीं देखा जाता है क्योंकि इसका मतलब होगा कि त्रिकोण केवल सतह से 90 डिग्री पर जलाया जाएगा और वेक्टर को उस बिंदु पर देखा जाएगा जिस बिंदु पर आप वैसे भी त्रिकोण को नहीं देख पाएंगे।
विश्व अंतरिक्ष के सामान्य नक्शे एक क्षेत्र पर इकाई को सामान्य रूप से कूटबद्ध करते हैं, इसलिए मुख्य रूप से विभिन्न रंगों को एक बार [-1, 1] से [0, 1] प्रति चैनल से एनकोड किया जा सकता है।
एक तुलना यहाँ देखी जा सकती है:
व्यवहार में सामान्य नक्शे आमतौर पर बीसी 5 जैसे एक 2 चैनल प्रारूप में एन्कोडेड होते हैं जो वास्तव में केवल x और y को स्टोर करता है z के साथ फिर से जोड़ा जाता है क्योंकि हम जानते हैं कि यह एक यूनिट वेक्टर है। यह आपको फ़ाइल आकार को बढ़ाए बिना अधिक बिट्स के साथ उच्च परिशुद्धता बनाए रखने की अनुमति देता है।
vec3 colour = vec3(0.5) + normal * 0.5;
RGB को XYZ में परिवर्तित कर रहा है?