Blender 2.8 Unityモデル用FBXエクスポートメモ
Blender 2.81a
glTF2.0に不信感を抱いたのでFBXの調査。
2.7から卒業するために2.8の設定についてまとめ中
座標軸、スケールまわり
BlenderでExportしたFBXファイルをUnityに取り込んだ時にメッシュのRotationに回転掛かったりアーマチュアのScaleが100になる問題を解消するExport設定
座標軸について
Blender:Z+が上、Y-が前
Unity:Y+が上、Z+が前
Export設定
なぜか-Z ForwardにしないとUnity上でメッシュにY 180°の回転がかかる。
これをUnityに取り込むとRotationは全部0、Scaleは全部1になる。
マテリアルまわり(調査中)
一応メッシュに紐づいているマテリアル情報はExportされる模様。
シェーダー等については相変わらずUnity側で設定し直す必要がありそう。
ここらへんglTF2.0と連携できたらいい感じになるかもしれない。
テクスチャまわり(調査中)
Blender 2.7と同様ならテクスチャデータはFBXに含まれないのでUnity側にテクスチャインポートして1つ1つ適用する必要がある。
Shape Keyまわり
Export設定にApply Modifiersが標準搭載されたので何も考えずにエクスポートしてもUnity上でBlendShapeが表示されるようになった。
アニメーションと併用する場合はシェイプキーのRelativeチェックを外しておかないとうまく動かないので注意。
詳しくは以下記事参照。
余談
どうやらRelativeにチェックを付けたままだとUnityに取り込んだアニメーションデータにBlendShape項目が追加される模様。
そのためアニメーション再生中にメッシュのBlendShapeの値をいじってもアニメーションのBlendShapeの値で上書きされてうまく動かないのだと思う。
既にモデルから抜き出したアニメーションデータを使っていてBlendShapeが動かない場合は、Relativeのチェック外したFBXをインポート後にアニメーションデータを差し替えてみてください。
アニメーションまわり
Blender 2.7で12個以上のアニメーションが出力できなかった問題が解消されていた。
2.8では何も気にせず大量にアニメーション作っても問題なさそう。
(わざわざNLAトラックにアニメーションを追加する必要もなくなった)
ただ、相変わらず出力されたアニメーション名が「ArmatureName|AnimationName」となる。
FBXに紐付いたアニメーションを抜き出すためにUnity 2017でアニメーション選択してCtrl + Dしたとき文字列エラー(|が存在するため)が発生したけど、 Unity 2019.2.0f1で試したら「ArmatureName_AnimationName」と自動的に名前が変換されて抜き出せたからUnityのバージョンによってはこのままで問題なさそう。
気が向いたらFBX出力時のアニメーション名のフォーマットを変更できないか調べる。
最終的なFBX Export設定例
シーン上にモデルと関係ないオブジェクトがあるのでSelected Objectにチェックをつけている。
Outliner上でCtrl押しながら必要なモデルのメッシュとアーマチュアを選択してからExportすること。
Unityで動かして問題起きたら随時更新する予定。