アニメーション事始め (5)
~第5回「動きの再利用」
前回の続きで、ミノタウロスを走らせてみましょう。
後半で、ミノタウロスの動きを骸骨のキャラクタに再利用してみることにします。
走るモーション
走る運動は歩く場合とは異なり、足が地面に接地しているとは限りません。
第四回で歩くモーションを行いましたので、ここから走るモーションに改造していくことにします。
歩くモーションのキーフレームを0フレーム目以外削除します。
走る場合は、歩くときよりも前かがみにし、足は大きく上げる、腕を大きく振るようにします。
右足を地面から少し離した前かがみなポーズを0フレーム目に指定。
ここから、各フレームを以下のようにポージングしていきました。
全7キーフレームで、はじめと最後は同じポーズ。6種類分をポージング。
30フレームで5フレームごとにキーフレームを配置しています。
ルートボーンのオフセットは上下移動に加えて、+Z方向に移動していってます。
シーケンス値 | 内容 | 軸足 | 地面に接する足 |
0 | 右足を少し上げる | 左 | 1 |
5 | 右足を大きく上げる | 左 | 1 |
10 | 右足着地 | 右 | 1 |
15 | 左足を少し上げる | 右 | 1 |
20 | 左足を大きく上げる | 右 | 1 |
25 | 左足着地 | 左 | 1 |
30 | 右足を少し上げる | 左 | 1 |
歩くときと同じで、地面に接地されている軸足については地面から動かさないようにして、もう片方の足を一歩前へ進めていきます。
2ループしたものを動画にしてみました (minotauros_bone_run_01.shd)。
シーン(ボーンとモーションのみ)のshdファイルについては、ページの最後でダウンロードできるようにしています。
今までの走るモーションは前進してますので、すべてのキーフレームのオフセットのZ値を0.0にして定位置でループ再生すると、以下のようになりました (minotauros_bone_run_02.shd)。
動画にして流して見ると、足を持ち上げる高さが低かったりして違和感が見える箇所もあるかと思います。
このあたりはモデリング同様に納得いくまで微調整になりますね。
モーションを他のキャラクタに移植する
待機、歩く、走る、のモーションパターンの作成はミノタウロスのキャラクタで行いました。
では、これを今度は骸骨に移植してみましょう。
でも、、、同じようなことをもう一回行うのは面倒、ですよね。
ということで、モーションデータを記録してそれを別キャラクタに貼り付けるスクリプト(Motion_Keyframe_Tools_MotionCopy.zip)を作りました。
これを解凍し、「Motion_Keyframe_Tools_MotionCopy」フォルダをShade 3Dのドキュメントディレクトリのwidgets内にコピーします。
Windows環境の場合は「C:\Users\ユーザ名\Documents\Shade 3D ver.15\widgets」、Mac環境の場合は「/Users/ユーザ名/Documents/Shade 3D ver.15/widgets」内に配置します。
その後、Shade 3Dを起動してください。
では、このスクリプトの使い方と役割について説明していきます。
Shade 3D ver.14以降のBasic/Standard/Professionalのいずれでも動作します。
モーションを記録する (Motion Keyframe Tools - MotionCopy スクリプト使用)
歩行や走るモーションを割り当てたシーンを用意します。
ここでは前述したミノタウロスの走るシーンを使います。0-30フレームで1ループ分の走るモーションが割り当てられています。
また、前進する場合は+Z方向に進めるようにしておいてください。
ブラウザよりルートボーン(ここではbone_Hips)を選択。
メインメニューの「スクリプト」-「Motion Keyframe Tools - MotionCopy」を選択。
モーション名に記録する名前と「開始/終了フレーム」で記録したいフレーム範囲を指定します。ここでは1ループ分の0と30を指定。
「モーションを記録」ボタンを押します。
モーションを割り当て (Motion Keyframe Tools - MotionCopy スクリプト使用)
記録されたモーションは、ボーンまたはボールジョイント名で割り当て先を識別します。
まずは、同じミノタウロスのシーンを使ってみます。モーションが割り当てられていないシーンでOKです。
ルートボーンをブラウザで選択し、モーションウィンドウで割り当てを開始したいシーケンス位置に移動。
メインメニューの「スクリプト」-「Motion Keyframe Tools - MotionCopy」でウィンドウを出し、
リストボックスで登録したモーション名を選択、「繰り返し回数」でモーションを何回繰り返すかを指定し「モーションを貼り付け」ボタンを押します。
モーションが割り当てられました。
この状態ではその場で前進せずに走ります。
別途、パスに沿って移動させることもできます。
ブラウザ上で、ルートボーンの前に開いた線形状を配置します。これが移動のパスになります。
シーケンスOff時(T-Pose)のルートボーン(ここではbone_Hips)の中心と同じ高さに配置することで、高さの基準位置となります。
パスとなる開いた線形状を配置後、ルートボーンを選択。
モーションウィンドウでモーションを割り当てるシーケンス位置に移動後、
メインメニューの「スクリプト」-「Motion Keyframe Tools - MotionCopy」でウィンドウを出し、
「パスに沿って移動」チェックボックスをOnにして「モーションを貼り付け」ボタンを押すと、パスに沿って移動するキーフレーム割り当てが行われます。
結果のモーションを動画にしてみました。
他のキャラクタにモーションを割り当て
ここでは同じhumanIKのボーン名のルールを割り当てた骸骨にミノタウロスのモーションを持ってきましょう。
割り当て手順はミノタウロスのときと同じです。
すでにミノタウロスのモーションは記録済みですのでこれを再利用します。
ルートボーンのbone_Hipsを選択。
「Motion Keyframe Tools - MotionCopy」ウィンドウを開き、「繰り返し回数」を指定して「モーションを貼り付け」ボタンを押します。
以下のようにモーションを割り当てることができました。
ミノタウロスとは身長が異なるため、地面にめり込んでます。
ルートボーンの高さよりも少し高めに開いた線形状を配置し、「Motion Keyframe Tools - MotionCopy」ウィンドウで「パスに沿って移動」をOnにしてもう一度モーションを割り当ててみてください。
また、ミノタウロスを想定したモーションを割り当てていたため、骸骨に動きを当てはめるといまいちこれじゃない感が出てしまいますね。
ここで、モーションはアセット化して再利用できるのですが、体格や性格にあわせて複数用意したほうがよさそう、というのが見えてきました。
もっと分かりやすい例として、第四回で作成したミノタウロスの歩行モーションを骸骨に移植してみます。
第四回でダウンロードできる「minotauros_bone_walking_01.shd」を開いて、「Motion Keyframe Tools - MotionCopy」ウィンドウで「開始/終了フレーム」を0と50として「モーションを記録」。
これを骸骨に適用したときのモーションの動画です。
記録した歩行モーションは0フレーム目と50フレーム目で少しポーズが違いますので、ここでは足を引きずったようになってます。
「Motion Keyframe Tools - MotionCopy」スクリプトを使用する場合は、記録するモーションパターンのはじめと最後のフレームは同じポーズとなるようにしておいてください。
さて、ミノタウロスのノッシノッシとした動きが骸骨に合わないのがわかりますね。
ですので、この場合はミノタウロスの動きを参考にせずにいったんクリアして、新たに骸骨としての動きを与えるようにしたほうがよいかもしれません。
人型キャラクタの場合は、骸骨とモーションを共有してもそれほど違和感がないと思います。
でも、生きているのとそうでないのとでタイプが異なるので、ちょっとした微調整は発生するかと思われますが。
なお、骸骨にあった歩行モーションを与えたものは以下のようになります(skeleton_bone_walk.shd)。
骸骨用に動きを調整しました。
ということで、今回は走るモーションについて、モーションの再利用と補助スクリプト、キャラクタによってモーションは複数用意する必要がある、ということを説明しました。
ここで作成したモーションについてはダウンロード(anim_5_minotauros_skeleton_motions.zip)できるようにしました。
ただし、ミノタウロス/骸骨のモデリングデータはつけておらず、ボーンとモーションだけになります。
minotauros_bone_run_01.shd/skeleton_bone_walk.shdについては、ミノタウロスの走るモーション/骸骨の歩くモーション、となっており、今回ダウンロードできるスクリプトに登録できるデータとして利用できます。
ぜひ、独自のモーションパターンの作成とアニメーションシーン作成にお役立てくださいませ。
ここまで進めると、なぜhumanIKのボーン構造にこだわるか、というのが見えてきますね。
時間のかかる作業(ボーン構造の割り当てやモーション作成)は極力再利用して作業時間を短縮しましょう、というのが今回の連載の大きなテーマの1つであります。
さて、次回はもっと細かい動きについて説明していくことにします。まだまだ、まだまだやることがありますよ。
面倒な手順に出くわした場合は極力スクリプトを紹介する形をとり、壁を乗り越えていくことにしましょう。
それでは、次回もお楽しみに。
文:ft-lab
この記事へのご意見・ご感想などはこちらで受け付けております。