他の3DツールであるMAYAやUnityを使用していた主が。
Unreal Engineを触った際に、戸惑いました。
他のツールと異なる表記と回転軸の方向に。
そこで。今回は、Unreal Engineの回転軸について深堀したことを綴ります。
Unreal Engineの回転軸の正体
Unreal Engineではオイラー角を採用しています。
オイラー角は、3次元空間で回転姿勢を示す手法の1つで、飛行機の姿勢を示す際に用いられています。
X軸回転を「ロール」、Y軸回転を「ピッチ」、Z軸回転を「ヨー」と呼びます。
そしてオイラー角の角度表現では、特定の順序で回転軸を表記していくことで角度を示します。
これは、表記する軸の順番が異なると、結果が変わってしまうためです。
一般的にX軸回転「ロール」→Y軸回転「ピッチ」→Z軸回転を「ヨー」の順番で表記します。
加えて他の3Dツールと決定的に違うことは、縦軸がZ軸であるであることです。
3Dツールのワールド空間は、縦Z軸&前後X軸と縦Y軸&前後Z軸があります。
3D代表的ツールであるMAYAやUnityは縦Y軸&前後Z軸です。
一方、Unreal Engineは縦Z軸&前後X軸です。
そのため、他の3Dツールと同じ感覚で回転軸に数値入力すると、意図しない挙動をします。
Unreal Engineの回転軸の問題点
オイラー角を採用しているUnreal Engineには3つの問題点があります。
角度表現の複雑化
オイラー角では、1つの向きを示す方法が複数存在します。
そのため、数値上は異なるのに結果が同じになるというケースが存在します。
一定条件における回転軸の重複
オイラー角では、Y軸回転「ピッチ」を90度回転させるとX軸回転「ロール」とZ軸回転を「ヨー」が重なってしまいます。すると、本来回転軸が3つあるところが1つ少なくなってしまいます。
この現象をジンバルロックと呼びます。
他の3Dツールとの互換性
Unreal Engineの違和感の正体はここにあります。
MAYAやUnityでは縦軸がY軸設定になっている場合が多くあります。そのため、出力時の他の3DツールとUnreal Engineではモデルの軸設定が異なり意図しない方向に向いてしまう…。
という問題が発生します。
Unreal Engineの回転軸の問題点の解決方法
Unreal Engineの回転軸の問題点に対し、主は以下の対策を行います。
角度入力順序の統一化
ロー・ピッチ・ヨー回転において数値入力の優先順位を統一します。
この数値を統一することで、複数人でデータを扱った際にデータが複雑化する問題を防ぐことができます。
3D素材の出力及びインポート設定の統一化
Unreal Engineでは、他のツールで作成したモデルデータのインポート際に、軸の方向を設定する機能が存在します。これらの設定を統一することで、モデルデータ毎の軸の方向を統一させることができます。
上記の他にも、Unreal Engineの回転軸の問題点解決方法は存在するかと思います。
UEを触りながら気づいたことは随時追記していきます。
コメント