LoginSignup
6
4

More than 1 year has passed since last update.

[UE4]メッシュインポート時の軸変換問題について

Posted at

Mayaで作ったデータをFBXでExportし、UE4にImportするフローをよく使っています。
その時に遭遇した問題点と解決策をまとめました。
元はUE4.24で調べたことなんですが、たぶんUE4.26でも同じ状態だと思います。

軸変換問題とは?

UE4とMayaでXYZ軸がどっちを向いているか、右手座標系/左手座標系が異なっています。

参考

上向き 正面 座標系
Maya Y Z 右手座標系
UE4 Z X 左手座標系

Mayaで作成したモデルデータを、UE4へインポートした時、デフォルトのオプションだと上向きの違いは変換をしてくれます。(Y-up → Z-up)
しかし、ZとYを入れ替えるだけで正面の向きは変換してくれません。そのため、Y-frontとして扱うことになります。

そうすると、以下のような問題が起きます

  • ACharacterなどで使われている、MeshComponentにSkeletalMeshを指定すると横を向く
    • 大抵の場合、Meshを270度(-90度)回転して回避していると思います
  • SkeletalMeshのソケットの向きがX軸で90度回ってしまう
    • その結果、アタッチしたときに意図しない方向を向くことになります
    • データ側でアタッチ用ボーン/ソケットに90度の回転を入れて回避したこともあります

解決策

FBXインポートオプションでForce Front XAxisがあるので、これを有効にすることです。
これを行えば、MeshComponentの補正や、前述のデータ調整による回避策は不要になります。

あくまで、Mayaで出力したFBXの場合なので、他のDCCツールは座標系を確認して要/不要を判断してください。

新規FBXをインポートする場合

インポートダイアログの設定(Miscellaneous>Force Front XAxis)を有効にする。
FBXImport.png

既にインポート済みのアセットの場合

アセットをダブルクリックで開いて、ペルソナのアセット詳細>Import Settings>その他>Force Front XAxisを有効にする。
その後、再インポートを行う。
FBXImportSetting.png

注意点&FAQ

既存データに適用した場合の回転値について

既存データを変更すると、モデルの向きが90度回ります。そのため、

  • 配置したActorの回転値を修正
  • ACharacter派生などで使っているMeshComponentで指定した回転値の修正

など、回転値に関する修正が必要になります

スケルタルメッシュとアニメーション

スケルタルメッシュとアニメーションは密接に結びついているため、これらの片方だけForce Front XAxisを有効にすると、表示が崩れます。

その場合でも、Force Front XAxisを有効か無効のどちらかに統一すれば直ります。
大規模な開発の場合、移行作業はスケジュールを調整してまとめて行うことをお勧めします。

グレイマン(SK_Mannequin)はY-frontだけど…

混乱の一因でもありました。グレイマンがY-frontになっているので、それで問題ない。と思っていたのですが、この元データはY-upではないようです。
そのため、Jointの向きはデータ作成者の意図通りになっており、アタッチなども問題なく行えます。

なお、ThirdPersonCharacterで問題なく使えているのは、MeshConponentに270度の回転が入っているためです。

MayaとUE4で軸の向きが違う

Force Front XAxisの対応をした後でも、以下の画像のようにMayaとUE4でJointの軸の向きが異なっているように見えます。
JointAxis.png
結論から言うと問題ありません。
ただ、

Maya UE4
UP Y(緑) Z(青)
FRONT Z(青) X(赤)
SIDE X(赤) Y(緑)

と対応を見てみると、異なるのはSIDEのみです。これは、右手座標系、左手座標系の差異からくるもので、問題ありません。

あとがき

会社的にも技術情報の共有が推奨される事になりました。
他にもUE4の一般的な調査項目のまとめがストックされているので、暇を見て記事を書いていこうと思います。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4