渋谷ほととぎす通信

「Unityをわかりやすく」初心者のためのゲーム作りブログ

Unityのスケール1とMaya FBXのスケール1を一致させる方法

Unityのスケール1とMaya FBXのスケール1を一致させる方法

こんにちは、エンジニアのオオバです。

Mayaで書き出したFBXファイルを
Unityにインポートしたときのスケール
について確認していきます。

環境スケール
Maya
Unityのスケール1とMaya FBXのスケール1を一致させる方法_0
Unity
Unityのスケール1とMaya FBXのスケール1を一致させる方法_1

Mayaの1Unityの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メートルのサイズになります。

Unityのスケール1とMaya FBXのスケール1を一致させる方法_2

プリファレンス > 設定 > 作業単位 > リニア
センチメートルからメートルに変更 します。

この状態でスケール1のキューブを作成すると、
Maya上では1辺1メートルのサイズになります。

Unityのスケール1とMaya FBXのスケール1を一致させる方法_3

このキューブをUnity側にインポートすると、
一見1メートルのキューブが表示されますが、
これは失敗です。

Mayaをメートル化するとUnityのスケールが1/100になる

結論Mayaの単位をメートルにすると、
Unityのスケールが1/100になります。

Unityのスケール1とMaya FBXのスケール1を一致させる方法_4

このようにUnityのインスペクタのスケールが0.01です。
結果1辺100mのキューブが作成されたことになります。

ここまでをまとめるとこのような図になります。

Maya作業単位MayaスケールUnityインスペクタ上のスケールUnity実際のスケール
センチメートル111センチメートル
メートル10.01100メートル

FBXで書き出す際の設定を見直します。

FBX書き出しオプションで成功

Unityのスケール1とMaya FBXのスケール1を一致させる方法_5

FBX書き出しをする際、
スケール周りの設定があります。

ファイルタイプ固有のオプション > 詳細オプション > 単位です。

デフォルト自動にチェックが入っています。
自動は作業単位の設定が使われます。

仮に作業単位をセンチメートルにしていると
センチメートルが設定されます。

この自動のチェックボックスを外し、
変換先のファイル単位
メートルからセンチメートルに変更します。

すると成功します!

Unityのスケール1とMaya FBXのスケール1を一致させる方法_6

Maya上での1はUnity上での1(メートル)として
扱うことができます。

Unityのスケール1とMaya FBXのスケール1を一致させる方法_7

インスペクタ上もスケール1です。

まとめ : Unityのスケール1とMayaで書き出したFBXのスケール1を一致できた

Unityのスケール1とMaya FBXのスケール1を一致させる方法_8

記事の内容を簡単にまとめます。

  • Maya作業単位をメートルに設定
  • FBX書き出し時変換先ファイル単位をセンチメートルに設定

以上の設定をすると
UnityとMayaのスケールが一致します。

各設定と結果のまとめはコチラです。

Maya作業単位FBX変換先のファイル単位MayaスケールUnityインスペクタ上のスケールUnity実際のスケールFile Scale
センチメートル自動(センチメートル)111センチメートル0.01
センチメートルメートル10.011メートル1
メートル自動(メートル)10.01100メートル1
メートルセンチメートル111メートル0.01
※表にUnityにインポートしたFBXのFile Scale値も資料として追加しています。

ただしMayaのデフォルト作業単位はセンチメートルです。

それをベースに開発が進んでいるのであれば
素直にMayaはスケール1を1センチメートルとして
作る方が良いかもしれません。

オススメ記事
検証環境
  • Unity2017.3.1f1
  • Maya2015