IKコンストレイントって何?
どうもみなさん、こんにちは。
今回はSpineの機能の1つであるコンストレイント機能、その中のIKと呼ばれるものについて解説していきたいと思います。
コンストレイントとは
まず、CGアニメーションに触れるのが初めての方などのために、そもそもコンストレイントとは何かについて話していきます。
コンストレイントは日本語で制約、制限という意味を持つ言葉です。
CGアニメーションにおけるその役割もその意味の通り、動きに制約をつけるための機能となります。
簡単に言うと、特定のボーンを動かした際にそれに連動させて動く、指定したパス(線)の上をなぞるように動く、などといった制約が該当します。
IKコンストレイント
コンストレイントの中でもよく使用されるものとして、特定のボーンに連動させて動かすIK(インバースキネマティクス)と呼ばれるものがあります。
例えば、通常、足の動きをアニメーションさせる際は、その根本である太もものボーンを動かし、次に膝、そして足首と動かしていきます。
※ちなみに、このような根元から先に向かって動かす方法をFK(フォワードキネマティクス)といいます。
しかし、これではアニメーションさせる際に片足を動かすだけでも常に3つのボーンを調整していかなければならず、手間がかかってしまいます。
そこでIKを使用します。
IKを設定するとどのような働きをするかについては、こちらの画像を見るとわかりやすいでしょう。
このように、ターゲットと呼ばれる制御用のボーンを動かすことで、指定した範囲(A,B)の挙動を自動で計算してくれるというものです。
※正確にはIK範囲の開始位置とターゲット位置から計算されるので、後述の通り【A】の位置を動かすことでも作用します。
この方法でアニメーションさせると、FKでは3つのボーンをそれぞれ直接制御しなければならかったのに対し、開始位置に当たる【A】とターゲットボーンの2つ、あるいはどちらか片方のみで制御できるようになります。
これを活用することでアニメーション制作の手間をぐっと減らすことができます。
※ただし向き不向きも当然ありますので、作りたい動きに合わせてFKとIKを選択するのが重要です。
また、人型キャラクターをアニメーションさせる際、よく足の制御に利用されることが多いIKですが、他にも腕の制御に使われることもあります。
例を挙げると、手に持ったペンを動かすことで前腕や上腕も併せて動くようにするといった使い方がありますし、特定の箇所に手をついた状態で体を動かすといった動きをさせる際にも有用でしょう。
SpineにおけるIKの使用方法
まず、最初にIKを設定するためのスケルトンを用意しておきましょう。
下画像のように人の下半身を想定した構造で組んでおきます。
※画像では説明するにあたって分かりやすいよう色を付けておりますが、こちらはIKの使用方法自体に関係しているわけではありませんので、気にせずともよいです。
では、さっそく右足にIKを設定していきましょう。
手順はとても簡単で、
①まずは親と子となっているボーンを2つ選択します。
今回はIK親:赤ボーンとIK子:青ボーンを選択します。
②次にボーンを選択した状態のまま、ツリータブ下部にある新規ボタンをクリックし、続けてIKコンストレイントを選びクリックしましょう。
③ターゲット選択状態になりますので、ここでターゲットボーンを選択するか、作成します。
既存のボーンを選択しターゲットボーンとすることもできますが、選択可能なボーンがない場所をクリックすることで新規にターゲットボーンを作成することも可能です。
今回は足首部分をクリックして新規で作成しましょう。
④名前を入力して決定すると、入力した名前でオレンジ色のターゲットボーン(画像赤枠)と、コンストレイント(画像青枠)が作成されているかと思います。
⑤あとは作成されたコンストレイントを選択し、ツリータブ下部からオプション、ソフトネス、ミックスをそれぞれ設定していきます。
※オプション他項目については後述します。
以上の工程でIKの設定は終わりです。
あとはターゲットボーンを動かしたり、赤ボーンの親である操作ボーンを動かすだけで、膝が曲がったりといった足の動作が行えるかと思います。
おまけですが、あえて親ボーンの1つのみを選択した状態でIKを設定(①)したり、IKをつなげる形での設定(②)も可能です。
オプション設定
最後にIK設定のオプション項目について説明しておきます。
まずチェックボックスによる項目が4つあります。
「正」とだけ書かれているチェックボックス、こちらは子ボーンが曲がる際の方向を正の方向にするか負の方向にするかを選択できます。
ひざのように曲がる方向が決まっており、かつ向きが違うなどといった際はこちらで対応することもできるでしょう。
※この項目は子のボーンを設定した場合のみ表示されます。
「ストレッチ」についてはターゲットの位置に合わせてボーンをスケーリングするか否かを設定できます。
初期のチェックが外れた状態では、親と子の長さを足した範囲の外にターゲットボーン移動すると、子の先端部分から離れていきます。
こちらチェックを入れると、範囲外に移動した場合でも子の先端はターゲットにくっついたままとなり、ターゲットの位置に合わせて親と子のボーンがそれぞれ拡大されるようになります。
「圧縮」は簡単にいうとストレッチとは逆の効果になります。ターゲットの位置が近すぎる場合、位置に合わせて親ボーンを縮小します。
※こちらは子のボーンが設定されていない場合のみ表示されます。
子のボーンが設定されていない場合、上記に加えて「統一」というチェックボックスも表示されます。
こちらを入れると、圧縮やストレッチによるスケーリングの際にローカルX軸とローカルY軸の両方でスケーリングされるようになります。
※デフォルトではローカルX軸方向でのみスケーリングされます。
また、バーでの調整が可能な項目として、
「ソフトネス」と「ミックス」の2つがあります。
「ソフトネス」は親と子のボーンがまっすぐになる際の挙動が柔らかくなるように、挙動を遅らせるようにする機能になります。
「ミックス」はIKの適用(影響)率を0から100で調整するものです。0にするとIKがオフになります。
これらのオプション項目はすべてキーフレームでの制御が可能なため、アニメーション内で適宜設定を調整して制作することが可能です。
今回の記事はここまでになります!
次回はトランスフォーム・コンストレイントについてお話ししていく予定です。
─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─
オンライン学習ツール「Udemy」でSpine初心者卒業カリキュラムが販売中です。
Spine未経験の人でも分かりやすく、基本操作からアニメーション制作方法まで学べます。
SDキャラクターの素材を練習用に用意しておりますので、手を動かして実践しながら
学んでいくことができます!
もっと詳しく、動画でよりわかりやすいSpine講座を見たい方はコチラ
─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─
この記事が気に入ったらサポートをしてみませんか?