【Unity】Blenderで作成したアニメーションのループをなめらかにする方法
以前の記事でBlenderを用いたアニメーション作成方法についてご紹介しました。よろしければ先に以下の記事をご覧になっていただけると幸いです。
Blenderを使ってUnityにアニメーションを追加する手順
さて、今回はそんなBlenderで作成したアニメーションについてです。
例えば待機モーションなど、ループ再生で動かしたいアニメーションの類は多いものと思われます。一見きれいに見えても、動かしてみるとスムーズにループしないことがあるのではないでしょうか。
以下がその事例です。
今回は
- ループインジケーター
- ループが乱れる原因
- ループ再生方法
- ループをスムーズにする方法
についてご紹介していきます。
本稿はユニティちゃんライセンス条項の元に提供されています。
Loop Match インジケーターについて
アニメーションのループが正常に行われているかどうか確認するためにはどうしたらいいか。もちろん目視によって確認することはできます。しかし本当に細かいところまでは目視では限界があります。
そこでループが正常かどうかの指標となるのが「Loop Match インジケーター」です。
インジケータを確認する手順は以下の通りです。
- 確認したいアニメーションクリップを選択
- 「Edit」ボタンをクリック
- 「Animation」を開く
- 「Loop Match」と書かれている右横のランプを確認する。
インジケーターは緑~赤で表示されます。緑であればループが自然であること、黄、赤は不自然であることを示しています。
インジケーターを緑にするにはどうしたらいいかについて後ほど述べていきます。
アニメーションをループ再生させる
今回はアニメーターコントローラー上にアニメーションクリップを追加してUnityちゃんを動かしています。よろしければ以下の記事も合わせてご覧ください。
【Unity】Animator Controllerを用いたアニメーション切り替え方法
それではアニメーションがループ再生するように設定していきます。手順は次の通りです。
- 先述した手順でインジケーターを開く。
- 「Loop Time」にチェックを入れて設定を適用する。
*タイムライン上で動かしたい方は「Playable Director」の「Wrap Mode」を「Loop」に設定してください。
タイムラインについては以下の記事をご覧ください。
アニメーションがループを繰り返していくうちに、オブジェクトがX,Y,Z軸方向にずれて行ったり、オブジェクトが回転していくようなことがあるかもしれません。
そうであれば
- Root Transform Rotation
- Root Transform Position(Y)
- Root Transform Position(X,Z)
の3つの「Bake Into Pose」をチェックして回転や位置を固定してください。
アニメーションクリップのプロパティについては以下の記事をご覧ください。
以上でアニメーションをループ再生させるための設定は完了です。
ループが不自然な理由
アニメーションの変遷時に違和感のあるフレームが挟まれてしまう理由は、アニメーションクリップの開始フレームと終了フレームのポーズが違っているためです。
開始・終了フレーム(ループをする際の隣り合うフレーム)を同じポーズのものに設定してすればループがスムーズになります。
今回使用している待機モーションの各キーフレームは以下の通りです。
*「21~40」フレームも「1~20」フレームと同様の間隔、順序でポーズが同じキーフレームを設定しています(例えば10フレーム目と30フレーム目は同様のポーズといった具合)。
通しで再生すると以下の通りです。
「ループをスムーズにしたいのなら、最初から0フレーム目のポーズを取り除けばいいのではないか?」と考えた方、いらっしゃるかもしれません。
0フレーム目にTポーズ(両手を広げている状態)を入れている理由は何なのか。それはBlenderからUnityにアニメーションをエクスポートした際に適用しやすくするためです。
詳しくは以下の記事をご覧になっていただけると幸いです。
Blenderを使ってUnityにアニメーションを追加する手順
それではUnityに戻ってアニメーションのループをスムーズにしていきましょう。
フレーム数調整
調整方法は以下の2通りです。
- 青いバーを動かす
- 「Start」「End」にフレーム数を任意の値で入力
お好きな方法で調整を行ってください。
それでは調整を行っていきます。手順は以下の通りです。
- 青いバー or フレーム番号を入力してアニメーションの区間を調整
- 「Apply」をクリックし調整内容を適用する
*今回は同じポーズである「1フレーム目」と「40フレーム目」をそれぞれ開始フレーム、終了フレームに設定しています。
アニメ―ションを再生していきましょう。
開始フレームと終了フレームのUnityちゃんのポーズを同じものに設定しているため、ループが自然になっていることが確認できます。
まとめ
いかがでしたでしょうか。今回はアニメーションをスムーズにループ再生させる方法についてご紹介してきました。修正方法は非常に簡単なものです。
Blenderでループするアニメーションを作成する際には、アニメーションの開始フレーム・終了フレームのポーズのつながりを意識しましょう。きれいなループアニメーションが作成できるはずです。
以下の記事では、ループインジケーターで触れたアニメーションクリップの各プロパティについてご紹介しています。ご覧になっていただけると幸いです。
Blenderにおけるアニメーション作成、Unityのアニメーション機能について興味を持った方はこちら↓
この記事はいかがでしたか?
もし「参考になった」「面白かった」という場合は、応援シェアお願いします!