Blender TipsUE・Unityへの書き出し

[Blender→Unity] FBX書き出しで向きとスケールをそろえる

目次
  1. 書き出す前に:トランスフォームを適用する
  2. FBX 書き出しの設定
  3. 確認方法:Blender の立方体と Unity の Cube を並べる
  4. Unreal Engine の場合

Blender で作ったモデルを Unity に入れると、「Rotation X が -90 になっている」「Scale が 100 になっている」ということがよく起きます。Blender と Unity で 上方向の軸 と 単位の扱い が違うのが原因です。

Blender Unity
上方向 Z Y
1 の長さ 1 m(初期設定) 1 m

書き出す前に:トランスフォームを適用する

オブジェクトモードでモデルを選択し、Ctrl + A →「回転と拡大縮小」を適用します。Blender 上で回転やスケールが残っていると、それがそのまま Unity 側にずれとして出ます。

FBX 書き出しの設定

ファイル → エクスポート → FBX で、次の設定がよく使われる組み合わせです。

項目(英語 UI) 設定
制限(Limit to) 「選択したオブジェクト」にチェック(書き出したいものだけ)
オブジェクトタイプ(Object Types) メッシュ(アーマチュアがあればそれも)
スケールを適用(Apply Scalings) FBX 単位スケール(FBX Units Scale)
前方(Forward) -Z
上(Up) Y
変換を適用(Apply Transform) チェックを入れる

「変換を適用(Apply Transform)」は実験的機能と表示されますが、これを入れると Unity 側で Rotation が 0、Scale が 1 のまま読み込まれやすくなります。

確認方法:Blender の立方体と Unity の Cube を並べる

設定を変えたら、毎回モデルで試すより Blender の初期立方体を書き出して確認 するのが確実です。

  • Blender の初期立方体は 1 辺 2 m
  • Unity の Cube(GameObject → 3D Object → Cube)は 1 辺 1 m

Unity に読み込んで並べ、ちょうど 2 倍の大きさで、Rotation が 0・Scale が 1 になっていれば設定は合っています。

Unreal Engine の場合

UE は単位がセンチメートルで、軸の扱いも Unity と違うため、設定が変わります。これは別の記事でまとめます。