मैट्रिक्स गुणन क्रम बदलें


21

मैं अंतिम परिवर्तन मैट्रिक्स के लिए सही गुणन क्रम का पता लगाने के लिए कठिनाइयों का सामना कर रहा हूं। मुझे हमेशा या तो अजीब गति मिलती है या विकृत ज्यामिति। मेरे वर्तमान मॉडल को नीचे समझाया गया है:

एकल नोड के लिए मेरा गुणन क्रम है:

एल = एस * आर * टी

कहाँ पे

एल = स्थानीय परिवर्तन मैट्रिक्स

एस = स्थानीय पैमाने पर मैट्रिक्स

आर = स्थानीय रोटेशन मैट्रिक्स

T = स्थानीय अनुवाद मैट्रिक्स

नोड के विश्व परिवर्तन के लिए:

डब्ल्यू = पीडब्लू * एल

कहाँ पे

डब्ल्यू = विश्व परिवर्तन मैट्रिक्स

पीडब्लू = मूल विश्व परिवर्तन मैट्रिक्स

L = ऊपर दी गई स्थानीय परिवर्तन मैट्रिक्स

प्रतिपादन करते समय, प्रत्येक नोड के लिए मैं मैट्रिक्स की गणना करता हूं:

एमवी = आमंत्रण (सी) * एनडब्ल्यू

कहाँ पे

एमवी = एक विशेष नोड के लिए मॉडल दृश्य परिवर्तन मैट्रिक्स

Inv (C) = उलटा कैमरा परिवर्तन मैट्रिक्स

NW = नोड का विश्व परिवर्तन मैट्रिक्स ऊपर की गणना।

अंत में, shader में मेरे पास परिवर्तनशील परिवर्तन है:

टीवीपी = पीआरपी * एमवी * वीपी

कहाँ पे

TVP = अंतिम रूपांतरित वर्टेक्स स्थिति

PRP = परिप्रेक्ष्य मैट्रिक्स

MV = नोड का विश्व परिवर्तन मैट्रिक्स ऊपर की गणना

वीपी = अनियंत्रित शीर्ष स्थिति।

वर्तमान मॉडल के साथ, बच्चे के नोड्स, जिनमें स्थानीय रोटेशन होता है, कैमरे को बदलते समय अजीब तरीके से घुमाते हैं। गुणन क्रम में मैं कहां गलत हो गया?

जवाबों:


37

आदेश का कोई भी संयोजन S*R*Tएक मान्य परिवर्तन मैट्रिक्स देता है। हालाँकि, पहले ऑब्जेक्ट को स्केल करना बहुत आम है, फिर उसे घुमाएं, फिर उसका अनुवाद करें:

L = T * R * S

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


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

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