Tips

modoで関節の位置にあるロケータでアップベクターを制御する方法

前回に引き続きIK制御に関連したリグの作り方です。IKで制御されている関節の位置にコントローラーを配置して、そのコントローラーを回転してアップベクターを制御するリグの作り方を書いてみます。

 

このリグは好き好きあると思いますが、IKの「モディファイヤ依存ループ」を回避する方法として紹介してみたいと思います。基本的には「IKゴールの移動範囲を制限する方法」と同じで、IK制御に関連しない階層を使用するのがポイントです。

作成手順です。

  1. IKとアップベクターが設定されてたシーンファイルを準備します。
  2. ロケータを3個追加します。
    追加したロケータはそれぞれ、スケルトンの位置、アップベクター位置、IKゴール位置に配置します。アイテムの配置はドロップアクションの「位置を一致」を使用すると便利です。
  3. ロケータに親子関係を設定します。
    アップベクターに配置したロケータを、IKゴールに配置したロケータにペアレントします。IKゴールに配置したロケータを、IKゴールにペアレントします。
    アイテムのペアレントはドロップアクションの「同位置でペアレント」を使用すると便利です。
  4. スケルトンの「ワールド位置」を、スケルトンの位置に配置したロケータにリンクします。
    チャンネルビューポートから「ワールド位置」をスケマティックに追加して、ロケータの「ワールド位置」にリンクします。これにより異なる階層にあるロケータが、スケルトンにペアレントしたように動作します。
  5. 同様にアップベクターの位置に配置したロケータの「ワールド位置」を、アップベクターにリンクします。
    本来はスケルトンの位置のロケータに、アップベクターを直接ペアレントできればスマートなのですが、「モディファイヤ依存ループ」が発生してしまいます。このため異なる階層にあるロケータの「ワールド位置」をアップベクターにリンクすることで「モディファイヤ依存ループ」を回避しています。
  6. スケルトンの位置のロケータの回転Yを、IKゴール位置のロケータにリンクします。
    これでスケルトンの位置にあるロケータを回転させることで、アップベクターの位置を変更することができるようになります。

このあたりのリグの組み方がわかると、IKの「モディファイヤ依存ループ」に苦しまずに済むかも知れません。

コメントを残す

*