Blender2.8のUnity向けfbx Export設定
Unity向けにfbxを出力する際の基本的なExport設定。
多分これで大体大丈夫なはずだけど、MeshだけのモデルをExportする場合とArmatureとかを含むモデルをExportする場合とで若干手順に違いがある。
■MeshだけExportする場合
1. Main
https://gyazo.com/e596a4556f4b09d0a402eb12077d5299
・(最重要)「Apply Scaling」をAll Local以外に(FBX Units ScaleかFBX Allにしておけば良いはずだけど2つの違いは不明)
・「!EXPERIMENTAL! Apply Transform」にチェック(補足: Armatureはこの設定がうまく適用できないらしく、後述の手順が必要)
・ArmatureとMeshだけを選択しておく(CameraやLampを消し忘れてたときに萎えるのを防止する。)
Active CollectionやSelected Objectsをチェック入れた場合、狙ったモノだけ出力できるので必要に応じて利用する。
https://gyazo.com/5eec723bf4a32be48776dda85678aec0
・Apply Modifiersはチェックしない(たしかシェイプキーあると使えなかったはず)
https://gyazo.com/b48216116aff33de714a246c1e3c4f24
・Add Leaf Bonesはなにか支障が無い限り追加しておいて損はないはず。
UnityとBlenderでボーンの扱いが異なるらしく、fbxで出力した際に末端ボーンの向きや長さと言った情報が失われるらしい。
リーフボーンを追加することで末端ボーンの向き情報を与えることが出来るとのことだが基本は省略可能らしい。
とはいえ何時必要になるのかよく分からんのでとりあえず付けておけば良いかと。(IK関わるモデルならあったほうがいい説)
https://gyazo.com/bcb32c558761ffee7343eea1ea1864aa
・Baked Animationのチェックを外す(自分はBlenderでアニメーションを作っていないので…)
■Armatureを含むモデルをExportする場合
まんま以下のページの受け売り
0. (前提) モデルが -Y Forwardになっていることを確認する
1. 出力したいモデルをX軸に対して-90度回転させる
2. Apply > Rotationする
https://images.squarespace-cdn.com/content/v1/55652c24e4b0edcadf841347/1560426040415-FKEYAPWTXTKKUZ2LIDZ1/ke17ZwdGBToddI8pDm48kFGHbAXxP8k4AvxLpAkU_5wUqsxRUqqbr1mOJYKfIPR7LoDQ9mXPOjoJoqy81S2I8N_N4V1vUb5AoIIIbLZhVYxCRW4BPu10St3TBAUQYVKcA3a6kiZae_4o6yu1Brm8APUJwFmj0Qm7GkeF2FqKrZZxmT_sMi1jOimfVfZpW_q5/rotateandapply.jpg?format=1500w
3. 今度はX軸に対して 90度回転させる (さっきの回転を打ち消す)
この回転はApplyさせてはいけない
https://images.squarespace-cdn.com/content/v1/55652c24e4b0edcadf841347/1560426459717-NY9EAOB007OWX25N3HWN/ke17ZwdGBToddI8pDm48kFGHbAXxP8k4AvxLpAkU_5wUqsxRUqqbr1mOJYKfIPR7LoDQ9mXPOjoJoqy81S2I8N_N4V1vUb5AoIIIbLZhVYxCRW4BPu10St3TBAUQYVKcA3a6kiZae_4o6yu1Brm8APUJwFmj0Qm7GkeF2FqKrZZxmT_sMi1jOimfVfZpW_q5/rotateanddontapply.jpg?format=1500w
4. Apply ScalingsをFBX Units Scaleにする(多分All Local以外ならだいじょうぶかと)
5. (重要)今回は「!EXPERIMENTAL! Apply Transform」のチェックを外す
https://images.squarespace-cdn.com/content/v1/55652c24e4b0edcadf841347/1560426713334-CM7AW02M43C6IIPWBLHI/ke17ZwdGBToddI8pDm48kBwUyKJlm29iO_tLyokLcX9Zw-zPPgdn4jUwVcJE1ZvWQUxwkmyExglNqGp0IvTJZUJFbgE-7XRK3dMEBRBhUpzO42jCnqMJYqDceQPD2G0w8Kszze3sSwXGawnqWDIzh46S_AzmSF55WJfe7SH4Al8/fbxunitsscaleexport.jpg?format=750w
■上のおまじないをすると何が嬉しいのか
普通に出力すると、BlenderとUnityとの座標系の違いからArmatureのRotationに-90の値がセットされてしまう。
https://gyazo.com/68cd728f2530eeaf4ac6d77d933777e6
このズレを打ち消すように回転させてから出力すると以下のようにRotationのズレはなくなる。
https://gyazo.com/54ef94cd5cde7bc1330dda1491184f12
めっちゃダサい手順だけど、ちょっと調べた限りではどうやらこれが正攻法らしい。
そもそもの問題はFBX形式のライセンス上の問題で公式のSDKを使えないことらしいので仕方がない。
Blener2.8から対応したglTF形式が将来有望。Unityから扱う方法は調査中。