2011年2月12日土曜日

Hair systemを使った移動に対する揺れのアニメーション

例えば髪の毛の毛先を軽く動かしたいとか
自動で動かすときに使えるかも。

Jiggleを使う手もあるけど
今回はとりあえずHairが使いたい!
ということで。

あと、よく適当っていう言葉を使いますが
何でもいいって意味じゃなくて
適した、ほどよいって意味で使ってます。


では以下、実作業。
と言ってもMayaOnlineHelpに載ってるんですが・・・
 トンボの尾を使って描いたダイナミックなスプライン IK チェーン

まず、適当なカーブを作って動きの確認をします。

 Hair > Make Selected Curves Dynamic
設定はデフォルトで(下図参照)











色々とノードができますが
follicles1 を選択して

FollicleShape1 → Follicle Attributes → Point LockBaseに変更
(この設定で、カーブのどこを固定するかを決めることができるようです)
(下図参照)













この状態で
hairSystem1Follicles または follicle1 を
アニメーションさせれば
そのアニメーションに対して のこしをつけたような動きになります。

そのままだと全体的に揺れていますが
先端に行くにつれて揺れる感じにしたい、と思ったので
hairSystem1のアトリビュートを調整します。

調整するのは

IIterations,Stiffness,Stiffness Scale

です。
これらを軽く調整するとそれなりに思った動きになりました(下図参照)
(ムービーはまだ録り方分からないのでありません。。)















これができたところで
jointを配置して、IKsplineを仕込みます。

実際に髪の毛に使うとして
このjointより上に階層が続くので
それを考慮したjointを配置します。

下図のjoint1~joint5までが髪の毛部分
          joint6がそれより上の階層と見立てています(原点の左下にあるのがjoint6












IK SplineOptionのチェックを図のようにチェックを外して
joint1 → joint5 → curve2 の順に選択すれば作成されます。

さらに hairSystem1Folliclesjoint6の子供にします。
(この記事の最初の方でアニメーションを入れていたら削除しておく)

joint6をアニメーションさせれば
先ほどのカーブの動きがIK Spline に反映されます。

最後にOffset機能を持たせたいと思います。
ちょっと考えてみたけど
普通にcurve2Control VertexclusterRelativeにチェックを入れる)をつけて
それらをgroupに入れてjoint6の子供にすれば完了です。

















実作業ではclusterはコントローラーをつける。
できればjointの動きに合わせてコントローラーの位置が変わって欲しいけど
自分の知識内だと

 // Warning: Cycle on 'joint2.matrix' may not evaluate as expected.  (Use 'cycleCheck -e off' to disable this warning.)

のエラー?が回避できない。
clusterをコントローラーでconstrainして
その位置をjointから拾うと2重計算になるから?と思ってます。
(curveに位置情報をもらって動いているjointcurveの位置を制御するcluster)

骨の位置の数字だけを取ることができればできないか?
なんて考えてます。
getAttrとか使ってできないんかな。これも同じか。

0 件のコメント:

コメントを投稿