前回の記事(MayaでFKとIKブレンド(切り替え)方法)の続きとして、FKとIKのマッチング(位置合わせ)について解説します。前回の記事で作成したシーンを使用します。よって前回の記事をご覧になっていない方はまずはそちらを御覧ください。
FKとIKのマッチングというとなにか特別な高等テクニックを使っているように思われるかもしれませんが、実は手作業でも可能です。しかし、手作業の場合は手間がかかったり、ミスも生じるのでスクリプトを使うことになります。
MayaでRiggingというシリーズの記事では知っておくべき基礎的な内容の記事も過去に執筆しています。ぜひこれらの過去記事も参考にしてください。
FKをIKにマッチングする方法
まずはFKをIKにマッチングする方法から考えてみます。
真ん中のブレンドされるjointは邪魔なのでHide(非表示)にします。
「L_upperArm_fk_Jnt」(FKのルートの根本の黄色いサークル)を選択し、次に「L_upperArm_ik_Jnt」(IKのルートのjoint)を選択し、Modify > Match Transformations > Match Rotation で角度をあわせます。
肘のjointと手首のjointも同様にMatch Rotationします。
FKをIKにマッチングする方法は「IKのjointにFKのjointの回転を合わせれば良い」だけです。
IKをFKにマッチングする
次はIKをFKにマッチングする方法です。
ブレンドするjointを非表示にしたところからスタートします。
「L_hand_ik_Ctrl」(手のIKのコントローラー)を選択し、次に「L_hand_fk_Jnt」(手のFKのサークル)を選択し、 Modify > Match Transformations > Match Translation で位置をあわせます。
Modify > Match Transformations > Match Rotation で角度をあわせます。
「L_arm_vector」(腕のベクターコントローラー)を選択し、次に「L_elbow_fk_Jnt」(FKの肘のjoint)を選択して、 Modify > Match Transformations > Match Translation で位置をあわせます。
しかし、肘とベクターコントローラーが同じ位置というのはあまり好ましくありません。
そこですべてのjointが同じスタート位置にあるときに「L_upperArm_fk_Jnt」(上腕のjoint)の子にロケーターを配置して、そのロケーターを「L_arm_vector」(ベクターコントローラー)とMatch Translation等で位置合わせします。間違って動いてしまうといけないのでVisibility以外はすべてLock and Hide Selectedしてしまいましょう(誤って選択しないように非表示が好ましいですが、説明のために表示しています)。
このロケーターにMatch Translationすれば上の画像のように肘から離れて配置することが出来ます。
IKをFKにマッチングする方法は「FKの手首のjointにIKのコントローラーの位置と回転を合わせ、次にベクターコントローラーの位置を合わせる」だけです。
MELで実践
それではMELを使った場合です。
FKをIKにマッチングする場合
matchTransform -rot L_upperArm_fk_Jnt L_upperArm_ik_Jnt;
matchTransform -rot L_elbow_fk_Jnt L_elbow_ik_Jnt;
matchTransform -rot L_hand_fk_Jnt L_hand_ik_Jnt;
IKをFKにマッチングする場合
matchTransform -pos L_hand_ik_Ctrl L_hand_fk_Jnt;
matchTransform -rot L_hand_ik_Ctrl L_hand_fk_Jnt;
matchTransform -pos L_arm_vector fk_vector_Loc;
上でやった手順をMELにしただけです。
これらをシェルフにいれるなどすれば作業効率はあがるでしょう。
ぼんやりとした不安
芥川龍之介ではありませんが、ここでぼんやりとした不安が頭をよぎります。
実はこのmatchTransformを使うと数値が微妙にずれてしまったりします。
私はリグが専門ではないのでこれで良いのかは少し不安です。
<2022/06/24追記>
この微妙な数値のずれはチャンネルボックスではデフォルトで小数点3桁までしか表示されないためです。それ以下の数値は存在しているにもかかわらず四捨五入して表示されてしまうのでずれが生じてしまうようです。
ですので、次回はちょっと面倒ですが、昔からあるxformコマンドを使った方法を解説します。
今回はFKとIKのマッチング(位置合わせ)はどうやっているのかがわかればそれで良いと思っています。
今回の記事が気に入っていただけた場合、ぜひとも他の記事もチェックしてみてください。Mayaのリギングに関する記事をまとめたページです。
コメント