जवाबों:
जिस तरह से मैं यह करूँगा वह उन बनावट के नक्शों पर आधारित है जो आप इकाइयों पर लागू कर रहे हैं। अधिकांश सामानों के लिए आपके पास कुछ ऐसे क्षेत्र होते हैं जिन्हें टिंट करने की आवश्यकता होती है और कुछ ऐसे नहीं होते हैं। उदाहरण के लिए, आपके पास एक सामान्य टैंक हो सकता है लेकिन आप कुछ झंडे का रंग बदलना चाहते हैं।
यदि आप बनावट को रंगते हैं जैसे कि रंगीन क्षेत्र ग्रेस्केल हैं तो आप अल्फा चैनल का उपयोग यह निर्दिष्ट करने के लिए कर सकते हैं कि किन क्षेत्रों को रंगीन बनाने की आवश्यकता है।
तो अपनी छाया में आप (सबसे सरल तरीके के लिए) जा सकते हैं:
float3 finalColor;
if (colorFromTex.a > 0)
finalColor = colorFromTex.rgb;
else
finalColor = colorFromTex.rgb*myTintColor.rgb;
हालांकि यह इष्टतम नहीं है क्योंकि आपके पास एक कठिन संक्रमण होगा और आपकी छाया में एक शाखा होगी। इसके बजाय जाना बेहतर है:
float3 finalColor = lerp(colorFromTex.rgb,
colorFromTex.rgb*myTintColor.rgb, colorFromTex.a);
एक तकनीक में प्रत्येक मॉडल के लिए दो सेट बनावट हैं - एक लाल, दूसरा नीला। फिर यह निर्भर करता है कि आपको कौन सी टीम सौंपी गई है, उस बनावट सेट को लागू करें।
जाहिर है कि यह केवल तभी काम करता है जब आपके पास सिर्फ दो टीमें हों। हालांकि आप इसे दो से अधिक के लिए दूर कर सकते हैं, यह अक्षम होने लगता है।
दूसरा तरीका दो बनावटों को मिश्रण करना है - पहला मॉडल के लिए आधार बनावट, दूसरा एक रंगीन ओवरले होना जो आप रनटाइम के लिए उत्पन्न कर सकते हैं।
तीसरा तरीका आधार मॉडल के रंग को बदलना हो सकता है और मॉडल के उन हिस्सों पर कोई बनावट (या आंशिक रूप से पारदर्शी बनावट) नहीं है जिन्हें आप टीम के रंग दिखाना चाहते हैं।
टीम के रंग के लिए एक बनावट अल्फा चैनल समर्पित करना DXT बनावट को 2x बड़ा बनाता है, इसलिए मैं टीम रंग की गणना करने के लिए क्रोमा कुंजी का उपयोग करूंगा । अपने बनावट में एक रंग (जैसे हरा, नीला, मैजेंटा) को "आरक्षित रंग" के रूप में नामित करें।
जब इंजन बूट होता है, तो टीम के रंग पर "आरक्षित रंग" को घुमाने वाले प्रत्येक टीम रंग के लिए एक मैट्रिक्स बनाएं। टीम ऑब्जेक्ट खींचने से ठीक पहले, इस मैट्रिक्स को पिक्सेल शेडर स्थिर के रूप में सेट करें।
पिक्सेल शेडर में, पिक्सेल रंग को टीम कलर मैट्रिक्स द्वारा रूपांतरित करें। परिवर्तित पिक्सेल रंग के साथ अप्रतिष्ठित पिक्सेल रंग का लेप करें, पिक्सेल के क्रोमा के कोण के अनुपात में "आरक्षित रंग के" क्रोमा के अनुपात में।
यह आपको कुछ ALU निर्देशों का खर्च देगा और पिक्सेल shader में ट्रिगर करेगा, लेकिन यह बनावट बुक्स 2x के साथ आपकी बनावट कैश को बड़ा करने की तुलना में बहुत सस्ता है।
आपके पास प्रत्येक रंग के लिए एक बनावट चैनल को समर्पित किए बिना कई क्रोमा कुंजी (जैसे मैजेंटा और सियान एक प्राथमिक और माध्यमिक टीम के रंग पर मैप किए जाने की क्षमता है) है।
मेरी तकनीक यह होगी: 2 बनावट वाले: एक मुख्य बनावट, एक दूसरी बनावट जिसमें मुख्य भाग होता है, लेकिन केवल उन हिस्सों को जिन्हें आप रंगना चाहते हैं। दूसरी बनावट का रंग बदलें जैसा आप चाहते हैं।
Error 1 Missing asset "C:\Users\Kai\AppData\Local\Temp\fbx.shader.temp.1064.2756\ReplaceColor.fx"
। मुझे समझ नहीं आ रहा है कि मैं कैसे सही हो सकता हूं।