इसलिए मैंने नए प्रोग्रामर की ओर उन्मुख क्वाटरनियन आधारित 3 डी कैमरा लिखा है, इसलिए उनके लिए एकीकृत करना और उपयोग करना शुरू करना बेहद आसान है।Quaternion आधारित 3 डी कैमरे Quaternions या यूलर कोण जमा करना चाहिए?
जबकि मैं इसे विकसित कर रहा था, पहले मैं उपयोगकर्ता इनपुट को यूलर कोण के रूप में ले जाऊंगा, फिर उस फ्रेम के इनपुट के आधार पर एक क्वाटरनियन उत्पन्न करेगा। इसके बाद मैं कैमरे के क्वाटरनियन को ले जाऊंगा और इनपुट के लिए जेनरेट किए गए द्वारा इसे गुणा करूँगा, और सिद्धांत रूप में जो कैमरे के घूर्णन की वर्तमान स्थिति में इनपुट रोटेशन जोड़ना चाहिए, और चीजें सभी वसा और खुश होंगी। आइए इसे कॉल करें: Quaternions जमा करना, क्योंकि हम केवल quaternions को संग्रहित और जोड़ रहे हैं।
लेकिन मैंने देखा कि इस विधि में कोई समस्या थी। जितना मैंने इसका इस्तेमाल किया, भले ही मैं केवल एक यूलर कोण पर घूम रहा था, यॉ कहता हूं, कुछ पुनरावृत्तियों में, दूसरे में खून बहने लगेंगे, पिच कहें। यह मामूली था, लेकिन काफी अस्वीकार्य था।
इसलिए मैंने कुछ और शोध किया और एक लेख पाया जिसमें कहा गया कि यह यूलर कोणों को जमा करना बेहतर था, इसलिए कैमरा इसे वर्तमान रोटेशन को यूलर कोण के रूप में संग्रहीत करता है, और इनपुट को प्रत्येक फ्रेम में बस जोड़ा जाता है। फिर मैं प्रत्येक फ्रेम से एक Quaternion उत्पन्न करता हूं, जो बदले में मेरे घूर्णन मैट्रिक्स उत्पन्न करने के लिए प्रयोग किया जाता है। और इसने अनुचित अक्षों में घूर्णन रक्तस्राव के मुद्दे को ठीक किया।
तो क्या किसी भी स्टैक ओवरफ्लो सदस्यों को इस समस्या में कोई अंतर्दृष्टि है? क्या यह चीजों को करने का एक उचित तरीका है?
वही मैट्रिक्स दृष्टिकोण को बदलने के लिए जाता है और यह यूलर कोण आधारित क्वाटरनियन क्लास (केवल कुछ पंक्तियों) में संचालन के कुछ काउंटर जोड़ने के लिए इतना प्रयास नहीं है। बीटीडब्ल्यू मैं अक्सर सामान्यीकृत करने की अनुशंसा नहीं करता क्योंकि यह आपके वांछित परिवर्तन प्रभावों के साथ थोड़ा गड़बड़ कर सकता है। मैं आमतौर पर हर 64-128 ऑपरेशन – Spektre
_ को सामान्य करने के लिए सामान्य करता हूं, "किसी भी मामले में आपको यूलर कोणों पर वापस जाना होगा" _ - यह बिल्कुल सही नहीं है - पैमाने की कारक को मापकर स्केल फैक्टर को पुनर्प्राप्त किया जा सकता है चार का समुदाय – Eric