[Blender→Unity] FBX書き出しで向きとスケールをそろえる
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 と違うため、設定が変わります。これは別の記事でまとめます。