ゆっくりとMayaを勉強していますが、あらためてMayaで書き出したFBXファイルをUnityにインポートした際のスケールのルールについて確認しようと思います。
Maya | Unity |
---|---|
![]() |
![]() |
上図のように可能であればMayaの1
とUnityの1
を同じサイズにできたら、Maya Unity間のワークフローとしてシンプルで良いなと思うんですが、デフォルトでは同じではありません。
Mayaの単位1は1センチメートル
、Unityは1メートル
です。
この状態だとMaya側で100倍
のサイズで作らなければUnityの1倍と一致しません。
Mayaの作業単位を変更する
Mayaのデフォルト状態では作業単位がセンチメートルになっています。 この部分をメートルに変更すると、先ほどスケール1で作成したキューブは1辺1メートルのサイズになります。
プリファレンス
-> 設定
-> 作業単位
でセンチメートルからメートルに変更することが出来ます。
この状態でスケール1のキューブを作成すると、Maya上では1辺1メートルのサイズになります。
このキューブをUnity側へインポートすると、上図のように一見1メートルのキューブが表示されます。
成功かと思われますが、、、
Unityのインスペクタのスケール値を見ると0.01
となってしまい、結果1辺100m
のキューブが作成されたことになってしまいます。
※スケール0.01のままで使用することはせず1に戻してしまうため
ここまでをまとめるとこのような図になります。
Maya作業単位 | Mayaスケール | Unityインスペクタ上の スケール |
Unity 実際のスケール |
---|---|---|---|
センチメートル | 1 | 1 | 1センチメートル |
メートル | 1 | 0.01 | 100メートル |
もう少し粘ってFBXで書き出す際の設定を見直してみます。
FBX書き出しオプションで対策
FBX書き出しをする際、スケール周りの設定があります。
ファイルタイプ固有のオプション
-> 詳細オプション
-> 単位
です。
デフォルト自動
にチェックが入っています。
自動は作業単位で設定した単位が代入されます。
作業単位をセンチメートルにしていればセンチメートルが設定されます。
この自動のチェックボックスを外し、変換先のファイル単位
をメートル
からセンチメートルに
変更します。
すると、Maya上での1が、Unity上での1メートルとして扱うことが可能になります。
インスペクタ上もスケール1です。
まとめ
各設定と結果を表にまとめるとこうなります。
Maya 作業単位 |
FBX変換先の ファイル単位 |
Maya スケール |
Unityインスペクタ 上のスケール |
Unity 実際のスケール |
File Scale |
---|---|---|---|---|---|
センチメートル | 自動(センチメートル) | 1 | 1 | 1センチメートル | 0.01 |
センチメートル | メートル | 1 | 0.01 | 1メートル | 1 |
メートル | 自動(メートル) | 1 | 0.01 | 100メートル | 1 |
メートル | センチメートル | 1 | 1 | 1メートル | 0.01 |
※表にUnityにインポートしたFBXのFile Scale値も資料として追加しています。
以下の2点を設定すればMaya、Unityのスケール1のサイズを合わせることができ、またUnityインスペクタ上のスケールもデフォルト1にできそうです。
- Maya作業単位をメートルに設定
- FBX書き出し時変換先ファイル単位をセンチメートルに設定
ただしMayaのデフォルト作業単位がセンチメートルなので、それをベースに開発が進んでいるのであれば素直にMayaではスケール1を1センチメートルと考えて作るのが良いのだろうと思います。
環境
- Unity2017.3.1f1
- Maya2015