コンストレインとは
コンストレインとは様々なコントローラー、骨、オブジェクトなどに親子関係を持たせることです。
例えばですが、キャラクターの手にリンゴを持たせるのに手のコントローラーとリンゴのコントローラーを親子関係で繋ぐことでリンゴが手にくっついて動くようになります。
こうやって見ると簡単そうですが、実際にやってみると少し難しかったりします。
1つのコンストレインで済めば簡単ですが、実際のシーンだと2つ、3つとコンストレインノードが増え、一通り作業し終わった作業シーンを見るとコンストレインだらけになっているなんてことも。。
整理って大事です。。
また、アニメーション作業において、間違ったノード、例えばオブジェクトのジオメトリに直接コンストレインしてしまうなどはCG業界、特にゲーム業界などではご法度とされています。(※ダミーで作ったオブジェクトはOK!みたいな例外もあります)
MBの場合だとScene BrowserとSchematicでコンストレインの作成をすることが多いですが、コンストレインにはいくつか種類が存在し、その役割も違ってきます。
では、まずはよく使うコンストレインの種類をいくつかご紹介しましょう。
コンストレインの種類
よく使うコンストレインは4つ、Positon Rotation Parent Scaleです。
Position
Translation(移動値)のみをコンストレインするものです。
Rotation
Rotation(回転値)のみをコンストレインするものです。
Parent
Translation(移動値)とRotation(回転値)の両方をコンストレインするものです。
MayaのようにParentコンストレインした後に移動値だけを無効化みたいなことは出来ないので、移動値と回転値を分けたい場合は上記のPositionとRotationのコンストレインを使用します。
Scale
Scale(スケール値)のみをコンストレインするものです。
基本使いませんが、ダミーエフェクトなどを作成する場合は使ったりします。
簡単ではありますが、機能的にはこのような4つのコンストレインが基本となります。 また、MBの場合狙った部分のみ(移動値のZのみとか)のコンストレインは別の方法があるのですが、それはまた別の機会に。。 今回のコンストレインは移動値なら移動値全部、回転値なら回転値全部をコンストレインすることになります。(この4つのコンストレインでも大体のことは可能です。)
他にも私がよく使うものを2つだけ紹介しておきます。
Aim
移動値が対象のオブジェクトの回転値をコンストレインするものです。
例えばMBでカメラを作成するとデフォルトでAimコンストレインのような制御がされています。
Relation
Relationは様々な機能がありますが、私が使うのはParentのような機能です。
例えば、キャラクターなどに複数のオブジェクトを持たせるために、Parentをいくつも使用するよりも1つにまとめることが出来ます。
ただし、Parentや他のコンストレインと違い、親と子の位置や回転値が同じになるので注意は必要です。また、コンストレインアニメーションをする場合は不向きなのでParentと併用したり切り分けて使用する必要があります。
コンストレインの作成と使用方法
対象のコンストレインを選んだらView画面のどこでもいいのでドラッグします。
そうすると、NavigatorタブのConstraintsの中にコンストレインノードが作成されます。
そのノードを選択、ダブルクリックし、右側にConstraint Settingsが表示されたらSchematicから対象のノードを選択し、Xキーを押しながら空箱にドラッグします。
それを親と子両方行い、SnapボタンもしくはZeroボタンを押すことでコンストレインが成されます。
Snapは親と子がその時のキーフレームの値でそのままの状態でコンストレインされます。
Zeroは親の同じ位置と同じ回転方向にスナップされてコンストレインされます。
また、下部にあるWeightの値が0~100でコンストレイン率を調整できます。(Weightのところを選択状態でSキーを打てばキーアニメーションも使用可能です。)
※Lockにチェックが入っていない場合は、チェックをONにすることをおすすめします。
理由はコントローラーなどをコンストレインしている際にアニメーションキーを打つとアニメーションが壊れるからです。LockがONになっていればアニメーションが壊れることがなくなります。
Parentのデモ操作動画です。
Schematicの使用方法
Schematicの使い方を少しだけ。
Schematic画面で階層構造を組みたい場合やオブジェクトやコントローラー同士の位置を合わせたいときなどに便利な機能を紹介します。
階層構造を組みたい場合
対象のオブジェクトやコントローラーがSchematic画面に映るようにして、PキーもしくはSelection modeのところをクリックします。そうするとParent modeになり親子関係を作成することができるようになります。(Selection modeに戻すにはF3キー)
位置を合わせたい場合
位置などを合わせるにはCubeを選択しXキーを押しながら、対象のConeにドラッグすると選択画面が出てくるので目的のところをクリックすれば、CubeがConeのところに移動したり回転値を合わせたりすることが出来ます。
コンストレインの実践テクニック
簡単な実践テクニックを1つ紹介します。
コンストレインは前提としてくっつけたもの(親子関係の子側)はコンストレインをした位置から動かすことが出来ません。
では手にリンゴを持たせたあとにリンゴを動かしたい場合はどうすればよいでしょう。
手にリンゴを持たせるコンストレインは作成するとして、それだけだとリンゴは動かすことができません。
ではどうすればよいでしょう。
答えは、、、
階層を利用してコンストレインする
です。
リンゴを制御するコントローラーに階層を組み込み込んだコントローラーを用意し、コンストレインするというもの。
プロジェクト案件だとリンゴ自体の階層を変えることは許されないので、外に別でコントローラーを用意します。
手順
1 nullで階層を組んだリンゴのコントローラーを作成
2 作成したコントローラーの一番したの階層のnullとリンゴの制御しているもの(リンゴの骨や元のコントローラー)をParent(画像左)
3 手と作成したコントローラーの一番上のノードをParent(画像右)
以上です。
このようにすれば、手にリンゴを持たせた状態でリンゴにもアニメーションを入れることができるようになります。
apple_constraint_anim_demo
デモではありますが、参考ムービーを用意しました。
(ムービーのキャラクターやアニメはMBのデフォルト機能にあるPepe_keyanimを使用しています。リンゴは私が仮で作成したものです。)
まとめ
今回はコンストレインについて、色々と書かせていただきましたが、私もまだまだ知らない事が多く、拙い説明になっているところもありますが、ご容赦ください。
キャラクターアニメーションにこのリンゴのような動きを加えるだけでも情報が増え、見ている側が楽しめるような絵を作れるのがアニメーターです。
正直大変な仕事だと思いますし、私自身も挫折しそうになることもあります。
それは置いておいて、、、さて、次回はCGアニメーターは覚えておいて損はないMBのキャラクタライズのお話ができればいいなと思っております。
水巴レイ
コメント