2013年3月15日金曜日

FK/IK Switch コンストレインを使う方法

今回はFK/IK Switchについてです。

まずはFKとかIKとはなんぞやって感じでしょうか?
まぁその辺はググってもらった方が分かりやすいと思います。


簡単に言うと今回は腕や足等のコントロールの方法を場合によって使い分けられるようにしよう!
という内容です。



私が、セットアップで重要だと思うことは「考える」ということです。
どうやったらそういった動きが出来るようになるのか、実現できるのかを考えます。




①まずはそれぞれどういう作り方をするか考えましょう。

IKの場合・・・IK handleを仕込みます。
FKの場合・・・rigとボーンをコンストレイン等で繋ぎ同期させます。



②続いて、それらを合わせようとした時に出てくる問題を考えます。

→基本的にIK handleでのコントロール以外ボーンは身動きが取れなくなります。



③その問題に対する解決策をできればいくつか出します。

1、IK handleが存在する状況でもボーンをコントロールできるようにする。
2、FKとIKを両方作っておいて切り替える。
3、IK handleを使わずIKのコントロールをする。
4、・・・

とまぁこんな感じです。


④その中で実現が可能なものを考える

ここのステップは実際に動作してみた方が分かりやすいと思います。

まぁ今回の場合はタイトルの通りFK/IK Switch、2番の切り替えです。





ではようやく本題。
どうやって切り替えるのか。

ここも↑のように考えてみると良いでしょう。
ってのはあまりにひどいので今回は、私が調べた方法を2つのうち一つ目をご紹介します。




まずは、
・FK用のボーン
・IK用のボーン
・バインド用のボーン
の三つを用意します。














こんなかんじでジョイントの方向も全て合わせてください。
(一つ作ってコピーすると楽だと思います。)
更に、名前もそれぞれ個別の名前を付けてあげて下さい。
(この後の処理のエラーをなくすためです。)


その後、いつも通りIK用のボーンにはIKのrigを
FK用のボーンにはFKのrigを付けてあげて下さい
まぁこの辺は割愛します。


ここまでは2つの方法とも一緒です
=================================================


まず同位置にあるボーンのうち、FK用とIK用をバインド用へペアレントコンストレインします。















この図で言うなら赤をバインド用だとすると
青と緑を赤にペアレントコンストレインします。


するとチャンネルボックスウィンドウの中の
バインド用ボーンの下のシェイプの中に
『名前_parentConstraint数字』みたいなものが表示されたと思います。

これがコンストレインのノードです。

更にその『名前_parentConstraint数字』の中に
『ジョイント名W0』と『ジョイント名W1』が出来ていると思います。
これらはコンストレインの引きつけのウエイトです。
片方が1で片方が0の場合1のウエイトがある方に追従し、0には全く追従しません。

つまりこれらの値を切り替えてあげることによって切り替えができます。
なので切り替えたい箇所全てにまずは上の処理をします。


これで切り替えが可能になります!!
しかしアニメーションを付ける時、いちいち全ての箇所のコンストレインのノードにキーを
打っても良いのですが、めんどくさい!!

ので切り替え用のコントローラーを作って、ドリブンキーの設定や直接コネクションしましょう。


ドリブンキーの設定の仕方は長くなるのでググってください。
コネクションの方法は詳しくはまた次回説明します。



ざざっとこんな感じで切り替えられます。(最後投げやりでごめんなさい;;)
が!
このコンストレインの引きつけのウエイト、floatに見えてfloatじゃないので
1と0しかないので切り替えの時にオブジェクトが瞬間移動してしまいます。

なのでアニメーションの最中に切り替えることが難しいです。


そこで!次回のブレンドカラーを使った方法の出番です!
ただこっちの方が”ノード”というもののイメージが無いと分かりにくいかもしれません。


今回の記事もさらっとしてしまったので分かりにくかったでしょうか。
その時はまたコメントください!

1 件のコメント:

  1. お疲れ様です。
    フェイシャルアニメーションを日々勉強している学生です。

    IK/FK切替があると、用途が広がるので良いですね。

    返信削除