3D モデルの取り込み:スケール、回転、消えた texture
取り込んだモデルが小さい・回転している・真っ白なのはなぜ?
壊れたファイルではなく、三つのプログラムの食い違いです。スケールは Transform ではなく Model タブの Convert Units で直し、−90 度の回転は Bake Axis Conversion か、書き出す前に Blender で回転を apply して直します。色は texture を入れてから Extract Materials を押せば戻ります。ピンクは texture ではなく shader が無い状態です。
取り込んだモデルが百分の一の大きさで、うつ伏せに倒れていて、真っ白だとしても、それは壊れたファイルではありません。三つの別々のプログラムが、一メートルとは何か、どちらが上か、texture はどこにあるかで食い違っているだけです。そしてその食い違いはどれも、シーンでオブジェクトを拡大縮小するのではなく、importer で一度直せば済みます。
小さすぎる、または大きすぎる
Unity はメートルで測ります。Blender もメートルですが、FBX を既定で 0.01 のスケールで書き出すため、二メートルのキャラクターが二センチで届きます。3ds Max はセンチメートルで動くので、同じキャラクターを百倍の大きさで送ってきます。
- 1
Project ウィンドウでモデルを選びます。このとき Inspector に出ているのはオブジェクトではなく importer で、タブは Model、Rig、Animation、Materials と並んでいます。
- 2
Model タブで Convert Units にチェックを入れます。Unity はファイルが宣言している単位を読んで変換するので、自分で数値を打ち込むよりずっと高い確率で正しくなります。
- 3
それでも合わなければ、小さく入った Blender のファイルなら Scale Factor を 100 に、大きく入った Max のファイルなら 0.01 にして Apply を押します。
うつ伏せに倒れている
Blender は Z を上とし、Unity は Y を上とします。書き出し側がその回転を行うはずなのですが、行われないと X 軸に −90 度回転したキャラクターが手に入ります。
いちばん良い直し方は Blender 側です。書き出す前にオブジェクトへ回転とスケールを apply し(Ctrl+A)、FBX の書き出しパネルで Forward を −Z、Up を Y にします。
書き出し直せない場合は Unity 側で。Model タブの Bake Axis Conversion にチェックを入れると、回転は Transform に残らず mesh に焼き込まれます。
避けたい回避策:90 度回した空の親オブジェクトにモデルを入れる方法です。何かが transform.forward を読むまでは動きますが、読んだ瞬間にキャラクターは横向きに歩き出します。
白、灰色、あるいはピンク
FBX は texture を運びません。運ぶのは material の名前と、書き出したマシンに存在していた画像ファイルへのパスだけです。Unity は名前を取り込み、画像を見つけられず、既定の白い material を渡してきます。
- 1
texture のファイルは自分でプロジェクトに、モデルの隣のフォルダへコピーしてください。
- 2
モデルを選び、Materials タブを開き、Material Creation Mode を Standard にして を押します。これで編集できる本物の material asset が手に入ります。
- 3
texture をそれぞれ正しい枠へドラッグします。色は Base Map、法線は Normal Map へ。normal map として設定されていないものは Unity が直すか尋ねてくるので、はいを選んでください。
.blend ファイルについて
Unity は .blend を直接取り込めますが、変換のために裏で Blender を起動するだけなので、プロジェクトの全員が互換性のあるバージョンの Blender を入れておく必要があります。代わりに FBX を書き出してそれをコミットしてください。取り込み結果は同じで、Blender を一度も見たことのないマシンでもプロジェクトが開きます。