BlenderでUnity向けにモデルを出力する
Unity では立方体や球体などのプリミティブな3Dモデルを直接作成し、配置できます。単純な形をしたオブジェクトを組み合わせることで建物や階段をつくることができます。
一方で、Blenderはプリミティブなオブジェクトではつくることが難しい建物や風景、アバターなどをつくることができます。Creators Guide で配布している「自分だけの家をつくってみよう!」の家具も Blender を用いてつくられています。
Blender で作成した3Dモデルを cluster のワールドにするには、一度 Unity に持ち込む必要があります。
書き出したモデルに変な数値が入ってなかなかうまく調整できないことがありますよね?
この記事ではモデルのデフォルト値をきれいに出力することを学び、Unity でのスケールや回転などの数値を調整しやすくしましょう!
今回の記事の環境
・Windows
・Blender 3.1.2
・Unity 2021.3.4f1
Blenderの基本操作を知りたい方はこちらの記事がおすすめです。
単位を確認する
まずはBlender を起動します。起動すると Cube が1つ表示されています。
- Cube を選択し delete キーを押して削除しましょう。

今回はサルのスザンヌを用いて解説します。
- 「Shift+A」からモンキーのスザンヌメッシュを作成してください。


作成ができたらモデルの大きさを確認しましょう。モデルをつくる時にスケール感は大事な要素です。Blender ではデフォルトで「メートル単位系」に設定されています。
- Blender 画面右のウィンドウにあるシーンプロパティから単位系が「メートル法」になっているか確認して下さい。

回転とスケールを適用する
モデルの回転や大きさを適用しましょう。適用を行うことでモデルの持つ位置や回転、大きさをデフォルト値として設定することができるようになります。
- オブジェクトモードで選択し、上部メニューバーの「オブジェクト > 適用 > 回転・スケール」を選択して下さい。


原点の位置を調整する
モデルを編集モードやオブジェクトモードで移動すると、オレンジの点が原点からずれてしまうことがあります。オレンジの点はモデルの原点を表しており、このまま出力するとオブジェクトのトランスフォームの値がデフォルト値として出力されます。

- 原点の位置を変更するには、オブジェクトモードで選択し上部メニューバーの「オブジェクト > 原点を設定 」から任意の設定を選択して下さい。
Unity の Pivot 編集ではこのオレンジの点を中心に回転や拡大を行います。原点の位置オブジェクトの種類によりますが、モデルの底面もしくは中心にあることが望ましいです。

モデルをエクスポートする時の設定
モデルを出力しましょう。
- 上部メニュー欄の「ファイル > エクスポート > FBX」を選択します。出力オペレーターが開くので名前を設定して出力します。

次は Unity に合わせた出力設定を行います。
- パスモードを「自動→コピー」に変更し、右横にある箱マークにチェックを入れます。この設定でモデルを出力する時に設定したテクスチャを含んで出力できるようになります。
- トランスフォームタブのスケールを「FBX単位スケール」、「-Zが前方」「Yが上」に変更してください。また、「トランスフォームを適用する」にチェックマークを入れてください。

出力の設定をプリセット登録する
モデルを出力するたびに毎回設定するのは大変ですよね。出力設定のプリセット登録をすることで、次回以降の手順を短縮することができます。
- 出力オペレーターの「+」ボタンを押すと登録ウィンドウが表示されます。わかりやすい名前を入力したらOKを押して下さい。
- プリセットを使うときには「∨」ボタンからプルダウンをして設定を呼び出しましょう。

初期値とUnity用設定のモデルを比較してみる
出力したモデルを Unity にインポートし、配置しました。見分けが付くように初期値で出力したものは青色、出力設定を変更したものは赤色に着色しています。
一見左右のモデルに違いがなく問題がないように見えます。Inspector でそれぞれのモデルの transform を見てみましょう。

初期値のまま出力したモデルは {(0,0,0),(-89.98,0,0),(100,100,100)} となっており、回転と大きさに倍率がかかっています。
一方で、出力方法を変更したモデルは位置、回転、大きさが {(0,0,0),(0,0,0),(1,1,1)} に正規化されています。

ここで初期値で出力したモデルの回転を0に変更すると、地面に向かって倒れるようになってしまいました。

Blender と Unity では、座標系が異なっていることが原因となっています。
Blender では Z-Up の右手座標系、 Unity では Y-Up の左手座標系となっています。このため Blender からモデルを出力するときには設定を加える必要があります。

モデルのデフォルト値をきれいに出力することで、Unity でのスケールや回転などの数値を合わせやすくなります。適切な方法でモデルを書き出してUnityでの調整をしやすくしましょう。
毎回削除するのは手間ですね。
Cube を削除した後に上部メニュー欄の「ファイル > デフォルト > スタートアップファイルを保存」を押すと、次回以降はCube の無い Scene から始めることができます。