私は身体を動かすのが大好きなので、
UnityやBlenderでは、
特に、キャラクターにモーションをつけて
踊らせたり、闘わせたりすることに、楽しみを感じます。
そんな私が実践する、
モーション作成の便利なテクニック、を紹介したいと思います。
基礎知識として...
キャラクターのモーションを作成する方法は、
Rig(ボーン)を作成し、キーフレームごとにボーンの情報(位置や回転)を保存していくことが基本です。
しかし、それはめちゃくちゃ大変です。。。
なぜなら、[ボーンの数]×[キーフレームの数]の調整が必要になるからです。
首や背骨のない真ん丸な「星のカー〇ィ」でさえ、
胴+両手+両足の5つのボーンがあります。
そして、モーションデータは、
だいたい30fps(1秒の動きに30のフレーム数)くらいで作るので、
1秒の動きだけでも、
5×30で、150の情報を考えなければなりません。
※実際は、全フレームに入力せず、省略したりしますが、
大変であるため、あえて大げさに言ってます
長時間の人体骨格が動くシーンを作るだけで、精神が尽き果てます。。。^^;
おそらく、ゼロから作成している人は、
よほどクリエイティブな動きをするもの以外は、
少ないのではないかと思います。
一般に、モーション作成を短縮させる方法(またはツール)は、次のモノが挙げられます。
・IKボーンを導入する
・モーションキャプチャー機器で作成する(カメラや専用機器によるセンサー検知)
・既存のモーションデータを改変する
IK(インバースキネマティクス)とは、
先端のボーンを動かせば、隣接するボーンも連動するように動く設定のことで、
いくつかのボーンを調整する手間を省くことができます。
モーションキャプチャーは、
Webカメラを通じてできるものもあれば、高精度に検出するために専用の機器を使います。
例えば、上半身の動きはOculus QuestやLEAP Motion、全身の動きならPerception Neuronなどの機器が有名です。
大変便利ですが、導入コストがかかります。
最後の、既存をモーションを改変する方法、これが私のおすすめです!
(元データの利用規約に則った上で、利用しましょう)
例えば 個性的な歩くモーションを作りたいとします。
歩くことは、多少の癖があっても、基本は直立二足歩行ですよね。
それなら、
歩くモーションのフリー素材、フリーアセット(Unity-Chan!やStandard Assetにある)のデータを元に、
ボーンの動きに少し修正を加えれば、簡単に個性的な歩行を作れます。
そこで、本記事では、その方法を紹介したいと思います!
※もっと良い方法もあるはずなので、参考になれば幸い
ここでは、
オリジナルの開脚ジャンプモーションの作成、を例に紹介していきます!
1.作業のおおまかな流れ
モーションはBlenderで作成して保存しますが、
ベースとなるモーションデータはUnityのフリーアセット「unity-chan!」からもってきてます。
<流れ>
1.Blenderを起動し、unity-chan!のモーションデータ(.fbx)をインポート
2.特定のキーフレームでボーンの位置・回転などを変更
3.アーマチュアデータ(.fbx)でエクスポートし、フォルダに保存
Unityで使う場合↓
4.UnityのAssetsフォルダにモーションデータを入れて、Humanoid設定して利用。
簡単ですね^^
「Unity?Blenderしか触ったことねぇぞ!?」
という方は、mixamoというたくさんのモーションが、
無料で配布されているサイトがあるので、そちらからベースとなるデータをもってくることもできます。
※mixamoの場合、モーションにモデルデータもついてくるので、
編集しやすくオススメの方法です↓
2.作業解説
作業内容をつらつらと書いていきますね。
2-1.Blenderへのインポート
Blenderを立ち上げると、cubeが表示されますが、いらないので削除。
ファイルタブから、「インポート→.fbx」をクリックします。
unity-chan!のモーションデータは、
\Assets\unity-chan!\Unity-chan! Model\Art\Animations\
にあるので、そこから「unitychan_jump00B.fbx」を選択します。
※事前にUnityにてアセットストアからunity-chan!をインポートしておいてください^^;
画面上に、unity-chanのアーマチュア(ボーンで構成された骨格)が現れます。
unitychanは、長い髪の毛にボーンが仕込まれていて、物理挙動で揺れるようになっています。
このボーンは無視してください。
下の方から、アニメーションビューを引っ張り上げて、モーション編集の準備を整えていきましょう。
2-2.モーション編集
オブジェクトモードからポーズモードに切り替えます。
いずれかのボーンクリックしてみてください。
アニメーションビューにキーフレーム(黄色い◇)が表示されるはずです。
これがフレームに入力されているモーションデータです。
縦軸の数字はフレーム数です。
再生ボタンを押すと、アニメーションします。
ここで、このモーションの長さを知りましょう。
このモーションには、57フレームまでモーションデータが入っていました(ボーン全てを選択状態にしてみれば漏れがないかと思います)。
右の「出力プロパティタブ」の終了フレームを57にします。
これでこのモーションデータの長さを決めます。
再生バーを変更したい動きのフレームにもっていき、そこで膝や足首に該当するボーンを変更します。
この辺はBlenderの使い方で、Gで位置、Rで回転という操作で変えていきます。
どこに相当するボーンなのか、またローカル軸などを知りたい場合は、
「オブジェクトデータプロパティタブ」のビューポート表示で、名前やAxesにチェックを入れましょう。
(足首や手首を回すような編集は、ローカルの方がやりやすい)
このJumpモーションでは、
24フレーム目がちょうど最高到達点ぽかったので、
そこでそろっていた足をパッカーンと開脚させました^^
※ボーン位置を変更したら、「I」キーより、位置と回転の保存を忘れてないように!
このままでは、23フレーム目までそろっていた足が、一瞬だけ(30fpsの場合は0.2秒)開くようになってます。
なので、その前後のキーフレームを「X」キーで削除します。
このとき、開脚に伴い、動かしたボーンを選択の上、キーフレームを削除します。
すると、図では16フレームから24フレームにかけて、徐々に開脚するようになります。
閉じるのを、やや早くしたい場合、29フレームまで削除、といった感じにすれば、よさげです^^
2-3.モーションの保存
作ったモーションは、ファイルタブのエクスポートから.fbxファイルとして、保存しましょう。
保存の際、アーマチュアのみを選択、「すべてFBX」とし、
アーマチュアタブの「リーフボーン追加」のチェックを外して、保存します。
2-4.Unityでのモーション再生
保存先をUnity projectのassetsフォルダに保存するか、フォルダからUnity Editerにドラッグ&ドロップします。
モーションデータは、3Dモデルをインポートしたときと同様、Humanoidとして、Applyします。
実際にモデルで動かしてみて、確認するために、unitychan(prefab)を配置します。
確認方法ですが、Timelineを使えば、簡単に確認できます。
(Timelineの使い方は、以前のTimelineに関する記事↓で紹介したので割愛)
図のような感じで、モデルにアニメーションが作動するようにモーションデータをトラックへ配置して、再生します。
すると、即動かして確認することができます。
右下の黒いおっさんのプレビューはおかしいものの、
モデルは想定通りに動いてくれましたね!
というわけで、
既存のジャンプモーションを1フレームいじっただけで、
オリジナルモーションができました。
モーションキャプチャー機器などがなくても、
簡単にモーションを作りたいなら、
この方法がおすすめです^^
そして…Mixamoモーションの改変のほうがもっと簡単↓
写真に近いリアルガチアバターをコストをかけずに作る方法をまとめました!
完全解説してるのは本ブログだけ!↓