【Unity】Blenderで作成したアニメーションのループをなめらかにする方法


冒頭_アニメーションループ

以前の記事でBlenderを用いたアニメーション作成方法についてご紹介しました。よろしければ先に以下の記事をご覧になっていただけると幸いです。

Blenderを使ってUnityにアニメーションを追加する手順

さて、今回はそんなBlenderで作成したアニメーションについてです。

例えば待機モーションなど、ループ再生で動かしたいアニメーションの類は多いものと思われます。一見きれいに見えても、動かしてみるとスムーズにループしないことがあるのではないでしょうか。

以下がその事例です。

アニメーションループ_失敗例1
ループ失敗例

今回は

  • ループインジケーター
  • ループが乱れる原因
  • ループ再生方法
  • ループをスムーズにする方法

についてご紹介していきます。

公式のマニュアルはこちら

ユニティちゃんライセンス
本稿はユニティちゃんライセンス条項の元に提供されています。

Loop Match インジケーターについて

アニメーションのループが正常に行われているかどうか確認するためにはどうしたらいいか。もちろん目視によって確認することはできます。しかし本当に細かいところまでは目視では限界があります。

そこでループが正常かどうかの指標となるのが「Loop Match インジケーター」です。

インジケータを確認する手順は以下の通りです。

  1. 確認したいアニメーションクリップを選択
  2. 「Edit」ボタンをクリック
  3. 「Animation」を開く
  4. 「Loop Match」と書かれている右横のランプを確認する。

インジケーターは緑~赤で表示されます。であればループが自然であること、不自然であることを示しています。

インジケーターを緑にするにはどうしたらいいかについて後ほど述べていきます。

アニメーションをループ再生させる

今回はアニメーターコントローラー上にアニメーションクリップを追加してUnityちゃんを動かしています。よろしければ以下の記事も合わせてご覧ください。

【Unity】Animator Controllerを用いたアニメーション切り替え方法

それではアニメーションがループ再生するように設定していきます。手順は次の通りです。

  1. 先述した手順でインジケーターを開く。
  2. Loop Time」にチェックを入れて設定を適用する。
インジケータ_LoopTime_チェック
Loop Time チェック

*タイムライン上で動かしたい方は「Playable Director」の「Wrap Mode」を「Loop」に設定してください。

WrapMode_Loop化
Wrap Mode を Loopに変更

タイムラインについては以下の記事をご覧ください。

【Unity】タイムラインを用いたアニメーション管理方法

 

アニメーションがループを繰り返していくうちに、オブジェクトがX,Y,Z軸方向にずれて行ったりオブジェクトが回転していくようなことがあるかもしれません。

ループ_オブジェクト回転例
例:オブジェクト回転

そうであれば

  • Root Transform Rotation
  • Root Transform Position(Y)
  • Root Transform Position(X,Z)

の3つの「Bake Into Pose」をチェックして回転や位置を固定してください。

Bake Into Pose
Bake Into Pose

アニメーションクリップのプロパティについては以下の記事をご覧ください。

【Unity】アニメーションクリップのプロパティを理解する

以上でアニメーションをループ再生させるための設定は完了です。

ループが不自然な理由

アニメーションの変遷時に違和感のあるフレームが挟まれてしまう理由は、アニメーションクリップの開始フレームと終了フレームのポーズが違っているためです。

開始・終了フレーム(ループをする際の隣り合うフレーム)を同じポーズのものに設定してすればループがスムーズになります。

ループ修正前_イメージ

ループ修正_イメージ

 

今回使用している待機モーションの各キーフレームは以下の通りです。

*「21~40」フレームも「1~20」フレームと同様の間隔、順序ポーズが同じキーフレームを設定しています(例えば10フレーム目と30フレーム目は同様のポーズといった具合)。

通しで再生すると以下の通りです。

Blender_待機モーション_ボーン
Blender上 待機モーション

「ループをスムーズにしたいのなら、最初から0フレーム目のポーズを取り除けばいいのではないか?」と考えた方、いらっしゃるかもしれません。

0フレーム目にTポーズ(両手を広げている状態)を入れている理由は何なのか。それはBlenderからUnityにアニメーションをエクスポートした際に適用しやすくするためです。

詳しくは以下の記事をご覧になっていただけると幸いです。

Blenderを使ってUnityにアニメーションを追加する手順

それではUnityに戻ってアニメーションのループをスムーズにしていきましょう。

フレーム数調整

調整方法は以下の2通りです。

  • 青いバーを動かす
  • 「Start」「End」にフレーム数を任意の値で入力

お好きな方法で調整を行ってください。

再生区間調整箇所
再生区間調整箇所

それでは調整を行っていきます。手順は以下の通りです。

  1. 青いバー or フレーム番号を入力してアニメーションの区間を調整
  2. 「Apply」をクリックし調整内容を適用する
アニメーション長さ調整
アニメーションループ調整手順

*今回は同じポーズである「1フレーム目」と「40フレーム目」をそれぞれ開始フレーム、終了フレームに設定しています。

アニメ―ションを再生していきましょう。

開始フレーム終了フレームのUnityちゃんのポーズを同じものに設定しているため、ループが自然になっていることが確認できます。

まとめ

いかがでしたでしょうか。今回はアニメーションをスムーズにループ再生させる方法についてご紹介してきました。修正方法は非常に簡単なものです。

Blenderでループするアニメーションを作成する際には、アニメーションの開始フレーム・終了フレームのポーズのつながりを意識しましょう。きれいなループアニメーションが作成できるはずです。
以下の記事では、ループインジケーターで触れたアニメーションクリップの各プロパティについてご紹介しています。ご覧になっていただけると幸いです。

Blenderにおけるアニメーション作成、Unityのアニメーション機能について興味を持った方はこちら↓


ループイメージ_アイキャッチ

この記事はいかがでしたか?よければシェアをお願いします。

Massuuuu