こんにちは、エンジニアのオオバです。
Mayaで書き出したFBXファイルを
Unityにインポートしたときのスケール
について確認していきます。
環境 | スケール |
---|---|
Maya | |
Unity |
Mayaの1
とUnityの1
を同じサイズにできたら、
Maya <-> Unity間のワークフローがシンプルになります。
悲報です。
デフォルト同じではありません。
Mayaの1とUnityの1をあわせる方法 を解説します。
Mayaをメートル、FBXをセンチメートルにする
結論を簡単にまとめます。
- Mayaの作業単位をメートルに設定
- FBX書き出しをセンチメートルに設定
基本的にMaya側の設定だけで
対応可能です。
デフォルトセンチメートルなのをメートルへ、
FBX書き出しの設定をセンチメートルにするだけです。
では、詳細を解説していきます。
👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!
Unityの1はMayaの100倍
結論Maya側で100倍
のサイズとして
作らなければUnityの1倍と一致しません。
デフォルト状態を確認しましょう。
- Mayaの単位1は 1センチメートル
- Unityの単位1は 1メートル
このようにUnityの1はMayaの100なのです。
Mayaの作業単位をメートルに変更する
Mayaのデフォルト状態では
作業単位がセンチメートルになっています。
この部分をメートルに変更すると、
先ほどスケール1で作成したキューブは
1辺1メートルのサイズになります。
プリファレンス > 設定 > 作業単位 > リニア
で
センチメートルからメートルに変更 します。
この状態でスケール1のキューブを作成すると、
Maya上では1辺1メートルのサイズになります。
このキューブをUnity側にインポートすると、
一見1メートルのキューブが表示されますが、
これは失敗です。
Mayaをメートル化するとUnityのスケールが1/100になる
結論Mayaの単位をメートルにすると、
Unityのスケールが1/100になります。
このようにUnityのインスペクタのスケールが0.01
です。
結果1辺100m
のキューブが作成されたことになります。
ここまでをまとめるとこのような図になります。
Maya作業単位 | Mayaスケール | Unityインスペクタ上のスケール | Unity実際のスケール |
---|---|---|---|
センチメートル | 1 | 1 | 1センチメートル |
メートル | 1 | 0.01 | 100メートル |
FBXで書き出す際の設定を見直します。
FBX書き出しオプションで成功
FBX書き出しをする際、
スケール周りの設定があります。
ファイルタイプ固有のオプション > 詳細オプション > 単位
です。
デフォルト自動
にチェックが入っています。
自動は作業単位の設定が使われます。
仮に作業単位をセンチメートルにしていると
センチメートルが設定されます。
この自動のチェックボックスを外し、
変換先のファイル単位
を
メートル
からセンチメートルに
変更します。
すると成功します!
Maya上での1はUnity上での1(メートル)として
扱うことができます。
インスペクタ上もスケール1です。
まとめ : Unityのスケール1とMayaで書き出したFBXのスケール1を一致できた
記事の内容を簡単にまとめます。
- Maya作業単位をメートルに設定
- FBX書き出し時変換先ファイル単位をセンチメートルに設定
以上の設定をすると
UnityとMayaのスケールが一致します。
各設定と結果のまとめはコチラです。
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 |
ただしMayaのデフォルト作業単位はセンチメートルです。
それをベースに開発が進んでいるのであれば
素直にMayaはスケール1を1センチメートルとして
作る方が良いかもしれません。
この記事が気に入ったらフォローしよう
- Unity2017.3.1f1
- Maya2015