poi’s tech blog

3D多人数同時接続型球体アクション成人向けゲーム開発のためのアイデア、ナレッジ

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+が前

f:id:poipoipoip:20200118142002p:plain
Blender側では座標軸はそのままZ+が上、Y-が前で作成

Export設定

なぜか-Z ForwardにしないとUnity上でメッシュにY 180°の回転がかかる。

f:id:poipoipoip:20200118160655p:plain
Apply TransformはいつまでExperimentalなんでしょうね…

これをUnityに取り込むとRotationは全部0、Scaleは全部1になる。

マテリアルまわり(調査中)

一応メッシュに紐づいているマテリアル情報はExportされる模様。

シェーダー等については相変わらずUnity側で設定し直す必要がありそう。

ここらへんglTF2.0と連携できたらいい感じになるかもしれない。

テクスチャまわり(調査中)

Blender 2.7と同様ならテクスチャデータはFBXに含まれないのでUnity側にテクスチャインポートして1つ1つ適用する必要がある。

Shape Keyまわり

Export設定にApply Modifiersが標準搭載されたので何も考えずにエクスポートしてもUnity上でBlendShapeが表示されるようになった。

poipoipoip.hatenablog.com

アニメーションと併用する場合はシェイプキーのRelativeチェックを外しておかないとうまく動かないので注意。

f:id:poipoipoip:20200118153249p:plain
InterpolationはLinerでOK

詳しくは以下記事参照。

poipoipoip.hatenablog.com

余談

どうやらRelativeにチェックを付けたままだとUnityに取り込んだアニメーションデータにBlendShape項目が追加される模様。

そのためアニメーション再生中にメッシュのBlendShapeの値をいじってもアニメーションのBlendShapeの値で上書きされてうまく動かないのだと思う。

既にモデルから抜き出したアニメーションデータを使っていてBlendShapeが動かない場合は、Relativeのチェック外したFBXをインポート後にアニメーションデータを差し替えてみてください。

アニメーションまわり

Blender 2.7で12個以上のアニメーションが出力できなかった問題が解消されていた。

2.8では何も気にせず大量にアニメーション作っても問題なさそう。

(わざわざNLAトラックにアニメーションを追加する必要もなくなった)

poipoipoip.hatenablog.com

ただ、相変わらず出力されたアニメーション名が「ArmatureName|AnimationName」となる。

FBXに紐付いたアニメーションを抜き出すためにUnity 2017でアニメーション選択してCtrl + Dしたとき文字列エラー(|が存在するため)が発生したけど、 Unity 2019.2.0f1で試したら「ArmatureName_AnimationName」と自動的に名前が変換されて抜き出せたからUnityのバージョンによってはこのままで問題なさそう。

気が向いたらFBX出力時のアニメーション名のフォーマットを変更できないか調べる。

最終的なFBX Export設定例

シーン上にモデルと関係ないオブジェクトがあるのでSelected Objectにチェックをつけている。

Outliner上でCtrl押しながら必要なモデルのメッシュとアーマチュアを選択してからExportすること。

f:id:poipoipoip:20200118155459p:plain

Unityで動かして問題起きたら随時更新する予定。