ソフト間連携の座標系変換 - C4D編


モデルデータをやり取りする際の座標系の変換について。

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と使い分ける方がわかりやすい。