チュートリアル / Chara@Maya~Maya 2016で気軽にはじめるキャラクター制作~
第5回:リギング ~ちょっとだけお堅い話です~
- Maya
- アニメ
- キャラクター・リグ
- ゲーム
- コラム
- ジェットスタジオ
- チュートリアル
- 中級者
- 学生・初心者
- 教育
- 映画・TV
今回はリギングです。リギングとはアニメーターがキャラクターを動かすための仕組み(リグ)を作ることです。
スケルトンとスキニングのみで構成されたリグ無しキャラクターで、ポーズ・アニメーションをつけるなんてとてもじゃないけどやってられません。
アニメーターがキャラクターを直感的に分かりやすく、動かしやすくするための工程がリギングです。
MayaやMotionBuilderには「HumanIK」、3dsMaxには「Biped」や「CAT」というすでに人型のリグが完成された便利なセットがありますが、頭、両腕、両足以外の部分(髪、服、装飾品等)は自分でカスタムリグを組まなければなりません。
今回は基礎的なリグをご紹介するためにも、全身をカスタムリグで作成していきます。
大事なこと
さて、リグはスケルトンやメッシュを直接触るのではなく基本的に全てコントローラーと呼ばれるもので制御できるよう組んでいきます。
このコントローラーが、分かりやすく、動かしやすくという点で特に重要な部分です。
コントローラーがもしも全て無色のLocatorで構成されていたら、一目見て何を触ったらいいか分かりませんよね。
コントローラーの形状、色分けにも気を使って作成していましょう。
また、使わないアトリビュートはロックした上で非表示にしてしまいましょう。余計なアトリビュートが表示されたままだと「何か意味があるのかな?」と混乱を招く原因となってしまいます。
リグを複雑にしてコントローラーを増やしすぎないことも大切です。いろいろなことが出来るようになってくると、つい高機能万能リグを作りたくなってしまう方もいるかと思います。
僕もそのうちの1人ですが、、、「わかりにくい!」「コントローラー多すぎ・・・」「重い!」と苦情の嵐になるのがオチです。
アニメーターの目線になって極力シンプルで扱いやすいリグを心がけましょう。
スケルトンの作成
ベースとなる人型のスケルトン構造は、命名が既にされているHumanIKのスケルトン作成機能を使って作ってしまいます。[動画 00:00~]
必要なジョイントを作成したら細かい位置調整を行います。移動、回転ツール、各種スナップ機能を使って適切な位置に配置しましょう。[動画 01:30~]
スケルトンに回転値が入ったままの状態は原則NGですが、後で全てきれいにするので現段階では気にせず配置に専念します。
配置が出来たらジョイントの方向を編集します。
ジョイントの方向は間接の回転に密接に関係するとても重要な情報です。回転値を元に何か別のものを制御したい場合なんか特にこの情報が重要になってきます。
が、難しいことを考えてもしょうがないので、以下の画像ように『X軸がねじりの方向(子のジョイントの方向)』『Y軸orZ軸が折り曲げる方向』に向いていればOKです。
ジョイントには回転や方向に関するアトリビュートが複数あり一見ややこしいのですが、結果的に以下の画像のようになるよう設定していきます。
具体的には以下の工程で設定を行っていきます。[動画 11:00~]
①「ジョイントの方向付け」でねじりの方向の軸を設定する。
②子のペアレントを一時的に解除し、Y,Z軸の方向を手動で設定する。
③「トランスフォームのフリーズ(ジョイントの方向オプションOFF)」を行う。※回転が0になり差分がジョイントの方向に変換される。
④ペアレントを再設定。
コンポーネントモードで「?」右クリックから「ローカル回転軸」にチェックを入れても同じようなことが出来るように見えますが、こちらは「ジョイントの方向」でなく「回転軸」というアトリビュートに数値が入ります。この状態では回転の軸とスケールの軸がずれてしまうので、原則使用しません。
全ての方向設定が終わったら、ミラーリングをして反対側にジョイントをコピーしましょう。[動画 21:40~]
同様の作業を繰り返し、髪や装飾品にも必要なスケルトンを作っておきます。
コンストレイントとユーティリティノードのコネクション
腕はFKとIKを切り替えられるように組んでいきます。
FK、IK共にダミーを作成し、コンストレイントの切り替えにて行う方式です。
ダミージョイントにIKを作成したらあとはほとんどがコンストレイントとユーティリティノードを駆使したコネクションによる構築作業です。[動画 01:30~]
ここでよく使うユーティリティノードを一部紹介します。
・間の角度(angleBetween)[動画 11:42~]
2つのベクトルの間の角度を返します。単純なオイラー角の差ではなく最短で返してくれるので、180°を超える角度が返されることはありません。
・乗算除算(multiplyDivide)[動画 12:28~]
掛け算、割り算に加え累乗の計算も出来ます。
・プラスマイナス平均(plusMinusAverage)
足し算、引き算、平均の計算です。
・反転(reverse)[動画 15:40~]
『0~1』を『1~0』に反転させます。On/Offのスイッチに使えます。
・条件(condition)
条件分岐、プログラミングで言うif文です。同等(=)、不等(!=)、大なり(>)、以上(>=)、未満(<)、以下(<=)の6つが選べます。
ちなみにドリブンキーは、メカの変形のような複雑な動きをひとつのコントローラーで制御したりするときに役立ちますが、シンプルな構造であればコネクションベースで構築してしまいます。というのも、ドリブンキーはあくまでも“キー”ですのでアニメーションカーブノードが作成され、チャンネルボックスの該当アトリビュートは赤色に変わります。
リグのシステムに関わる部分はアニメーターが触らないよう隠しておくのがベストですが、アニメーションを一括削除しようとした時にうっかりドリブンキーまで削除してしまう可能性を考慮すると、シンプルなものはできるだけコネクションベースで構築したほうが安定性が増すのではないかと僕は考えています。
全部位の解説は出来ませんが、同様に脚や背骨に関してもIKやコンストレイントを駆使してリグを構築します。
スキニング
スキンのウェイト調整はなかなか入念な作業になります。
関節の数と可動範囲、パーツ数を考えると破綻なく綺麗な変形をするには多くのパターンのポーズを取って確認する必要があります。
動画ではざっくりとした調整で済ませていますが、この後さらに細かいチェックを繰り返し丁寧に調整をします。
前バージョンから追加されている多面体ボクセルによるスキンバインドは、必ずしも万能ではないですがボタンひとつでかなり綺麗な状態まで持っていくことが可能になりました。[動画 01:53~]
細かい部分はペイント又は数値入力で調整していきましょう。[動画 04:54~]
調整ができたらミラーリングをして完了です。[動画 13:45~]
ハイブリッドフェイシャルリグ
フェイシャルリグは大きく分けてジョイントによるものとブレンドシェイプによるものの2つの方法があります。
ジョイントによるフェイシャルリグは細かい動きを個別に作成でき自由度が上がりますが、制御点が多くなりがちで扱いにくさが生じます。
一方ブレンドシェイプは目的の形状に確実に変形できるため、単純な筋肉の動きのみでは表現しきれないデフォルメ特有の大きな変形にも難なく対応できます。しかしあらかじめ用意されたターゲットの数に依存するため、単調になる可能性もあります。
今回はブレンドシェイプに加え、表情に大きく影響する箇所(眉毛や目)にはジョイントを仕込みます。
ジョイントによる部分は直接メインのモデルに適用するのではなくブレンドシェイプを介して制御します。カテゴリごとに分けられるのでスキンの調整も楽チンです。
ということで、テストでポージングをしてみます。
フェイシャルターゲットがまだ少ないのはこっそり次回までに追加しておくとして、、、
次回はいよいよ最終回になります。このリグを使って簡単にアニメーションを付けてみようと思います。
ではまた!
まとめ
・複雑にしすぎない。分かりやすいコントローラを!
・ジョイントの方向にも気を使う。
・IK、コンストレイント、ユーティリティノードを駆使してリギング。
・スキニングは細かいチェックを!