Maya&SubstancePainterからUEへオブジェクトをインポートする一番楽な方法<スタティックメッシュ編>
検証バージョン
Maya 2024.2
Substance Painter 9.1.2
Unreal Engine 5.3.2
こういう人向け
ゲーム用というよりかは映像用でレンダリングのためにUEを使ってる人が参考になると思います。
サブスタでテクスチャを必ず貼る必要があります。
Maya側ではキレイにレンダリングできません。
もっと良いやり方を知っている人は教えてくださるとありがたいです
Mayaでモデル作成
まずはMayaでモデルを作ります。
左のアウトライナでオブジェクト名は変えておいてください。
UEは1マスが1mなのでリアルスケールで作っておきましょう。
次にマテリアルを割り当てます。
ArnoldのマテリアルはUE側で認識できないのでBlinnとかを使うようにしてください。他にLambertやPhongなどMaya標準のマテリアルなら使えます。
マテリアル名は被らなければOKですが、ここの名前がUE内でのマテリアル名になります。
パラメータを変更してもUEには持っていかないので触らなくていいです。
最後にUV展開します。
今回はサブスタに説明用かつサブスタに持ち込むので自動展開してますが、自分で考えて開いたほうがキレイになるのでなるべく自分の手で開きましょう。
説明用にUDIMにしてあります。
ここまでできたら書き出しに行きます。
FBX exportで、データ容量を気にしなければチェックは全部付いたままで良いし、ヒストリもそのままでいいです。
SubstancePainterでテクスチャ作成
法線マップ形式はDirectXに変えてください。
UDIMを使っている場合はUVタイルのワークフローを使用にチェックを入れてください。
メッシュマップのベイクをします。
とりあえず初期設定です。
ペイントします。
説明用に良さそうなマテリアルがあったのでそのまま貼りました(Denim Rivet)
テクスチャの書き出しをします。
出力テンプレートはUnreal Engine 4 (Packed)を使います。
UE5でも問題なく使えます。
書き出したものです。
色のBaseColor、凹凸のNormal、粗さとかのOcclusionRoughnessMetallic(以下ORMと略します)の3種が書き出せました。
書き出し設定次第では発光のEmissive、透明度のOpacityが使えます。
Mayaでテクスチャインポート
書き出したテクスチャをモデルに貼っていきます。ここではBlinnに貼ります。
カラー(color)にBaseColor
バンプマッピング(bump)にNormal
スペキュラカラー(specularColor)にORM
白熱光(incandescence)にEmissive
透明度(transparency)にOpacity
を貼ります。
テクスチャが無いところは貼らなくて問題ないです。
UDIMは.1001を貼ります。UVタイリングなどは設定しなくても持っていけます。
再度書き出しをします。
同じくFBX exportで、テクスチャ情報を含めるのチェックを付けてください。
書き出したFBXのファイル名がインポートされるUE内でのオブジェクト名になります。
UnrealEngineでマテリアルの雛形作成
UEのプロジェクトを開きます。
UDIMを使っている場合はプロジェクト設定のバーチャルテクスチャのサポートを有効化にチェックを入れておいてください(要再起動)
まずはインポート用のマテリアルの雛形を作ります。
新規マテリアルを作ってわかりやすい名前を付けます。
デフォルトで貼っておくマテリアル5枚を用意します。
BaseColorは絶対貼ると思うので変わってないことがわかりやすいチェッカーの見た目にしています。
他の四枚は何も変化が起こらないように何も数値が入っていないテクスチャにします。
一応ここで使っているテクスチャを置いておきます。好きに使ってください。
マテリアルを作っていきます。
まずはUDIMを使っていないモデル用です。
OpaqueでTwo Sidedがオススメです。
テクスチャ5枚をマテリアルグラフにドラッグ&ドロップして下画像のように繋いでいきます。
ORMだけ3種の要素が1枚のテクスチャに入っているので、Rをアンビエントオクルージョン、Gをラフネス、BをMetallicに繋ぎます。
繋いだら5つともTexture Sampleをパラメータにしておきましょう。
ORMなどがERROR!になる場合は、詳細のSampler Typeが合っているか確認しましよう。
BaseColorとEmissiveがColor
NormalがNormal
OpacityとORMがLinear Colorです。
ORMがColorなのにERROR!になっていない場合はテクスチャ画像の設定を変えます。
ORMテクスチャのsRGBのチェックを外しておいてください。
これでUDIM不使用の場合は完成です。
UDIM用の手順を軽く説明しておきます。
まずテクスチャをUDIM用に.1001、.1002の2種類用意します。見た目は同じで大丈夫です。
UDIMの画像もDLできるようにしておきます。
.1001をコンテンツブラウザにドラッグ&ドロップします。
正しくインポートできていればサムネイルの右下にVTの文字が付きます
さっきのマテリアルとは別でUDIM用のマテリアルを作ります。
同じように繋ぎます。
Sampler TypeのLinear ColorなどはVirtual Linear Colorなどに名前が変わります。
これでUDIM用も完成です。
UnrealEngineへモデルインポート
ようやくモデルインポート作業に入ります。
と言ってもここまで来れば非常に簡単です。
Mayaで書き出したFBXをコンテンツブラウザ上にドラッグ&ドロップするだけです。
FBXインポートオプションはマテリアル以外は自分のやりたいように変えてください
オススメはメッシュ詳細設定のCombine Meshesにチェックを付けておくとFBXファイル内のオブジェクトを1オブジェクトとしてUEが認識してくれます(後で分解はできない)
マテリアルは画像の通りにしてください。
Material Import MethodがCreate New Instanced Materialsになっていれば設定項目がいろいろ出てきます。
ベースマテリアルはさっき作った2つのうちどちらかです。UDIMありなしで正しい方を選んでください。
5つのプロパティの名称は個人で付けたパラメータ名で変わってきます。
インポートできました。
UDIMを使っていない場合はこれでインポート完了です。
UDIMを使っている場合テクスチャの1枚目しか読み込まれず見た目がおかしくなっているので修正します。
インポートしてきたテクスチャを全て選択して右クリック、バーチャルテクスチャに変換をします。
でてきたウィンドウはそのままOK。
その後、もう一度テクスチャ全てを右クリックして再インポートすると正しく読み込まれます。
完成。
あとがき
これでインポートは完了です。
初期設定は少し手順が多いですが、一度設定してしまえば簡単にインポートできるようになるのでオススメです。
pythonスクリプトやエディタユーティリティBPなどを活用すればもっと楽になるので興味のある人は調べてみてください。今であればchatGPTなどでもかなり精度良く生成できるのでそれを活用するのも手です。
最後まで閲覧ありがとうございました。
不明点等あればX(旧twitter):Raymay@raymay_rへ気軽に聞いて下さい。
それでは、良きUEライフを。