【Unity】【Blender】BlenderからUnityにメッシュを取り込む際の設定と注意点

Blenderで作ったメッシュをUnityに取り込む方法です。
UnityのFBX Importerの挙動を確認したくてBlenderからメッシュをExportしたものの、ちょっとハマったのでメモ。

Unity 5.6.1p3 Blender 2.79

※ 現状は軸とスケールについての記述のみですがMaterialとかでハマったら追記するかもしれません

軸を合わせる

Blenderは前方がY軸の負方向、上方がZ軸の正方向とする右手座標系のようです。

f:id:halya_11:20180325222646p:plain:w500

Unityは前方がZ軸正方向、上方がY軸正方向の左手座標系なので、これに合わせる必要があります。

f:id:halya_11:20180325223337p:plain:w500

この設定は、File > Export > FBXで出力する際のウィンドウで行います。

f:id:halya_11:20180325225411p:plain:w300

Forwardを-Z Forwardに、UpをY Upに設定しています。
これでUnityの軸に合わされます。

スケールを合わせる

スケールは少々ややこしいです。

まず、Blenderはシーン設定で長さの単位を色々と設定できます。

f:id:halya_11:20180325231934p:plain:w300

長さの単位をNoneに設定すれば単位無しにもできます。
この場合の単位をBU(Blender Unit)というらしいです。

f:id:halya_11:20180325232140p:plain:w300

次にUnityのFBX Importerを見てみます。

f:id:halya_11:20180325234151p:plain:w300

まず、FBX ImporterのScale Factorはマニュアルで次のように説明されています。

Unity’s physics system expects 1 meter in the game world to be 1 unit in the imported file. If you prefer to model at a different scale then you can compensate for it here. Defaults for different 3D packages are as follows:
.fbx, .max, .jas, .c4d = 0.01
.mb, .ma, .lxo, .dxf, .blend, .dae = 1
.3ds = 0.1

ちょっとわかりづらい記述ですが、要するにScale Factorを0.01に設定すれば1BU = Unityの1メートル(1Unit)として扱えるようです。

またここでさらにわかりづらくしているのが、FBX ImporterのUse File Scaleという項目です。
マニュアルには次のようにあります。

Tick the checkbox to use the default model scaling, or untick to use a custom scaling value for your model. Unity’s physics system expects 1 meter in the game world to be 1 unit in the imported file. If you prefer to model at a different scale then you can compensate for it here.

これは要するに、これにチェックを入れると先ほどのScale Factorのデフォルト値、つまり0.01の値がScale Factorの値に乗算されますよ、ということです。
つまりScale Factorを1のままにしておいてUse File Scaleにチェックを入れておけば、最終的に適用されるのは1 * 0.01 = 0.01となります。

さらに、これに加えてBlenderでFBXをエクスポートする時に、Apply Transformにチェックを入れる必要があります。
Experimentalと書いてあるので不安になりますが、これをやらないとUnityに取り込んだ際にTransformのScaleの値がおかしくなります。

f:id:halya_11:20180326223652p:plain:w300

ここまでをまとめると、

  1. Blenderでは単位設定をNone(BU)にしてモデリングをする
  2. FBX ImporterでScale Factorを1にする
  3. FBX ImporterでUse File Scaleにチェックを入れる
  4. Blenderでエクスポートする際にApply Transformにチェックを入れる

とすれば正常なスケールでインポートできるということになります。

参考サイト

docs.unity3d.com

qiita.com