[Maya] 尤拉角旋轉角 & 旋轉矩陣求旋轉角
大綱
1。Maya的旋轉角目前我發現的有兩種,一種是相對於
世界軸的尤拉角
,一種是相對於
物件的區域性尤拉角
2。Maya中變換屬性中的旋轉順序是指
世界軸的旋轉順序,預設為xyz
3。Maya
右側通道盒顯示的旋轉
x,旋轉y,旋轉z指的
是
maya的
區域性旋轉尤拉角
。
4。
獲取
maya的區域性旋轉尤拉角和世界旋轉尤拉角的程式碼
5。給maya的區域性旋轉尤拉角和世界旋轉尤拉角
賦值
的程式碼
6。給maya的世界旋轉尤拉角
賦相對值
的程式碼
7。用電腦的python以及庫
從旋轉矩陣中求尤拉角
tips。 不理解旋轉角的
概念可參考連結
正文
Maya的旋轉角目前我發現的有兩種,一種是相對於世界軸的尤拉角,一種是相對於物件的區域性尤拉角
圖1世界軸旋轉(選中w+滑鼠左鍵,選中世界來看軸 )
圖2區域性軸旋轉(選中w+滑鼠左鍵,選中物件來看軸 )
2。 Maya中骨骼變換屬性中的旋轉順序是指
世界軸的旋轉順序,預設為xyz
原因:
如在世界軸旋轉順序為xyz時,先給骨骼旋轉值賦予x30, y,60, z,45。
然後
旋轉各個軸(世界軸模式下)
,會發現,
只有
手動調整
旋轉z軸
時,
骨骼的世界旋轉尤拉角才只有z的世界旋轉角變化
。旋轉其他軸,一般都是三個軸一起變化。
若是在(物件軸模式下),會發現,只有手動調整旋轉x軸時,骨骼的世界旋轉尤拉角才只有x的世界旋轉角變化,旋轉其他軸,一般都是三個軸一起變化。(符合世界軸旋轉順序和區域性軸相反)
最後旋轉的軸在被旋轉時才不會影響之前旋轉的尤拉角。
3。 Maya右側通道盒顯示的旋轉x,旋轉y,旋轉z指的是maya的區域性旋轉尤拉角。
(可利用4。 的程式碼測試)
4。 獲取maya的區域性旋轉尤拉角和世界旋轉尤拉角的程式碼為
from
maya
import
cmds
s
=
cmds
。
ls
(
selection
=
True
)
#骨骼相對於世界空間的世界旋轉尤拉角
(
cmds
。
xform
(
s
[
0
],
ws
=
1
,
q
=
1
,
ro
=
1
))
#骨骼相對於區域性空間(骨骼本身)的區域性旋轉尤拉角
(
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 - 部落格園
為什麼尤拉角的定義是基於物體本身座標系的軸來旋轉,而不是基於參考座標系,或者地理座標系的軸來旋轉? - 曹力科的回答
如有錯誤,還請溫柔指教~
上一篇:鳴天鼓——擂響健康的大鼓
下一篇:洗碗機最雞肋的功能是什麼?