2011年7月11日 星期一

Spline IK 伸縮 手動架法




Spline IK 伸縮功能可以說是骨架設定裡一個很重要的元素。相信要設定這個功能不只有一種作法,我在這就分享一種算是"比較間單"的方法吧:



1. 建立骨架結構





2. 綁上 Spline IK




3. 選取新增出來的 spline 取線 (curve) , 然後在 script editor 執行
arclen -ch 1
;





4. arclen 這指令會生出一個 curveInfo node (在此稱為 curveInfo1 ) , 目的是為了量測曲線長度。




5. 在 script editor 執行
createNode multiplyDivide;

執行後會出現一個 multiplyDivide node (在此稱為 multiplyDivide1)。





6. 打開 connection editor, 然後把 curveInfo1arcLength 屬性 連結到 multiplyDivide1input1X.





7. 在屬性編輯室窗(attribute editor)裡把 multiplyDivide1Operation 設為 Divide, 然後把 Input1X 的 數值 複製到 Input2X 上。



8. 再執行 createNode multiplyDivide , 把另一個 multiplyDivide node 產生出來 (在此稱為 multiplyDivide2)。




9. 把 multiplyDivide1outputX 連結到 multiplyDivide2input1X




10 . 把最上層的joint (在此稱為 joint1) 的 translateX 數值複製到 multiplyDivide2input2X 裡,並把 operation 設為 multiply




11 . 把 multiplyDivide2outputX 連結到 joint1translateX



12. 對 spline ik 裡的所有 joint 重複執行 步驟 8 ~ 11。執行完的結果會類似以下的 hypergraph。 基本上到此 伸縮 spline IK 的 功能已經完成了。



13 .接下來我們可以使用 curve cluster 來控制 spline IK curve 的 行為。



當然還有一些其他要考慮的地方和多做的步驟,例如讓他可以一致的放大縮小。但如果先不考慮這部份的話,剩下來的問題就是看你要用什麼方式控制那些 cluster handle.
當然,因為這些步驟都有點繁瑣,所以當然會有很多人寫 mel / python 程式來自動產生這功能。 我若網路上有找到簡單又不錯用的程式,會在此跟大家分享。

7 則留言:

  1. 很實用的一篇教學
    改天我也來試看看

    回覆刪除
  2. 学习,并且膜拜一下....

    回覆刪除
  3. 我之前也是用這個方式做stretchIK,之後在Highend3D抓一個自動生成的script,方便又快速。那個script在Highend3D好像找不到了,不過看到不少類似的script,我想應該不難 :)

    回覆刪除
  4. 這個BLOG實在是太棒了啊啊啊

    回覆刪除
  5. 件內文你好,想請教您有關Maya的問題,我使用另一軟體建造模型,儲存成Obj檔,但卻不能匯入Maya中,我是用imput匯入,但畫面都沒有出現我做的模型,是不是哪裡出問題?

    回覆刪除
  6. 請問一致的放大縮小要怎麼做呢?謝謝

    回覆刪除