目次
IKを利用した歩行アニメーションについて
IK(インバース・キネマティクス)を利用すると、通常のFK(フォーワード・キネマティクス)では作成が難しい、足の接地に対応した歩行アニメーションを簡単に作成することができます。今回は、かかとの上げ下げにも対応した本格的な歩行アニメーションを、「脚が開いた姿勢」、「脚が閉じた姿勢」の2つの姿勢のみを用いて作成します。
FKを使用した基本的なアニメーションの作成方法についてはチュートリアルの「2-3 ボーン アニメーション」を、IKを使用した基本的なアニメーションの作成方法ついては「2-4 IKハンドル アニメーション」を参照してください。
モデルのIKの構造
モデル ファイルとして「mikoto_ik_walk.toy」を開きます。このモデルでは、キャラクター本体にボーンやIKハンドルがセットされ、それらの親としてヌル オブジェクト「Skeleton」が配置されています。また、画面上の位置を把握しやすくするため、X、Y、Z方向にグリッドが表示されています。
モデルは左右対称の構造になっており、左脚については、「LeftAnkleHandle」(「脚の付け根」→「かかと」)、「LeftBallHandle」(「かかと」→「指の付け根」)、「LeftToeHandle」(「指の付け根」→「指先」)の3個のIKハンドルが連続的にセットされています。
これらのIKハンドルを直接選択・操作するのは面倒なため、足首全体の操作用の「LeftFootBox」と、かかとの上げ下げ用の「LeftAnkleBox」トが配置されています。これらは青色のマテリアルがセットされた通常のメッシュ オブジェクトであり、「ポリライン表示」に設定されています。
下図のように、「LeftFootBox」(足首全体の操作用メッシュ)の子として、「LeftAnkleBox」(かかとの上げ下げ用メッシュ)、「LeftBallHandle」(「かかと」→「指の付け根」IK)、「LeftToeHandle」(「指の付け根」→「指先」IK)が配置されています。さらに、「LeftAnkleBox」(かかとの上げ下げ用メッシュ)の子として「LeftAnkleHandle」(「脚の付け根」→「かかと」IK)が配置されています。
この親子構造のため、「LeftFootBox」(足首全体の操作用メッシュ)を移動・回転させれば足首全体を操作することができ、
「LeftAnkleBox」(かかとの上げ下げ用メッシュ)を回転させればかかとの上げ下げのみを操作することができます。
「脚が開いた姿勢」の作成
アニメーション全体の長さを「40」フレームとして、最初のフレームの姿勢と最後のフレームの姿勢を一致させたいので、タイムライン バーの「最後のフレーム」を「41」にしておきます。
タイムライン バーをクリックして現在のフレームを「1」にします。
まず、ルート ボーンの前後位置は原点上にあった方が操作しやすいので、「Waist」ジョイントを選択して、オブジェクト ウィンドウ(Ctrl+Q)の「移動」のZ値を「0」にしておきます。
オブジェクトの移動には「移動 ツール」(T)、
回転には「回転 ツール」(R)を使って各オブジェクトの姿勢を操作していきます。
側面表示(F3)にして、「脚が開いた姿勢」を作成します。「LeftFootBox」(左足首)を前方に移動し、すねと直角の向きにして接地直前の姿勢にします。
「RightFootBox」(右足首)は接地した後方の位置に移動し、「RightAnkleBox」(かかと)を回転して持ち上げます。
「Waist」ジョイントを上下に移動することで、
左ひざがほぼ伸び、右ひざは少し曲がった姿勢に調整します。
正面表示(F2)では、以下のような姿勢になります。
これで、「脚が開いた姿勢」は完成しました。SHIFTキーを使って「Waist」、「LeftFootBox」、「LeftAnkleBox」、「RightFootBox」、「RightAnkleBox」を選択し、
キーセット ボタンの▼の部分をクリックし(Alt+Ins)、
作成するアニメーション キーの種類として、「回転X」、「回転Y」、「回転Z」、「移動X」、「移動Y」、「移動Z」がONになっていることを確認し、
キーセット ボタンをクリック(Ins)してアニメーション キーをセットします。
アニメーション キーが作成されると、デフォルトで以下のグラフ ウィンドウが表示されます。(表示する必要がない場合は、「ツール」メニューの「オプション」ダイアログの「全般」タブにある、「アニメーション キーの更新時にグラフ ウィンドウを表示」をOFFにしてください。)
現在と同じ姿勢をアニメーションの最後の「41」フレームにもセットしたいので、タイムライン バーの「41」フレームをクリックして、
キーセット ボタンをクリック(Ins)してアニメーション キーをセットします。
次に、現在とは左右対称(脚の前後が逆)の姿勢をアニメーションの中間の「21」フレームにセットしたいので、タイムライン バーの「21」フレームをクリックします。
キーをセットするオブジェクトが選択されている状態で、「オブジェクト」メニューの「ミラー ポーズ」コマンドをクリックすると、以下の「ミラー ポーズ」ダイアログが表示されます。選択されているオブジェクトは、モデルのルートにある「Skeleton」オブジェクトのX軸方向について対称な姿勢になっているので、「対称の基準となる親オブジェクト」で「Skeleton」を選択、「対称方向」で「X方向」を選択し、「OK」ボタンをクリックします。
すると、以下のように選択されているオブジェクトの姿勢がミラー化されました。
ここで、キーセット ボタンをクリック(Ins)してアニメーション キーをセットします。
この状態では、左右の「脚が開いた姿勢」しかありませんが、試しにアニメーションを再生(Alt+Space/Ctrl+Space)してみると、
まだ足首の上下動がないので、すり足のような歩き方になっています。
(mikoto_ik_walk1.toy)
Get the Flash Player to see this player.
「脚が閉じた姿勢」の作成
次に、「脚が閉じた姿勢」を作成します。左右の「脚が開いた姿勢」の中間である「11」フレームに作成したいので、タイムライン バーの「11」フレームをクリックします。
前のキー フレームの姿勢を参考にするために、ゴーストを利用します。キャラクター本体である「Body」オブジェクトを選択してオブジェクト ウィンドウを表示(Ctrl+Q)し、「メッシュ」タブの「ゴーストA」をONにします。このゴーストはデフォルトで青色になってます。
さらにシーン ウィンドウを表示し、「ゴーストA」をONにします。「ゴーストA」のキー オフセットはデフォルトで「-1」になっているので、1個手前のキー フレームのゴーストが有効になります。
以下のように、1個手前のキー フレームの「Body」オブジェクトのゴーストが青色で表示されます。
また、IKハンドルの表示が重なって見にくいので、「表示」メニューの「IKハンドル」をOFFにします。
側面表示(F3)にして、「脚が閉じた姿勢」を作成します。「LeftFootBox」(左足首)を体の少し後方に移動し、接地した状態にします。
反対方向の側面表示(SHIFT+F3)にして、「RightFootBox」(右足首)を地面から少し浮いた状態にして、「RightAnkleBox」(かかと)は足首と平行に戻します。
「Waist」ジョイントは少し上に移動し、
左ひざが少し曲がり、右ひざは前に出て大きく曲がった姿勢に調整します。
これで、「脚が閉じた姿勢」は完成しました。SHIFTキーを使って「Waist」、「LeftFootBox」、「LeftAnkleBox」、「RightFootBox」、「RightAnkleBox」を選択し、
キーセット ボタンをクリック(Ins)してアニメーション キーをセットします。
次に、現在とは左右対称(脚の前後が逆)の姿勢を、左右の「脚が開いた姿勢」の次の中間である「31」フレームに作成します。現在の姿勢を維持したままフレーム番号のみを進めるため、SHIFTキーを押した状態でタイムライン バーの「31」フレームをクリックします。
先ほどと同様に、キーをセットするオブジェクトが選択されている状態で、「オブジェクト」メニューの「ミラー ポーズ」コマンドをクリックしてダイアログを表示し、「対称の基準となる親オブジェクト」で「Skeleton」を選択、「対称方向」で「X方向」を選択し、「OK」ボタンをクリックします。
すると、以下のように選択されているオブジェクトの姿勢がミラー化されましたので、
キーセット ボタンをクリック(Ins)してアニメーション キーをセットします。
アニメーションを再生(Alt+Space/Ctrl+Space)してみると、
足の接地やかかとの上げ下げに対応した歩行モーションとなっています。
(mikoto_ik_walk2.toy)
Get the Flash Player to see this player.
その他の部位のアニメーション キーの追加
両脚のモーションは出来上がりましたので、次にその他の部位のアニメーション キーを以下の「1」、「11」、「21」、「31」、「41」フレーム上に追加していきます。これまでと同様に、ポージングが必要なのは「脚が開いた姿勢」、「脚が閉じた姿勢」であり、左右対称の姿勢については「ミラー ポーズ」コマンドを活用します。
今回は、各ジョイントの回転の補間方法として「オイラー角の補間」を使用しますので、回転キーをセットする各ジョイントについて、オブジェクト ウィンドウの「全般」タブの「回転を球面線形補間する」をOFFにしておきます。回転の補間方法については、トピックの「11 アニメーションにおける回転の補間」を参照してください。
また、「回転ツール」(R)を使用するので、マウス ドラッグでボーンが直接回転しないように、ツール バーの「直接回転」をOFFにしておきます。
まず、「脚が開いた姿勢」では、両肩・両ひじのジョイントを回転して以下の姿勢にします。
姿勢が設定できたら、SHIFTキーを使って「LeftShoulder」、「LeftElbow」、「RightShoulder」、「RightElbow」を選択し、
キーセット ボタンの▼の部分をクリックし(Alt+Ins)、
作成するアニメーション キーの種類として、「回転X」、「回転Y」、「回転Z」のみをONにして、
キーセット ボタンをクリック(Ins)してアニメーション キーをセットします。
同様に、「脚が閉じた姿勢」では以下の姿勢で回転キーをセットします。これまでと同様に、左右対称の姿勢については「ミラー ポーズ」コマンドを活用しながら、両腕のアニメーション キーを追加していきます。
また、腹部の「Abdomen」ジョイントにY軸方向の回転キーを追加することで、腰の振りを追加します。(腰の振りによって両脚の動く範囲が大きくなって両ひざが曲がりすぎる場合、「Waist」ジョイントを少し上げて調整します。)
胸部の「Chest」ジョイントにもY軸方向の回転キーを追加し、肩の振りを追加します。
首の「Neck」ジョイントには、両肩の振りとは逆方向のY軸方向の回転キーを追加して、頭が揺れないようにします。
アニメーションを再生(Alt+Space/Ctrl+Space)してみると、
両腕、腰、肩の振りが追加されました。これで、「脚が開いた姿勢」、「脚が閉じた姿勢」の2つの姿勢のみを用いた歩行アニメーションが出来上がりました。
(mikoto_ik_walk3.toy)
Get the Flash Player to see this player.
アニメーションのループ対応
歩行アニメーションは、CGやゲームにおいてループ再生される場合が多いと思われます。その場合、最初と最後のキー フレームのモーションが滑らかにつながっている必要があります。
上記で作成した歩行アニメーションでは、最初の「1」フレームと最後の「41」フレームのキーの値は一致していますが、スプライン補間の最初と最後であるため、その傾きは一致していません。例えば、「LeftFootBox」(足首全体の操作用メッシュ)のZ軸方向の移動のアニメーション キーは以下のようになっており、「1」フレームと「41」フレーム(黄色線で囲まれた箇所)のキーの値は一致していますが、傾き(つまり速度)は一致していません。
グラフ ウィンドウ上でこれらのキー フレームの傾きを個別に修正してもよいですが、今回は、アニメーションの再生範囲外の前後にキー フレームを追加して対応します。歩行アニメーションの再生範囲外の「-11」フレームと「51」フレームにもキー フレームを追加することで、以下のように「1」フレームと「41」フレームの傾きを一致させました。
アニメーションを再生(Alt+Space/Ctrl+Space)してみると、
最初の「1」フレームと最後の「41」フレームが滑らかにつながってループ再生されています。
(mikoto_ik_walk4.toy)
Get the Flash Player to see this player.