Tag Archives: グリッド

Blender⇒FBX⇒Unity 取込の時の大きさ(スケール係数)調整と注意点

■BlenderのスケールとUnityのスケールの設定

3Dオブジェクトの作成にあたって、あらかじめBlender側と Unity 側の物体のスケールを意識しておいた方が良いようです。後からサイズを調整することもできますが、そのために ひと手間増えてしまうという欠点がありますし、スケールを定義してからモデリングした方が実際の参考になるモデルに合わせて作った時に長さを合わせたりできるという利点があります。
また、Blender にしろ、 Unity にしろ、物理演算を行う時に正しい距離感でないと意図しない動きとなる場合があります。
(※具体的には重力の加速度定数 g を用いた計算式に影響します。当然ながら1kmの距離と1mの距離では物体が落ちるのにかかる時間は違う)

■Blender のスケールの種類と Unity のスケールの種類

Blender の3Dビュー、 Unity のシーンウィンドウ、両方とも目安となる網目(グリッド)を利用できます。
ちょっと見えずらいですが、Blender も Unity も濃い色と薄い色の二種類のグリッドが描画されています。

Blender の 3Dビューのグリッド

Unity の 3Dビューのグリッド

Blender の1区画(細分化されたグリッドとグリッドの間の距離)は標準では 1 BU (Blender Unit)と定義されており、変更可能です。
デフォルトでは 1BU は 1メートルに合わせてあります。
Unity もデフォルトでサイズ 1 = 1 メートルとなり、1 Unit と定義されます。
Unity では画面を拡大した時、拡大の度合いに合わせて、見やすいサイズのグリッドが自動生成されるようです。

■Blender のスケール定義、 Unity のスケール定義

Blender の定義を意識してメートルとしておくことで、頂点間の距離を表示したりできます。
以下、設定前と設定後の画像です。Blender では BU、メートル法、英単位(インペリアル) の単位があります。

BUからメートル法への設定変更

BUからメートル法への設定変更

メートル法に設定しておくと、位置など数値を入力するときに、単位(km:キロメートル、m:メートル、cm:センチメートル)をつけて指定することも可能になります。

 

■Blender でサイズが小さい or 大きいものを作るとき

グリッドを表示する範囲を広げるには

Blender ではデフォルトで 10×10のグリッドの線(ライン)が表示されています。また、10本のラインごとに太いグリッドが表示されています。
以下の画面上、項目①「ライン」を10から変更すると、グリッドの線が外側に増えて表示されます。
画面では51本のラインを表示するよう増やした状態です。これで奥行きのあるオブジェクトを作るときにわかりやすくなります。

太いグリッドを描画する間隔を変更するには

以下の画面上、項目③「細分化」を変更する。(デフォルト10)例えば 3 にすると、3本のグリッド線(ライン)ごとに太いグリッドで表示されます。

グリッドの間隔を変えるには

メートル法にかえたものの、1m単位のグリッドではデザインしにくいような大きなオブジェクト、小さなオブジェクトを作るときはグリッドの間隔など定義を変更できます。
項目②「拡大縮小」で例えば 「2.000」と設定すれば、 グリッドの間隔が2メートル単位になります。
個人的には小物を作るとき「0. 20」(= 20 cm 間隔)くらい、細分化「5」に設定してあげると 1 m 単位で太いグリッド線が引かれ、感覚で距離感がわかって良いかと思います。

Blenderでグリッドの設定

※グリッドの太い線と細い線の色を見えずらいのでそれぞれの変更方法がないのかちょっと検索してみましたが、海外のBlenderフォーラムなどで同じ質問をしている方がいて、2013年時点ではできないとの QA をやり取りしてました。(今でもできないっぽい)

ちなみに、太い線と細い線を分けずに一括での色変更は「ファイル」→「ユーザ設定」→「テーマ」→「3Dビュー」でできます。

■Blender ⇒ FBX ⇒ Unity 変換時の大きさ調整(スケール係数設定)

Blenderで作った 3D データを Unity で使うため、一旦 FBX 形式を経由して取り込みます。
(直接Blender( blendファイル形式 )を利用することもできますが、 カメラや照明などの設定も含まれるため、ちょっとファイルサイズは大きくなります。)

公式サイトに記載してあるとおり、blend形式をUnity にドラッグ&ドロップして取り込むときは裏側でBlender の FBX エクスポーター機能を使ってFBX 形式に変換して Unity 内に取り込んでいるので、手動でFBX 形式に変換するのと結果的に同じですが。

Unity にFBXファイルを取り込んだときスケールが狂っていたとしても、大きさを 0.1 倍で取り込むよう変えるなど、スケール調整は可能なので安心です。

でもスケールは初めから考慮しておかないと、オブジェクトごとに丁度良いサイズで取り込めるようにファイルごとにスケール係数をメモっておく必要があるかも。時間をおいて、Blender ⇒ FBX ⇒ Unity に取り込もうとしたときに、どのファイルがどれくらいのスケール係数を設定していたか忘れてしまった、なんてことになりそう・・・。

なお、メートル法でデフォルトなら、Blender→FBX で 1 倍、 FBX→Unity 取り込みで 1 倍でサイズをそのままに取り込めるようです。

Blender から FBX に出力するときのスケール係数(Scale Factor)の設定

1.Blender から FBX 形式にエクスポートする時

BlenderからFBXファイル出力するときのスケール係数設定

2.Unity で FBX 形式を取り込むとき

FBX をドラッグ&ドロップで取り込んだ後の、オブジェクトプロパティ以下の項目「Scale Factor」でスケール係数を設定できる。

Unityから3Dファイルを取り込むときのスケール係数の設定

 

非常に参考となったサイトさま: