つきくさのぶろぐ

個人ブログです ゲーム実況動画、ゲーム制作(Unity)、イラストなど 現在改装中

Blenderで作ったアニメがUnityでうまく再生できない問題

Blenderで作ったアニメーションが、Unityでうまく再生できずにクッソハマったのでメモ。

 

何が起こった?

上の画像のような、Unityちゃんが転がるアニメーションをBlenderで作って、FBXエクスポートを行い、Unityに持ち込んだところ、以下の状態になった。

謎のImportFBXエラーと、再生されるアニメーションのおかしさ。

エラーの内容がよくわからないが、フレームレートがゼロになっている?Unity側の設定は、ひとまずGenericに設定している。

原因がわからず、Blenderのデータがおかしくなっている?と仮定して、Blenderのバージョンを最新(3.3)から2.9に落としてみたり、人型以外のアニメーションを作って試したりしたが、それでも分からず。

 

結論

Unityのエラー文「Import FBX Errors: Framerate was set to 0.00, it's been reset to 1.0.」でググってみたところ、英文だが有力っぽい情報があった。

要約すると、「Unity側とBlender側のフレームレート(=FPS)が違うよ」ということらしい。

Blender側のプロパティで、フレームレートは30FPSとなっている。一方、Unityは60FPSで動作しているため、不一致となっておかしくなるっぽい。

 

Unity側のインポート設定から、Animation→「Resample Curves」のチェックを外したところ、正常に動作した。

たったこれだけの事の解決に、一か月近く掛かってしまった。もう許せるぞオイ!

ただし、これはインポート設定を「Generic」アニメーションに設定した場合のみ。「Humanoid」に設定すると、何故かうまく動かない。

解決策が分かったら、追記予定。

追記:

結局、元のFBXファイルを60fpsで作成しないとダメっぽい。ということで、元のアニメーションが30fpsで作成しているので、キーフレームを倍に伸ばして60fpsに対応する。

①現在のキーを先頭(0フレーム)に設定(スケールの基準位置となる)

②Aキーで全キーフレームを選択

③メニューから「キー」→「トランスフォーム」→「スケール」を選択

④2倍にするので、キーボードの「2」キーを押す

これで、キーフレームが2倍に伸びる。あとは全てのアクションを手直ししていき、60fpsでFBXエクスポートする。

わかりづらいが、想定した動作になっている。成功。ぐるんぐるん。

動いた記念に作った、ホラホラ先輩ユニティちゃん