
Blender⇒FBX⇒Unity 取込の時の大きさ(スケール係数)調整と注意点について記載しています。最終的に Unity に取り込んだとき、なんかサイズ大きくない?ってなることがあったので、それを防ぐための手順をまとめたものです。
3Dオブジェクトの作成にあたって、あらかじめBlender側と Unity 側の物体のスケールを意識しておいた方が良いようです。
取り込んだ後にUnity 内でサイズを調整することもできますが、そのためにひと手間増えてしまうという欠点があり、オブジェクトを作り直して取り込みしなおすときに毎回どれくらい拡大したかを覚えておかないといけないのが非効率です。
スケールをちゃんと定義してからモデリングをするとこんなメリットがあります。
物理的に参考にしたモデルに合わせて長さを合わせられます。モデリングしたり、Unity上に置いたときに、オブジェクトのサイズを数値で把握しておけます。
Blender にしろ、 Unity にしろ、物理演算を行う時に正しい距離感でないと意図しない動きとなる場合があります。(※具体的には重力の加速度定数 g を用いた計算式に影響します。当然ながら1kmの距離と1mの距離では物体が落ちるのにかかる時間は違う)
Blender の3Dビュー、 Unity のシーンウィンドウ、両方とも距離の目安となる網目(グリッド)を利用できます。
ちょっと見えずらいですが、Blender も Unity も濃い色と薄い色の二種類のグリッドが描画されています。
ワンポイント 2018/3/23時点でのUnity2017,Unity2018も同様。
Blender上に表示されたグリッド
Unity 上に表示されるグリッド
Blender の1区画(細分化されたグリッドとグリッドの間の距離)は標準では 1 BU (Blender Unit )と定義されており、変更可能です。
デフォルトでは 1BU は 1メートルに設定されてます。
Unity もデフォルトでサイズ 1 = 1 メートルとなり、1 Unit と定義されます。
Unity では画面を拡大した時、拡大の度合いに合わせて、見やすいサイズのグリッドが自動生成されるようです。
Blender の定義を意識してメートルとしておくことで、頂点間の距離を表示したりできます。
以下、設定前と設定後の画像です。Blender では BU、メートル法、英単位(インペリアル) の単位で表記を選択できます。。
BUからメートル法への設定変更
メートル法に設定しておくと、位置など数値を入力するときに、単位(km:キロメートル、m:メートル、cm:センチメートル)をつけて指定することも可能になります。
Blender ではデフォルトで 10×10のグリッドの線(ライン)が表示されています。また、10本のラインごとに太いグリッドが表示されています。
以下の画面上、項目①「ライン」を10から変更すると、グリッドの線が外側に増えて表示されます。
画面では51本のラインを表示するよう増やした状態です。これで奥行きのあるオブジェクトを作るときにわかりやすくなります。
Blenderでグリッドの設定
画面の項目③「細分化」を変更します。(デフォルト10)例えば 3 にすると、3本のグリッド線(ライン)ごとに太いグリッドで表示されます。
メートル法にかえたものの、1m単位のグリッドではデザインしにくいような大きなオブジェクト、小さなオブジェクトを作るときはグリッドの間隔など定義を変更できます。
例えば項目②「拡大縮小」を 「2.000」と設定すれば、 グリッドの間隔が2メートル単位になります。
個人的には小物を作るとき「0. 20」(= 20 cm 間隔)くらい、細分化「5」に設定してあげると 1 m 単位で太いグリッド線が引かれ、感覚で距離感がわかって良いかと思います。
Blenderでグリッドの設定
※グリッドの太い線と細い線の色を見えずらいのでそれぞれの変更方法がないのかちょっと検索してみましたが、海外のBlenderフォーラムなどで同じ質問をしている方がいて、2013年時点ではできないとの QA をやり取りしてました。
ちなみに、太い線と細い線を分けずに一括での色変更は
→ → → から設定できます。Blenderで作った 3D データを Unity で使うため、一旦 FBX 形式を経由して取り込みます。
直接Blender( blendファイル形式 )を利用することもできますが、 カメラや照明などの設定も含まれるし、ちょっとファイルサイズは大きくなります。
※公式サイトに記載してあるとおり、blend形式をUnity にドラッグ&ドロップして取り込むときは裏側でBlender の FBX エクスポーター機能を使ってFBX 形式に変換して Unity 内に取り込んでいるので、手動でFBX 形式に変換するのと結果的に同じですが。(2021.1.1追記:最新の Unity では動作が異なるようです)
Unity にFBXファイルを取り込んだときスケールが狂っていたとしても、大きさを 0.1 倍で取り込むようUnity側で設定するなど、スケール調整は可能なので安心です。
でもスケールは初めから考慮しておかないと、オブジェクトごとに丁度良いサイズで取り込めるようにファイルごとにスケール係数をメモっておく必要があるかも。時間をおいて、Blender ⇒ FBX ⇒ Unity に取り込もうとしたときに、どのファイルがどれくらいのスケール係数を設定していたか忘れてしまった、なんてことになりそう・・・。
なお、メートル法でデフォルトなら、Blender→FBX で 1 倍、 FBX→Unity 取り込みで 1 倍でサイズをそのままに取り込めるようです。
以下のエクスポートで設定すれば大丈夫でした。
BlenderからFBXファイル出力するときのスケール係数設定
FBX をドラッグ&ドロップで取り込んだ後の、オブジェクトプロパティ以下の項目「Scale Factor」でスケール係数を設定できるようです。
[Unity3D 公式ドキュメント v5.6 – 「Blender からのオブジェクトのインポート」]((https://docs.unity3d.com/560/Documentation/Manual/HOWTO-ImportObjectBlender.html)
Unity公式フォーラム(海外) – 「Why is FBXImporter Scale Factor = 0.01??」
更新日 | 更新内容 |
---|---|
2015.12.5 | ページ公開 |
2018.3.23 | スマホからレイアウトが崩れて読みにくいので修正。ついでに文章構造と内容、参考サイトのリンク切れやhttps 対応済みリンク先を訂正。 |
コメント、ありがとうございます。
ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。
Twitter:@NodachiSoft_jpお名前:以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください
お名前: