ゴマちゃんフロンティア

アザラシが大好きな山梨県産SEの開発日記です

【Blender】IK (Inverse Kinematics) の基本的な設定方法について

time 2017/07/16

Blender2.80でUIが大幅に変更されました。
本記事は2.79以前のバージョンを想定して書いているため、設定方法が異なっている可能性があります。
あらかじめご了承ください。

今回はBlenderのIK (Inverse Kinematics) に関するお話です。

「ターゲットとなるboneまでの各関節boneを自動的に回転してくれる機能」です。
IKなしでアニメーションを作る場合と比べ、ターゲットのboneのみを動かせば根本のboneまで回転させられるので、その分の手間がなくなります。
しかし上手く設定しないとあらぬ方向にグニャっとなってしまうので、難易度が高いです。
参考書を見たりネットで調べながら、使い物になるレベルの設定まではできたので、その手順についてご紹介します。

IKの設定

ターゲットボーンの作成

既存のArmatureにIKのターゲットとなるboneを追加します。

IKを設定するboneから分かりやすい方向に伸ばしておきます。この際、boneの親子関係は切っておきましょう。(Alt+P)
このあたりは割と適当で問題ないです。

Bone constraintの設定

ポーズモードにした状態で、プロパティウィンドウの「Bone constraints」タブ→「Add Bone Constraint」→「Inverse Kinematics」を追加します。

「Targaet」にArmatureを選択すると、下にBone欄が表示されます。ここに先程作成したターゲット用ボーンを設定しましょう。
「Chain Length」は「IKを設定したboneからルートとなる親boneまでの何番目のboneまで適用するか」を入力します。デフォルトは0で、この場合は無制限になるようです。自分はルートとなるboneが特殊な位置にある(体の下に独立)ので、2~3を指定しました。

自分の場合、各部位の先端 (手や足先に当たる部分) は手動で回転させたかったので、その1つ手前のboneに設定してあります。

boneごとのIK回転制限

IKを設定しても、ターゲットボーンの位置によってはあらぬ方向に曲がってしまいます。これを防ぐために、各boneに対してIK適用時の回転角度に制限をかけておきます。
プロパティウィンドウの「Bone」タブ→「Inverse Kinematics」から設定できます。

「Limit」にチェックを入れ、下限と上限の角度を常識的な範囲となるよう入力し直します。「常識的な範囲って何だよ」というお話ですが…体の中心に近いboneほど範囲を狭くすれば、ぶっ飛んだ曲がり方にはならないはずです。
また、「これ以上回転されるとモデルが崩れる!」というラインがある場合、そのラインを超えないように下限or上限を設定するのもいい感じです。このウサギの場合、中心寄りにあるboneが下を向くと襟部分の見栄えがよろしくないため、下限の制限を強くしています。

ちなみにここでいう「角度」は、boneの軸座標に依存します。プロパティウィンドウの「Data」タブ→Displayタブ→「Axis」にチェックを入れると、各boneの座標軸が表示されます。

もしboneの軸が気に入らない場合、エディットモードで選択後にCtrl+Nで再計算が行えます。可能であればアニメーション作成前に行った方が、既存のキーフレームへの影響が少なくなります。というか後から軸を修正すると確実に変になるので注意が必要です。

他にあるパラメータとして、「Stiffness(剛性)」はその角度への曲がりにくさを変えるものです。「範囲内で曲げてもいいけど、あんまり多くは回転させたくない」な場合に有用です。
「Stretch(伸縮)」はその名の通り、メッシュの伸縮による筋肉の表現等に使うようです。しかしなかなか難しいようなのでほとんど触っていません。いくつか詳しく乗っているサイトもあったので、気になる方は調べてみてください。

動作確認

設定後、実際にターゲットボーンを動かしてみましょう。

IKを設定したboneから中心までのboneがくねくね曲がればOKです。ターゲットボーンをあれこれ動かして制限が効いているかも確認しましょう。
このキャラはboneが少ないのであまり実感できませんが、より細かくboneを設定してある場合は目に見えて変わるはずです。

「Auto IK」機能について

IKの設定とはちょっと違うものですが、Blenderには「Auto IK」という機能もあります。
こちらはFK(forwardKinematics、IKなしの状態)で使える機能で、IKを設定しなくても「一時的にIKっぽい動きをさせられる」ものです。

Auto IKを使う場合、PoseModeに切り替えた上でツールシェルフの「Options」タブを選択し、「Auto IK」にチェックを入れます。

IKを入れたくないor入れるのが難しいモデルの場合、局所的なアニメーション作成の補助として使えます。
ただ前述のような回転の制限は掛けられないので、IKをしっかり設定した場合と比べて挙動が安定しません。その点からも補助的に使うのが向いています。

あとがき

そんなわけで、BlenderのIKを設定してみました。
「インバースキネマティクス」とか言うと難しそうで敬遠しがちですが、実際に使う分には難しくありません。もっとリアルな挙動を求めるのであれば大変になりそうですが。
「モーション作る度にboneの角度修正やってられない!」「アニメーションの度にモデルがぐにゃぐにゃに崩壊して困る!」という方は、一度IKと回転制限を試してみてはいかがでしょうか。

down

コメントする



ツイッター

このブログを書いている人

りべるん

りべるん

アザラシが大好きな山梨県産Webエンジニア。2019年3月よりフリーランスSEとして東京で活動中。自称「Web業界のアザラシ」 [詳細]