今回は Null を使って基本的な IK を組んでみました

ボーン自体は IK を組まなくても動かすことはできます

アニメーションさせることもできる

ただ、IK の設定があるのと無いとでは、モデルの扱いやすさが違います

ある位置に手を置きたい・足を固定したいと考えたとき、これが直感的にできるので便利

そこで LightWave での IK の組み方を調べると、とりあえず古いながらも出てきます

じゃっく

意外と情報が残っていて、ちょっとうれしくなる自分

しかしながら、日本語の解説がほぼありません

こればっかりは、もうしょうがない

とりあえず公式が出してくれている動画をぼーっと視聴

ボーンの構成が自分が作っているものと違っていましたが、とりあえず基本的な IK は組むことができました

今回はその作り方をメモっていきます

準備

テスト用に組んだボーンを用意

まずは準備から

画像のようにモデラーでボーンを組んで、レイアウトで親子付けをしました

ボーン構造は MMD のものに寄せています

レイアウトで親子付けをすると回転軸が変わるので、全てのボーンに対して「中心点回転記録」を実行

回転角度を初期化します

バージョン 2024 以降なら、リグツールボックス内の RPR で一括実行ができるようになったので、ちょっと楽になりました

手順

ここから実際に IK を組んでいくので、手順を

このようになっています

最初に IK コントローラーとして扱う Null を用意して、足首に貼り付けます

太ももとひざに IK を設定し、足首に IK コントローラーを設定

あとはひざがひっくり返らないように角度制限をかければ完成、という感じになっています

今回は単純な構造にしているので、簡単なはずです

IK コントローラーを用意する

STEP1
Null オブジェクトを作成する

最初にIK コントローラー用の Null オブジェクトを作ります

ショートカットは Ctrl+N

編集から形だとかサイズ・色を決めて、OK で作成

とりあえず形状はボックス型にして、名前を leg_IK_Null にしました

STEP2
Null を足首に設置

このコントローラーを足首の関節に設置するわけですが、移動中に Alt を押しながら足首ボーンに近づければ、ペトッとくっついてくれます

これで設置完了です

各ボーンに IK を設定する

STEP1
太ももに IK を設定する

太もものボーンを選択して、IK を設定していきます

設定はこんな感じ

  • ヘディング制御:IK
  • ピッチ制御:IK
  • バンク制御:キーフレーム

バンク制御だけ、デフォルトの「キーフレーム」にしています

ちなみに全ての軸に IK を適用させた場合は、 MMD の IK の挙動に近い感じになりました

STEP2
ひざに IK を設定する

ひざにも IK を適用させます

  • ヘディング制御:キーフレーム
  • ピッチ制御:IK
  • バンク制御:キーフレーム

ここはピッチ回転(緑色の輪っか)のみの影響で十分なので、一つだけです

IK コントローラーを付ける

STEP1
ゴールオブジェクトを設定する

次にゴールオブジェクトを設定します

IK コントローラーです

最初この「ゴールオブジェクト」が一体何なのか、本当に意味不明でした

じゃっく

なんなんゴールオブジェクトって???

やってて分かったのですが、言い換えるならこれは

ゴールオブジェクト= IK が伝わる末端部分・終点部分

です

なので、この設定をしていないとボーンに IK を適用していても、何も反応ありません

IK を設定したボーンから見たら

じゃっく

どこが IK の終点なん???

といった感じなんだと思います

そんなわけで、ゴールオブジェクトは leg_IK_Null に設定

設定すると画像のように線がぴょんと出てきます

よく分からない場所から伸びていますが、これは後で直します

STEP2
ゴールオブジェクトを吸着させる

IK コントローラーを動かすと、とりあえず IK は機能していることが分かります

ただ、移動させすぎるとびょ~んと伸びちゃって不格好

その場合は「ゴールを吸着」を有効にすれば、本来あるべき場所に留まるようになります

IK の開始地点を変更する

次は IK の開始地点を変更

これは太ももの親である下半身( lower_body )の、「子孫の IK 効果を及ぼさない」を有効にすれば OK

ただ、これも単語が意味不明過ぎて、初見じゃ???過ぎて分かりませんでした

じゃっく

これじゃ 分からんって

これはたぶんですが、選択しているボーンを親としてみた場合、子ボーンからやってくる IK の影響を受けない・受け取らないという意味だと思います

なので、もう少しかみ砕いて言うと

「子孫の IK 効果を及ぼさない」=このボーンの先から IK の効果が入るよ

という考えになりそうです

じゃっく

もっと分かりやすくしてくださいな・・・

ひざのフリップを修正する

STEP1
フリップする状況を確認する

とりあえず IK の大まかな設定ができなので、軽く動作確認

すると、ひざがフリップフリップ

じゃっく

あぁ~⤵

あらぬ方向に曲がります

STEP2
ひざに角度制限を付ける

これは角度制限を使えば抑えることができます

ひざのモーションオプションを開いて、ピッチ制御を有効にして角度範囲を決めます

とりあえず

  • 最少:0°
  • 最大:170°

という設定にしました

STEP3
直ったかもう一度確認する

もう一度 IK コントローラーを動かして確認

OK 大丈夫そう

動作確認

最後にあちこち動かして、最終的な動作確認をします

たぶん大丈夫です

変なフリップもないですし、プルプルもしていません

IK の設定に問題がなさそうなら、後は触れたくないボーンにカギを付けたり、コントローラーに色を付けたりして保存します

これで基本的な IK の設定が完了しました

じゃっく

また一つ新しいことを覚えたぞ

まとめ

それでは今回のまとめ

まとめ
  • Null オブジェクトを使って IK をコントロール
  • 「ゴールオブジェクト」は IK が伝わる末端部分
  • 「子孫の IK 効果を及ぼさない」は以降のボーンから IK を開始

今回は Null オブジェクトを使って、基本的な IK を組んでみました

作っているモデルのボーン構造が参考と違うので少し心配でしたが、何も問題なく普通に組むことができてよかったです

IK と聞くと複雑なイメージがありました

実際は

  • IK を適用させるボーンを指定
  • IK を開始させるボーンを指定
  • IK を終了させるモノを指定

の三つの要素のみで成っているようで、想定よりも簡単だったように思えます

基本太ももとひざに IK を入れて、コントローラーを足首に置けば問題無し

代わりに問題だったのが、機能名称

ゴールとか子孫とか・・・あれは分からんのよ

何とかならなかったのかな~と、考えてしまう今日この頃

というわけで、お疲れさまでした~

参考資料

使用ツール

3DCG
  • LightWave3D
動画
  • Bandicam
  • ScreenToGif