独学&就活サポートはこちら【MENTA】 入門用フリーモデルはこちら【BOOTH】

コンストレイント

今回はコンストレイントについてまとめてみます。
応用アニメーションに便利、キャラのセットアップにも使えます。

コンストレイントとは

constraint=制限 という意味で
Aの動きをBを使って制御(制限)する使い方をします。

コンストレイントには色々な種類があって
例えばAをBでコンストレイントするとこんなことができます。

常に対象の方向を向かせる。
眼球の回転(A)がコントローラ(B)で制限されています。

物を持ち上げる。
手の位置(A)が箱(B)で制限されています。

カメラをパスに沿って動かす。
カメラの位置(A)がパス(B)で制限されています。

スケルトンがリグの動きに追従する。
スケルトンの骨の回転(A)がリグ(B)で制限されています。

服の表面にアクセサリをくっつける。
アクセサリの位置(A)が服のポリゴン面(B)で制限されています。

メリット

親子関係では不可能な連携アニメーションができる

他のオブジェクトと連携させるなら親子関係がまず浮かびますが、
移動・回転・スケールが追従するシンプルな機能なので限界があります。
コンストレイントを使うことで、より応用がきいたアニメーションが可能になります。

階層構造に影響しない

例えばスケルトンの手に武器を親子化すると、スケルトン構造の中に武器が入ってしまいます。
武器もスケルトンの一部として扱われてしまうため、他のツールとの連携を考えると厄介な構造です。
コンストレイントなら階層には入らず、でも手の動きには連動するようなセットアップができます。

リギングに必須

階層構造に影響しないため、キャラクターのリギングにも必須の機能となります。
リグがスケルトンの階層構造を保ったままコントロールできるのは
スケルトンの骨がそれぞれリグの動きにコンストレイントされているからです。
※例外もあります。リギング深し。

注意すること

自由には動かせなくなる

親子関係のように、対象の動きに連動しつつ自分も自由に動く、ということはできません。
パスに沿わせればパス上しか移動できないし、

吹っ飛ぶ

コンストレイントを適用した瞬間、あるいは解除した瞬間にあらぬ方向へ飛んでいくことがあります。
コンストレイントの吹っ飛び対策としては

  • なるべく対象と位置や方向を合わせておく
  • アニメーションをつける前に適用する

あたりでしょうか。
なるべくクリーンな状態で連携させてあげるのがポイントかと。

参考リンク

コンストレイントでモーション作業を楽にする | DoRuby
コンストレイントについてすごく分かりやすくまとめてあります。良記事。

コンストレイントは○○だと考えるとわかりやすいかも? | 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ | AREA JAPAN
少しエンジニア寄りの視点からのコンストレイント解説。なるほどこういう考え方もできるのかと参考になります。