2013-06-15 3 views
5

मैंने सॉफ्टवेयर स्किनिंग के साथ एक एमडी 5 लोडर लागू किया। एमडी 5 में बाइंड पॉज़ अंतिम, पूर्ण स्थिति और घूर्णन है, आपको केवल वजन के लिए गणना करने की आवश्यकता है जो संयुक्त निर्भर हैं।ओपनजीएल: हड्डी एनीमेशन, जीपीयू के साथ काम करते समय मुझे बाइंड पॉज़ के विपरीत क्यों चाहिए?

मैंने GPU स्किनिंग को लागू करने का प्रयास किया लेकिन मैं एक बिंदु पर फंस गया हूं। चूंकि ये निर्देशांक अंतिम हैं, इसलिए मैं अपने 3 डी वैक्टर और quaternions को एक मैट्रिक्स में क्यों परिवर्तित नहीं कर सकता और बस इसे शेडर पर अपलोड कर सकता हूं? जैसा कि मैंने यहां पढ़ा है: http://3dgep.com/?p=1356, मुझे बाइंड पॉज़ के विपरीत के साथ अपने कंकाल को गुणा करने की आवश्यकता है। लेकिन मुझे इस हिस्से को समझ में नहीं आया क्योंकि मैंने हमेशा सोचा था कि केवल एक चीज जो मुझे करने की ज़रूरत है वह जीपीयू को अंतिम मैट्रिक्स अपलोड करें और बाकी की गणना करें (वजन की मात्रा इत्यादि)

क्या आप मुझे समझा सकते हैं उलटा बंधन का व्यवहार?

उत्तर

5

ईमानदारी से, लेख पूरी तरह से काम करने के लिए थोड़ा सा है। ऐसा लगता है कि उलटा बाध्य मुद्रा मैट्रिस का उपयोग हड्डियों को स्थानीय समन्वय प्रणालियों में बदलने के लिए किया जाता है।

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

'उलटी बाँध मुद्रा "मूल रूप से किसी परिवर्तन है कि पहले से ही अपने मॉडल के लिए लागू किया गया है" नाश कर देती है ":

+0

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

10

उस लेख के मूल लेखक के रूप में, मैं समझाने के लिए उलटा बाँध से क्या गुणा मुद्रा करता है की कोशिश करेंगे अपने बाध्य मुद्रा में।

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

यदि आप मॉडल में प्रत्येक जोड़ के लिए बाइंड पॉज़ मैट्रिस (अनवरोधित) लागू करते हैं तो आपको स्पेगेटी मिल जाएगी क्योंकि आप बाइंड को दो बार लागू कर रहे होंगे!

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

मुझे उम्मीद है कि यह थोड़ा सा साफ़ हो जाएगा ...

+1

+1, स्पेगेटी के रूप में मेरे मॉडल को विज़ुअलाइज़ करने से मुझे हंसी मिली। –

संबंधित मुद्दे