トップ > 知っておきたい機能 > アニメーションとリギング >
インバースキネマティクス(IK)で骨格を簡単に動かす

インバースキネマティクス(IK)で関節を末端から曲げる

この記事では『インバースキネマティクス』について解説します。 インバースキネマティクスは日本語では『逆運動学』と訳され、通常、"Inverse Kinematics" を略して "IK" と呼びます

『逆運動学』と聞くと難しそうですが、簡単に言えば骨格を楽に動かすための技術です。 3DCGアニメーションの世界だけでなく、ロボットの分野やゲームの分野でも利用される技術です。

インバースキネマティクスの概要

インバースキネマティクスでは『起点のボーン』に『ターゲット』を設定します。 例えばボールを掴むアニメーションを作るなら、『起点のボーン』は手のボーンであり、『ターゲット』はボールとなります。

それらを設定すると、手のボーンがボールにたどり着くように関節が自動的に曲げられます。 曲げられるのは手のボーン(手首)だけではなく、前腕のボーン(肘)や上腕のボーン(肩)も曲げられます。 なお、どの関節まで曲げるかは設定次第です。

関節が曲げられる順序は末端からです。 まずは手首が曲げられ、それでもボールに届かなければ、肘が曲げられます。 それでも届かなければさらに肩が曲げられる、という具合です。 末端のボーンから順に曲げられるため、『逆運動学』と呼ばれます。

インバースキネマティクスの例

インバースキネマティクスの例を紹介します。 以下の例で使用するのは、アーマチュアが埋め込まれたクマのメッシュと球体です。

1. クマのメッシュと球体
1. クマのメッシュと球体

上図のようにアーマチュアが埋め込まれたクマのメッシュと球体があるとします。 このような状況でクマに球体を掴ませたい場合、どうすればいいでしょうか。

まずは、インバースキネマティクスを使用しない場合を考えてみます。 つまり、本ウェブサイトで今まで解説した範囲でやってみよう、ということです。 その場合、どう動かすでしょうか。

2. 肩を少し上げる
2. 肩を少し上げる

上図のように肩のボーンを曲げ、肩を少し上げることになるでしょう。 これで少しだけ手が球体に近づきました。 次は上腕を動かしましょう。

3. 上腕を上げる
3. 上腕を上げる

上図のように上腕を上げます。 つまり、肩関節を曲げます。 さらに手が球体に近づきました。

最後に前腕を動かします

4. 前腕を上げる
4. 前腕を上げる

上図のように前腕を上げます。 つまり、肘を曲げます。 うーん、球体には手が届きませんでした

肩のボーンをもう少し大きく曲げていれば届いたかもしれません。 また上腕のボーンも、もっと上げておけばよかったですね。

このようにインバースキネマティクスを利用しない場合は、各関節を手作業で動かす必要があります。 しかも、今回のように一度の操作で手が届かなかった場合は、何度も調整しなければならなりません。


ここからは、インバースキネマティクスを利用した場合の動きを紹介します。 なお、インバースキネマティクスはすでに設定されているものとします。

手のボーンが起点のボーンで、球体がターゲットです。 つまり、手のボーンが球体に向かうようにインバースキネマティクスを設定しています。

5. 手が球体に届いている
5. 手が球体に届いている

上図のように手が球体に届いています。 肩のボーン・上腕のボーン・前腕のボーン・手のボーンの4本のボーンが一直線に球体に向かっています。 このように、インバースキネマティクスを設定することで関節が自動的に曲がります

ではここで球体を下げてみましょう。

6. 球体を下げると腕も下がる
6. 球体を下げると腕も下がる

上図のように球体を下げると腕も下がります。 手のボーンが球体に向かうように設定していますので当然の結果です。

では次に、球体を体に近づけてみましょう

7. 球体を体に近づけるとボーンが曲がる
7. 球体を体に近づけるとボーンが曲がる

上図のように球体を体に近づけるとボーンが曲がります。 手のボーンがターゲットである球体の中心に届いているのがわかります。

このように、インバースキネマティクスを利用することで関節を楽に曲げることができます

インバースキネマティクスを使ってみよう

では、実際にインバースキネマティクスを利用してみましょう。 なお、今回は脚を動かすためのインバースキネマティクスについて紹介します。

まずは、以下のファイルをダウンロードしてください。 本ウェブサイトで用意したクマのメッシュとアーマチュアを含むファイルです。

