您的位置:首頁 > 動漫 >

當前速遞!我的mayaPython學習之路(十二):關于矩陣實現(xiàn)約束效果

關于矩陣,https://www.zhihu.com/question/22047061可以看看這個大佬的回答,我是數(shù)學白癡,就不逼逼了。但是這不影響我們在maya中運用矩陣節(jié)點。

骨骼中常用的三個矩陣信息,分別表示:


(資料圖片)

World Matrix:該物體相對于世界坐標軸,它的位移、旋轉和縮放信息。

Parent Matrix:該物體的父級物體相對于世界坐標軸,父級物體的位移、旋轉和縮放信息。

Matrix:該物體自身的位移、旋轉和縮放信息。

其中,World Matrix和Parent?Matrix是繼承了他們上一級位移的,即:物體B通過世界矩陣或父子矩陣對另外一個物體X鏈接,物體B的父級運動時,物體X都會跟著動。

World Matrix:

以世界坐標軸為中心:

Parent?Matrix:

以父級物體的相對坐標為中心:

世界坐標軸中心還在,但是不再以它為坐標軸原點,而是重新以選擇物體的中心點為坐標原點,重新建立一個三維的坐標系。這就是Parent Matrix。

Matrix:

以物體自身為原點,重新簡歷坐標系。

一個簡單的,不保持偏移的矩陣鏈接如下:

以上圖的鏈接方式,將骨骼的世界矩陣信息分解為位移、旋轉和縮放,得到如下圖所示的結果。

Test_Jnt骨骼為被鏈接的骨骼。

一個約束效果出來了。

需要注意的是,被約束骨骼自身的偏移值。

被約束骨骼的偏移值必須要保證是0,否則,這個偏移值會影響到骨骼的旋轉信息。

如果必須保留偏移值的話,我們需要在進行一部操作。

分解出來的位移和縮放可以直接鏈接,子物體存在偏移值則需要求逆之后與父物體的控制量相乘,以抵消偏移值。

矩陣最直接的用法大概就這些,所有的矩陣運算,無非就是通過節(jié)點對歐拉角、矩陣和四元數(shù)進行轉化,想清楚各個節(jié)點的邏輯,知道節(jié)點的用法,提供一個比較清晰的思路,計算的問題計算機可以解決。

以小見大,通過矩陣求逆還可以實現(xiàn)雙倍位移的抵消,可以創(chuàng)建twist骨骼的抵消旋轉,矩陣的計算效率非常高。

最最重要的,就是通過矩陣的鏈接效果可以完全在引擎內實現(xiàn)。

標簽: MATRIX WORLDMATRIX TWIST maya HTTPS

相關閱讀