您當前的位置:首頁 > 舞蹈

[Maya] 尤拉角旋轉角 & 旋轉矩陣求旋轉角

作者:由 Ground 發表于 舞蹈時間:2022-06-14

大綱

1。Maya的旋轉角目前我發現的有兩種,一種是相對於

世界軸的尤拉角

,一種是相對於

物件的區域性尤拉角

2。Maya中變換屬性中的旋轉順序是指

世界軸的旋轉順序,預設為xyz

3。Maya

右側通道盒顯示的旋轉

x,旋轉y,旋轉z指的

maya的

區域性旋轉尤拉角

4。

獲取

maya的區域性旋轉尤拉角和世界旋轉尤拉角的程式碼

5。給maya的區域性旋轉尤拉角和世界旋轉尤拉角

賦值

的程式碼

6。給maya的世界旋轉尤拉角

賦相對值

的程式碼

7。用電腦的python以及庫

從旋轉矩陣中求尤拉角

tips。 不理解旋轉角的

概念可參考連結

正文

Maya的旋轉角目前我發現的有兩種,一種是相對於世界軸的尤拉角,一種是相對於物件的區域性尤拉角

[Maya] 尤拉角旋轉角 & 旋轉矩陣求旋轉角

圖1世界軸旋轉(選中w+滑鼠左鍵,選中世界來看軸 )

[Maya] 尤拉角旋轉角 & 旋轉矩陣求旋轉角

圖2區域性軸旋轉(選中w+滑鼠左鍵,選中物件來看軸 )

2。 Maya中骨骼變換屬性中的旋轉順序是指

世界軸的旋轉順序,預設為xyz

[Maya] 尤拉角旋轉角 & 旋轉矩陣求旋轉角

原因:

如在世界軸旋轉順序為xyz時,先給骨骼旋轉值賦予x30, y,60, z,45。

然後

旋轉各個軸(世界軸模式下)

,會發現,

只有

手動調整

旋轉z軸

時,

骨骼的世界旋轉尤拉角才只有z的世界旋轉角變化

。旋轉其他軸,一般都是三個軸一起變化。

若是在(物件軸模式下),會發現,只有手動調整旋轉x軸時,骨骼的世界旋轉尤拉角才只有x的世界旋轉角變化,旋轉其他軸,一般都是三個軸一起變化。(符合世界軸旋轉順序和區域性軸相反)

最後旋轉的軸在被旋轉時才不會影響之前旋轉的尤拉角。

3。 Maya右側通道盒顯示的旋轉x,旋轉y,旋轉z指的是maya的區域性旋轉尤拉角。

[Maya] 尤拉角旋轉角 & 旋轉矩陣求旋轉角

(可利用4。 的程式碼測試)

4。 獲取maya的區域性旋轉尤拉角和世界旋轉尤拉角的程式碼為

from

maya

import

cmds

s

=

cmds

ls

selection

=

True

#骨骼相對於世界空間的世界旋轉尤拉角

print

cmds

xform

s

0

],

ws

=

1

q

=

1

ro

=

1

))

#骨骼相對於區域性空間(骨骼本身)的區域性旋轉尤拉角

print

cmds

xform

s

0

],

q

=

1

ro

=

1

))

5。 給maya的區域性旋轉尤拉角和世界旋轉尤拉角賦值的程式碼為

cmds。xform(s[0], ro=[1。999954,5。000013,9。000000]) #區域性旋轉尤拉角

cmds。xform(s[0], ws=1,ro=[1。999954,5。000013,9。000000]) #世界旋轉尤拉角

6。 給maya的世界旋轉尤拉角賦相對值的程式碼為

cmds。xform(s[0], ws=1, r=1,ro=[1。999954,5。000013,9。000000]) #相對世界旋轉尤拉角

相對旋轉r=1

是指

在已經旋轉了rx,ry,rz的基礎上再繞例如固定軸旋轉rx',ry',rz’度

,而

不是

說從最開始0,0,0直接按照旋轉順序

旋轉rx+rx’,ry+ry’,rz+rz’度

。也就是說不是累加角度,

而是進行了兩次旋轉變換

關於 cmds。xform,更多資訊可參考

https://www。

youtube。com/watch?

v=y0fmrqPpXB0&t=3s

7。 用電腦的python以及庫從旋轉矩陣中求尤拉角,有幾種辦法。

如果python版本>=3。8,可以安裝scipy1。8。1,就可以利用scipy。spatial。transform。Rotation求取

利用github程式碼 (對應世界軸xyz順序的結果)

安裝pytorch3d,需要安裝多個庫,因為只是想轉個尤拉角,安裝太麻煩了,所以我沒安裝。

tips。 不理解旋轉角的概念可參考:

旋轉矩陣——-數學理論 - tensorRTN - 部落格園

為什麼尤拉角的定義是基於物體本身座標系的軸來旋轉,而不是基於參考座標系,或者地理座標系的軸來旋轉? - 曹力科的回答

如有錯誤,還請溫柔指教~

標簽: 旋轉  尤拉角  世界  maya  區域性