ダウンロードした "bearwithrig.zip" を展開すると "bearwithrig.blend" というファイルが作成されます。 トップバーのプルダウンメニューの"File" -> "Open..."を実行して "bearwithrig.blend" を開いてください。

  
bearwithrig.blendには、クマのメッシュとアーマチュアが含まれます。 クマのメッシュとアーマチュアの間には親子関係は構築されていません。 互いに独立したオブジェクトです。

最初に、クマのメッシュとアーマチュアの間にアーマチュア変形の親子関係を構築しましょう。 まずはクマのメッシュから選択します。

1. オブジェクトモードでクマのメッシュを選択する
1. オブジェクトモードでクマのメッシュを選択する

上図のようにオブジェクトモードでクマのメッシュを選択します。

次に、アーマチュアを追加選択します

2. アーマチュアを追加選択する
2. アーマチュアを追加選択する

上図のようにアーマチュアを追加選択します。

これでアーマチュア変形の親子関係を構築する準備ができました。 キーボードのCTRL + Pを押します

3. With Automatic Weightsを実行
3. With Automatic Weightsを実行

上図のように "Set Parent To" というタイトルのメニューが表示されますので、"With Automatic Weights" を実行します。 これでアーマチュア変形の親子関係が構築されました。


ここからは制御用ボーンを追加する作業に入ります。 制御用ボーンとは、メッシュを曲げるためではなく他のボーンを制御するために使うボーンのことです。

先ほどの球体を掴む例で言えば、球体にあたるのが制御用ボーンです。 つまり、インバースキネマティクスの設定で『ターゲット』となるボーンのことです

では、制御用ボーンの追加作業を始めましょう。 まずは、アーマチュアを選択してください。

4. アーマチュアを選択する
4. アーマチュアを選択する

上図のようにアーマチュアを選択します。 では、この状態でエディットモードに切り替えましょう。 キーボードのTABキーを押します

5. エディットモードに切り替わる
5. エディットモードに切り替わる

上図のようにエディットモードに切り替わり、ボーンの追加や削除が行える状態になりました

制御用ボーンを追加する前に、アーマチュアの編集に関する設定を変更しておきます。 ボーンが左右対称で作成されるようにするための設定 "X-Axis Mirror" をオフにしておきます

6. [X-Axis Mirror]ボタンをクリックしてオフにする
6. [X-Axis Mirror]ボタンをクリックしてオフにする

上図のように3D Viewportのヘッダにある[X-Axis Mirror]ボタンをクリックしてオフにします

  
この[X-Axis Mirror]ボタンは、サイドバーのToolタブのOptionsパネルにあるX-Axis Mirrorチェックボックスと連動しています。 また、ボタンの右にある "Option" からも設定を変更できます。

では次に、体の右側(画面向かって左側)のボーンを非表示にします。 その方が側面図で作業しやすいからです。

7. 右側のボーンを選択する
7. 右側のボーンを選択する

上図のように右側のボーンを選択します。

では選択中のボーンを非表示にしましょう。 キーボードの H を押します

8.右側のボーンが非表示になる
8.右側のボーンが非表示になる

上図のように右側のボーンが非表示になります。

では、作業しやすいように視点を側面図の位置へ移動します。 キーボードのテンキーの 3 を押します

9. 視点が側面図の位置へ移動する
9. 視点が側面図の位置へ移動する

上図のように視点が側面図の位置へ移動します。

まだ制御用ボーンは追加しません。 その前に確認しなければならないことがあります。 大腿と下腿のボーンが一直線ではないことを確認します

10. 大腿と下腿のボーンが一直線ではないことを確認する
10. 大腿と下腿のボーンが一直線ではないことを確認する

上図のように大腿と下腿のボーンが一直線ではないことを確認します。 つまり、膝が少し前に出ている必要があります。 一直線になっている場合は、膝を少し前に出して補正してください。

  
大腿と下腿のボーンが一直線になっていると、インバースキネマティクスを設定しても膝が曲がりません。

次の記事へ

では、長くなりましたので、ここで一区切りします。 解説の続きは次の記事を参照ください

ページの先頭へ
 

まとめ

インバースキネマティクス(IK:Inverse Kinematics)は関節を簡単に曲げるための技術で、日本語では『逆運動学』と訳されます。 インバースキネマティクスを設定すると、『起点のボーン』が『ターゲット』に届くように関節が曲げられます。 末端から順に曲げられるため『逆運動学』と呼ばれます。

インバースキネマティクスを利用する場合は、関節を中心から少し移動させる必要があります。 関節を構成する2つのボーンが一直線になっていると、突っ張って関節が曲がらなくなるためです。

ページの先頭へ