BlenderからUnityへ出力する際のメモ
Blenderで作ったモデルをFBXに出力する際のスケールや回転が、出力設定によって色々変わって混乱したのでメモ。
BlenderでApply Transformにチェックを入れないで出力した場合
- Blenderで出したモデルは頂点座標は 1.0/100.0 されて、スケールに100倍掛けられて出力される。
- 座標系の違いは、オブジェクトのRotationとして入ってくる
画で説明すると、
Blenderで、こういうモデルを
こういう出力で出すと、
Unityで読み込むとこんな感じになる。Scaleに100、Rotationに90度が入っている。もちろん見た目は一緒。
Apply Transformにチェックを入れて出力した場合
- 頂点座標は、そのまま。スケールもそのまま出てくる。
- 座標系の違いは、頂点座標が変換されて出力される。
画で説明すると、
Blenderで、さっきと同じモデルを
こういう出力で出すと、
Unityで読み込むとこんな感じになる。Scaleも1だし、Rotationも特に入っていない(頂点座標として吸収されている)。
- ※Apply Transformした場合でも、オブジェクトに設定しておいたSRTはそのまま出てくる(頂点座標として吸収されない)。
- ちなみにBlender上でオブジェクトに設定したSRT変換は、Object->Applyで頂点に適用できる
- 以下のApply Objectの項目を参照
User:Fade/Doc:2.6/Manual/3D interaction/Transform Control/Reset Object Transformations - BlenderWiki
- 結論。できるだけBlender上でのSRT変換は頂点座標に適用させて出力するのがUnity上での取り扱いが楽だと思う。
その他
- Blenderの1GridはUnityの1Grid、つまり1メートルである
- textureを元のテクスチャ位置と同じ相対パスに、あらかじめ置いておかないとUnity上のマテリアルにはちゃんと適用されない。