tanaka's Programming Memo

プログラミングについてのメモ。

MAYAのマテリアルやテクスチャーをUnityに読み込む

(元の記事のSketchfabの部分はこちらに分割しました。 2018/2/4)

Unity2017.2以降から、FBXにembedしたMAYAのマテリアルやテクスチャをそのまま読み込めるようになったということでやってみました。

モデルは、Sketchfabで見つけた以下のキャラクターです。ライセンスはCreative Commons — Attribution 4.0 International — CC BY 4.0です。

sketchfab.com

情報ソースはAREA JAPANさんの以下のウェビナーです。

youtu.be

目次

モデルをMAYAに読み込む

MAYAを起動したら、まずは単位を合わせておきます。

  • ウィンドウメニューから、設定/プリファレンス -> プリファレンスを選択します

f:id:am1tanaka:20180203225843p:plain

  • 設定を選んだら、以下を設定します
    • リニアを"メートル"
    • アニメーションを作成する場合は、時間を"NTSCフィールド(60fps)"にしておくとよいかと思います(環境に合わせて調整してください)
  • 以上設定したら"保存"ボタンをクリックします

f:id:am1tanaka:20180203230035p:plain

以上設定したら、Unityに読み込みたいモデルをMAYAで開いてください。手元に使えるデータがない場合は、こちらの記事に、Sketchfabからモデルを探してMAYAに読み込む手順をまとめてあります。

FBXに出力する

MAYAでFBXファイルを作成します。FBXは、モーションキャプチャーのデータを記録するために作られたフォーマットで、モデルデータの他、アニメーションやカメラ、ライトの情報などを含めることができます。多くのグラフィックツールやゲームエンジンが対応している汎用的なフォーマットです。

  • ファイルメニューから、すべてを書き出しを選びます(一部のオブジェクトだけ出力したい場合は、書き出したいオブジェクトを選択してから、選択項目の書き出しを選びます)

f:id:am1tanaka:20180203231714p:plain

  • ファイルの種類をFBX exportにします

f:id:am1tanaka:20180203232917p:plain

  • テクスチャを含める場合は、組み込みメディアのチェックを入れます

f:id:am1tanaka:20180204115001p:plain

  • その他、Unityに持っていく場合は以下はチェックしておいた方がよさそうです
    • ジオメトリの三角化
    • アニメーションがある場合
      • アニメーションにチェック
      • アニメーションをベイク処理もやっておいた方がよいようです(必要に応じて)
      • 変形したモデル、スキン、ブレンドシェイプにチェック
    • カメラやライトは必要に応じて

以上設定できたら、ファイル名を入力して、すべて書き出しボタンを押します。

f:id:am1tanaka:20180204115138p:plain

これで書き出したFBXファイルにマテリアルやテクスチャーを組み込みました。このファイルだけで、モデル以外のデータもUnityに読み込ませることができます。

f:id:am1tanaka:20180203233139p:plain

UnityでFBXファイルを開く

Unityにモデルを読み込んで、テクスチャーとマテリアルを取り出します。

  • Unity2017.2以降を起動して、モデルを使いたいプロジェクトを新規で作成するか、開きます
  • 書き出したFBXファイルを、Unityのプロジェクトビューにドラッグ&ドロップします

f:id:am1tanaka:20180203234128p:plain

この段階ではまだマテリアルは設定されていません。Inspectorで設定します。

f:id:am1tanaka:20180203234152p:plain

  • Projectビューから読み込んだモデルを選択します

f:id:am1tanaka:20180203234526p:plain

  • Inspectorビューで、Materialsを選択します(Unity2017.2で追加されたボタンです)

f:id:am1tanaka:20180203234647p:plain

  • Import Materialsにチェックが入っていることと、Use Embedded Materialsが選択されていることを確認します

f:id:am1tanaka:20180204115359p:plain

  • テクスチャーを書き出すために、Extract Texturesボタンをクリックします

f:id:am1tanaka:20180204115430p:plain

  • Texturesフォルダーに書き出しましょう。フォルダーがない場合は、新しいフォルダーボタンでフォルダーを作成して、Texturesという名前にして、選択したらフォルダーの選択ボタンを押します

f:id:am1tanaka:20180204005228p:plain

  • 同様に、マテリアルを書き出すために、Extract Materialsボタンをクリックします
  • Materialsフォルダーを選択して(ない場合は、新規に作成して)、フォルダーの選択ボタンを押します

f:id:am1tanaka:20180203235111p:plain

以上でマテリアルとテクスチャーを指定のフォルダーに取り出して、モデルに設定されました。

f:id:am1tanaka:20180203235234p:plain

シーンに配置してみましょう。

  • Projectビューから、読み込んだモデルをドラッグして、Hierarchyビューか、Sceneビューにドロップします

f:id:am1tanaka:20180203235440p:plain

これでシーンに配置できました。

モデルの大きさを調整する

Unityにモデルを持ってくる場合、モデルの大きさに気を付けてください。例えば今回のモデルの横にCubeを置いて大きさを比べてみたところ、10.8mぐらいあります!

f:id:am1tanaka:20180203235921p:plain

Unityでは、落下などの動きがメートル単位を前提に設定されています。150cmのものであれば、大きさを1.5にした時に現実世界と同じように動きます。これを無視して開発すると、当たり判定や落下などで謎の挙動に悩まされることになります。本来は、モデルを作る際に、ゲームの単位に合わせて作るのがセオリーですが、Unityに読み込む段階で調整することもできますので、ここではその方法で調整します。

キャラクターを145cm(1.45m)にします。

1.45m / 10.8m = 0.134ですから、モデルを0.134倍すれば目的のサイズになります。

  • Projectビューからモデルを選択します
  • Inspectorビューで、Modelに切り替えたら、以下を設定します
    • Scale Factorに0.134を入力
    • カメラとライトはキャラには不要な場合が多いので、チェックを外しておいた方がよいでしょう
    • Applyボタンをクリックします

f:id:am1tanaka:20180204001230p:plain

以上で、キャラクターのサイズが調整できました。

f:id:am1tanaka:20180204001633p:plain

まとめ

  • MAYAで書き出すときに"組み込みメディア"にチェックする
  • UnityにFBXを読み込んだら、Inspectorでマテリアルとテクスチャーの展開を手動で行う

以上の2点を押さえておけば基本的にはオッケーです(テクスチャーやマテリアルを組み込むメニューが"組み込みメディア"というのはちょっと分かりづらかったです・・・)。

これまでは事前にテクスチャーをTexturesフォルダーに入れておく必要があったり、マテリアルが勝手な場所に展開されていました。Unity2017.2から追加されたMaterialインポートの機能で、モデルを読み込んだあとに、テクスチャーとマテリアルを好きな場所に展開できるようになり、手順的にも、管理的にも随分楽になりました。

ぜひ活用してください。

ライセンス

参考URL