FBXファイルの拡張オプション「軸変換」のUp軸について書いてみます。
3Dソフトは座標系の違いによってシーンの上方向をY軸(Y-Up)であらわすソフトと、Z軸(Z-Up)であらわす2種類のソフトが存在します。Y-Upの代表的な3DソフトはMaya、modo、LightWave、Cinema 4Dです。Z-Upの代表的な3Dソフトは3ds Maxです。
FBX形式を使用してデータをやり取りする場合、Y-Upのソフト間では軸が問題になることは少ないですが、Z-Upの3ds MaxからFBXを出力する場合は注意が必要です。
FBXの軸変換オプション
3ds MaxからFBXファイルを出力する場合、拡張オプションに「軸変換」というオプションがあり、Y-UpとZ-Upを指定することができます。
しかし、残念なことに「軸変換」はトランスフォームに-90°を入れて回転するだけで、インポート先のソフトにあわせて軸を変換(回転をフリーズ)しません。軸変換でY-UpやZ-Up変更しても、FBX出力したソフトのUp軸が維持されます。
例えば下の画像は3ds MaxからY-Upで出力したFBXをMayaに読み込んだ物です。見かけのUp方向はあってますがトランスフォームの回転に-90が入っており、オブジェクトの軸はZ-Upのままです。
Mayaでは「トランスフォームのフリーズ」を使用すると回転値をフリーズして、Y-Upにすることができます。
3ds MaxからY-UpでFBX出力する方法
FBXのインポート先でMayaのようにトランスフォームをフリーズできる場合は問題ありませんが、FBX出力時にトランスフォームを適切なUp軸にしたい場合があります。
3ds MaxからY-UpでFBX出力したい場合は「基点のみに影響」をONにして基点を回転します。
modoの軸変換
modoでは読み込んだFBXの軸変換に2つの方法が使用されています。
Y-UpのFBXファイルを読み込んだ場合、トランスフォームアイテムのPreRotationが追加されて-90°回転した状態になります。
Z-UpのFBXファイルを読み込んだ場合、FbxUpAxisConvertという名称のロケータが追加されて-90°回転した状態になります。
Y-UpのソフトからZ-Upで出力したFBXの場合、FbxUpAxisConvertとPreRotationが追加され両方の回転に値が入ります。
modoでトランスフォームの「フリーズ」を使用すると、回転を0にして軸をY-Upにすることができます。