概要
BlenderとUnityは座標系が異なるため向きが合わないため、どこかでその差異を解消しなければなりません。今回はそれをBlenderで吸収する方法をご紹介します。
例
例えば、下図はBlenderでシーンファイルを新規に作成して Monkey
を設置したものです。ワールド空間の原点にMonkey
の中心点が位置しています。Location 0,0,0でRotation 0,0,0です。

これをFBXに出力します。
- Scale 1.00
- Apply Scalings: FBX Units Scale
- Forward: -Z Forward
- Up: Y Up

出力したFBXをUnityに読み込み、当該モデルを確認すると、RotationのXに-89.98
と値が入っています。


この-89.98
をゼロにするというのがこの記事の焦点です。
単純なケース
Object Mode
で対象のオブジェクトをX軸の正に90度回転します。

次にEdit Mode
で対象のすべての頂点をX軸の負に90度回転します。

その状態でFBX形式で出力してUnityに読み込みます。
下図が読み込んだ結果です。冒頭で紹介した例とは違いRotationの値がゼロになっていることがわかります。


オプション – Z軸
UnityのZ軸の負の方向に正面を向けたい場合はBlenderの対象オブジェクトの頂点をEdit Mode
でZ軸に180度回転します。

下図はその状態で出力したFBXファイルを読み込んだ結果です。

もっと複雑なケース
前述のケースは1つのオブジェクトでしたが、今度は複数のオブジェクトがある場合の対処法です。下図はMonkey
と台形のオブジェクトがあるシーンです。

各々のオブジェクトでX軸の正に90度回転すると下図のようになります。これは求める結果ではありません。

複数を選択してから回転します。


位置が原点から離れているため修正します。Emptyオブジェクトを作り、それの子どもとして猿と土台部分を関連づけ、親だけを操作して位置合わせをします。
土台部分の底面をEdit Mode
で選択します。

Cursor to Selected
を選択します。

Plain Axes
を選択してEmptyオブジェクトを作成します。

Emptyオブジェクトと猿と土台で親子関係を定義します。

次にCursor
をワールド空間の原点に移動します。ビューポートでShift + S
を押してメニューを開きCursor to World Origin
を選択します。

Emptyオブジェクトをワールド空間の原点に移動させるために、ビューポートでShift + S
を押してメニューを表示してSelection to Cursor
を選択します。




下図は作業が終了した時の様子です。猿はLocation X,Y,Zが0,0,0、Rotation X, Y, Zが90, 0, 0で、原点位置はワールド空間の原点に位置しています。土台も同様です。

FBXで出力してUnityに表示した結果が下図です。土台、猿の両方ともPosition, Rotationの各値がゼロになっていることがわかります。

