赤兎ラボ

コーディングからバージョン管理、業務効率化までをまとめます。

Unity Blender FBXImportSettings

BlenderでEBXをエクスポートし、Unityでインポートしてモデルを利用する際の方法をまとめます。

 

前提

RootMotion使用

FBXに紐づいたアニメーションの座標計算を元にUnityのシーン上のオブジェクトを動かすことが出来ます。

過去の記事でも触れているため参考にしてください。

https://redrabbitnet.hatenablog.com/entry/2019/05/23/075206?_ga=2.20483256.1689961952.1571893688-1241490023.1571893688

 

AnimationType:Generic

UnityではよくHumanoid(人型)が扱われますが、本記事では人型以外でも使うタイプを対象とします。

 

Unity Version:2018.2.18f

Blender Version:2.79b

 

 

想定される問題

問題

Unity上でモデルを編集やコンポーネント等を追加した後、再度BlenderでAnimationを追加したデータを取り込む際、コンポーネント等を付け直さなければならない。

 

解決策

MeshとAnimetionを別々に出力することで、Animationのみを更新することが出来る。

ただし、Meshつまりは見た目を変える場合は対応できない。

コチラのサイトを参考にしました。

http://taka8.hateblo.jp/entry/2016/08/22/230244

Blender2.79ではスケールの設定を 全ローカル から FBXスケール に変更しておかないとMeshとAnimationのスケールが異なるためバグになります。

 

問題

MeshとAnimationを別で出力する場合、RootMotionのためのオブジェクトの階層が異なる。よって、アニメーションが正常に動作しない。

 

解決策

Animation用FBXであっても、アーマチュアとメッシュ両方の状態で出力する。

こんなことをしたら別々にした意味が無いじゃないかという話はあるかもしれないが、

アニメーション追加時にモデルデータを入れ替える必要が無いという目的は達しているので良しとする。そうでなくても良い方法があれば教えてください。

 

問題

Blenderで出力の際、アニメーション12個を超えた際に出力されなくなる。

 

解決策

アクションをNLAストリップとして変換して出力する。

このサイトを参考にしました。

https://poipoipoip.hatenablog.com/entry/2019/03/23/170904

しかし、僕の場合はこれでもダメだったため、変換してNLAストリップのみ出力後、出力済みストリップだけを削除して複数のアクションFBXとして出力しました。

本体は出力可能数の設定等があるはずなのですが、探しても見つかりませんでした。良い方法があれば教えてください。