BlenderでFBXをエクスポートしてUnityに取り込む方法です。
何も対処をせずに取り込むとスケール値や回転値がおかしくなるので、その問題点と修正方法を踏まえて解説します。
Unity 2018.2.0
Blender 2.79b
手っ取り早く手順だけ知りたい方
手っ取り早く手順だけ知りたい方は、別の記事にまとめていますので下記の記事をご覧ください。
問題点
まずBlenderで、原点にオブジェクトを生成します。
そして次のような設定でFBXをエクスポートします。
これをUnityに取り込んでインスタンス化したものが下記です。
スケール値と回転値に変な値が入っていることがわかります。
スケール値
スケールの問題は、UnityとBlenderで単位の取り扱いが違うことが原因です。
下記のようにExport FBXのApply ScalingsをFBX Allにすることで解消できます。
Unityにインポートするとスケール値が正常になっていることが確認できます。
ちなみにこの原因に関しては深入りしてもどうしようもないのでこの程度にとどめますが、
詳しく知りたい方は下記の記事を参照してください。
回転がおかしくなる理由
回転がおかしくなる理由は少し複雑です。
まずUnityとBlenderでは座標系が異なります。
UnityはY軸を上方向とする左手座標系なのに対して、BlenderはZ軸を上方向とする右手座標系です。
そのため、BlenderからUnityにモデルを持って行く際には回転させて軸を合わせてくれるのですが、
この結果として回転値が入ってしまいます。
回転値を修正する
さて前節の通り、普通にUnityに取り込むと-90度の回転が入ってしまいます。
これを打ち消すために、まずはオブジェクトモードでルートオブジェクトのX軸の回転値に90を入力します。
このままだとモデルが横を向いてしまっているので、
次に編集モードでモデルが上を向くように頂点座標自体を回転させます。
編集モードで全頂点を選択後、Tools > Transform > Rotateで適当に決定して、
ツールシェルフ下部からAngle = -90°、Constraint AxisのXにチェックを付けます。
これをUnityにインポートすると、回転値も正常になったことが確認できます。
Z軸正方向を奥にする
さてここまででスケール値と回転値を修正できましたが、
UnityはZ軸正方向を奥とするのに対して、取り込んだモデルはZ軸正方向を手前としています。
場合によってはこのあたりの修正も必要になってくるので、手順を解説します。
前節の状態から選択モードで全頂点を選択後、Tools > Transform > Rotateで適当に決定して、
ツールシェルフ下部からAngle = 180°、Constraint AxisのZにチェックを付けます
これをUnityにインポートすると、Z軸の負の方向を手前としたモデルがインポートできます。
アドオンもある
これらの処理を行うアドオンも作られているようなので使ってみるのもいいかもしれません。
https://forum.unity.com/threads/blender-unity-rotation-fix.181870/
(細かい部分はプロジェクトごとにカスタムすることにはなりそうですが)
参考サイト
https://forum.unity.com/threads/blender-unity-rotation-fix.181870/