単純にコントローラーを作成して、ジョイントを動かせるように設定するという最小単位について、解説しているサイトが意外になかったので、ここで解説します。
ジョイントにコントローラー
- 設定のポイント
- ジョイントは必ずフリーズしてある
- コントローラー(カーブ)もフリーズ
- コントローラーをフリーズしたときピボット方向をジョイントと一致させる→グループノード挟む方法で
- コントローラーの準備ができたらジョイントとペアレントコンストレイント
グループノードを挟む理由
まず、目的としては、
- コントローラーのピボット方向をジョイントに一致させたい!
- コントローラーのトランスフォームを0にしたときに、デフォルトポーズになるようにしたい!
です。
「トランスフォーム0」は簡単です。コントローラーを選択し、修正(Modify)>トランスフォームのフリーズ(Reset and Freeze Transformations)を実行すればOKです。
ただ、ピボット方向に関しては少し問題があります。
それはオブジェクトにピボット方向情報を持たせることができないということです。
まず、ピボットの情報は、そのオブジェクトのトランスフォームノードの中にあります。
オブジェクトを選択し、[D]キーまたは、[Insert]キーで編集したピボットの位置情報は、このトランスフォームノードの中に格納されるわけです。
ただ、この中に方向情報はありません。
ピボットの方向は親の座標で決まります。オブジェクトが何かの子になっていればその親に、単体ならワールド座標に合わさります。もしそれ以外でピボットに方向をつけたいなら、トランスフォームの回転値に値を入れるしかありません。しかし、それでは目的の一つに反してしまいます。
それらを解決するのが、グループノードです。
グループノードのトランスフォームをジョイントに一致させ、コントローラーをその子にすることで、コントローラーの「ピボット方向=ジョイント方向」かつ「トランスフォーム0」を実現することができるわけです。グループノードは言わば、オフセット用のノードです。
グループノードのロック
グループノードはオフセットなので、アニメーターにいじられたくありません。必ずロックしておきましょう。
まとめ
このやり方が業界デフォかはわからないのですが、Mayaリギング -正しいキャラクターリグの作り方-にのっている方法でもあります。まずは、この方法を理解してから複雑なものに挑戦してみてはどうでしょうか。
この内容を探してました!感謝!!