モデルデータをやり取りする際の座標系の変換について。
Cinema4Dの設定
FBXは軸方向の指定とZ軸の反転、OBJは軸の反転と入れ替えを指定して変換する。
ここではC4Dからエクスポートすることを前提としているが、インポートも基本同じ。
Y-up / 左手系への変換
・Unity
FBX : X180°回転 / 軸方向 Y
OBJ : X180°回転 / Z反転
Cinema4DとUnityは同じ座標系ながらX軸とZ軸のFowerd(正方向)が逆なためX方向に180°回転させつつOBJの場合は「Z軸を反転」、FBXはY軸を上にして書き出す。
ただしOBJのオブジェクト座標はUnityと揃うが、FBXは180°回転したままとなる。
Y-up / 右手系への変換
・ZBrush(プリセット設定あり)
FBX : X180°回転 / 軸方向 Y
OBJ : Z反転
GoZプラグインを使用すると正しく変換されるので安全。
・Metashape
FBX : X-90°回転 / 軸方向 Z
OBJ : XとZ軸を入替
Y-upのはずなのになぜかZを上に向ける必要がある。
・Substance 3D Painter / CloudCompare
FBX : X-90°回転 / 軸方向 Y
OBJ : XとZ軸を入替
Z-up / 左手系への変換
・UnrealEngine
FBX : X180°回転 / 軸方向 Y
OBJ : YとZ軸を入替
Cineware,Datasmithを使用したインポートが可能なのでそれが安全。
Z-up / 右手系への変換
・Blender(プリセット設定あり)
FBX : 軸方向 Y
OBJ : Z反転
・Twinmotion
FBX : 軸方向 Y
OBJ : YとZ軸を入替
・RealityCapture
FBX : Y90°回転 / 軸方向 Y もしくは Y180°回転 / 軸方向 Z
OBJ : YとZ軸を入替
FBXは軸方向をZにしてRealityCaptureでインポートすると上下が逆さになってしまうため、Y軸回転させてからY軸基準でエクスポートする。
・Meshmixer
FBX : 未対応
OBJ : YとZ軸を入替
基本的な考え方としてはY-upからZ-upへの変換は「YとZ軸を入替」を、左手系と右手系の変換は「XとZ軸を入替」を行う。
Fowerdの向きの違いよっては軸の反転を行う。
FBXでは軸の入替はできないので回転で対応する。
個人的にはソフト間を行き来するのはOBJ、オーサリングに使用するのはFBXと使い分ける方がわかりやすい。