歐拉角的萬向節死鎖問題


在學習《3D數學基礎:圖形與游戲開發》時,又接觸到歐拉角的萬向節死鎖的概念,仔細思考發現自己沒太明白。查了很多博客,感覺都沒說到點子上,不懂的還是不懂。

下面說一下自己的理解,有不對的地方請指正。

首先,動態歐拉角才會發生萬向鎖(即繞物體坐標系的三個軸旋轉,在世界坐標系下,旋轉軸是跟着物體的旋轉而動態變化的),下面說的歐拉角都是指動態歐拉角。

第二,歐拉角的萬向鎖並不是“鎖了之后就有一個方向不能轉了”,而是指定旋轉角度的時候丟失了自由度(只能沿兩個軸進行旋轉)。看到很多博客拿輪船上的三個轉子來解釋,讓我開始理解成了遇到萬向鎖之后,旋轉軸鎖死,物體不能任意轉了。其實只是本次旋轉丟失了自由度,接下來選擇合適的歐拉角還是能旋轉到任意方位。

歐拉角的三個軸的旋轉順序是確定的。當指定第二個旋轉軸的旋轉角度為90度時,在世界坐標系下觀察這個旋轉過程,會發現在實際旋轉過程中,第一個旋轉軸和第二個旋轉軸正交,第三個旋轉軸和第二個旋轉軸正交,但第一個旋轉軸和第三個旋轉軸是重合的。(旋轉軸根據前一個軸的旋轉進行旋轉之后,物體再繞着這個旋轉軸旋轉,因此並不能保證世界坐標系下旋轉軸正交)。

實際應用中會遇到什么問題

歐拉角有別名問題,即不同的歐拉角表示同一個方位,不同方位之間有不同的方式進行旋轉。

在一些應用中,如角色動畫、攝像機自動控制,需要用到插值技術,根據關鍵幀的方位插值計算中間幀的方位角或旋轉過程,這個時候別名問題就會造成插值的困難。

1.角度差很大,這是因為角度有周期性。可以通過限制歐拉角的范圍來解決(將角度限制在-180°到+180°很簡單,但將第二個旋轉軸pitch的值限制在-90°到+90°之間就需要一定技巧)。

2.如果將角度限制在-180°到+180°,角度的變化方向也會引起插值問題。例如從物體繞某個軸從170°旋轉到190°,而190°被限制到(-180°,+180°)后變成-170°。此時對中間1幀進行插值,170°旋轉到190°是{170,180,190},但170°到-170°會變成{170,0,-170}。兩種插值結果會導致物體從兩個不同的方向旋轉。

解決方法是將用於插值的角度之差限制在(-180°,+180°)范圍內。

3.插值時碰到萬向鎖,即插值結果的第二個旋轉軸的旋轉角為+90°或-90°,通常不能旋轉到正確的位置,會導致抖動、路徑錯誤等現象,僅用歐拉角表示旋轉無法解決。暫時沒有想到一個很好的角度作為例子,以后碰到再補充。

 

參考:

《3D數學基礎:圖形與游戲開發》
 https://blog.csdn.net/huazai434/article/details/6458257

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM