■MayaとSubstance Painter内でのデータ作成
STEP 01 Maya内でのUVマッピング
今回は蔵のモデルを例にして見ていきたいと思います
このモデルはおおまかに、漆喰壁、板張りの壁、屋根瓦、ほぼ地面に埋まり隠れることになる基礎の部分、窓の金属の格子部分に分かれていますので、それぞれに異なる仮マテリアルをアサインします
UVはマテリアルごとにオーバーラップしないよう0~1の範囲にマッピングし、FBXエクスポートします。各マテリアルが最終的に4つずつのレイヤーをもつことになります
STEP 02 Substance Painter内でのマスク作成
-
新規シーンを作成してFBXをインポートしたら、まず[ビューア設定→Shader]から「pbrmaterial-layering」を選択します
-
するとMaya内で分けたマテリアルごとに、4つのマテリアルレイヤーが現れ、それぞれをブレンドする3つのマスクが作成できるようになったことがTexture SetListで確認できるはずです
STEP 03 ブレンドマスクの作成
マスクの作成例です。Smart masksを駆使して、レイヤーごとにAO、エッジ、広いフェースなら上下のグラデーションなどが上手く出るように作成しています。本来は各々のレイヤーにUE4内と同じテクスチャをアサインすべきでしょうが、結局UE4側で多くのパラメータ調整が必要なこともあり、ある程度慣れた後は画像のような仮の色分けで作業しました
マスクができたら[ファイル→Export Textures]からマスクをTGAで出力します。解像度は512×512やそれ以下など、比較的小さくて十分です
■Unreal Engine 4内での作業
STEP 01 マテリアルインスタンスの作成とメッシュへのアサイン
蔵のFBXをUE4にインポートしたら、スタティックメッシュエディタを開いてみましょう。Maya内で分けたマテリアルが「エレメント」として各々スロットが存在するはずです
エレメント数だけmat_layering_master(前ページですでにインストールしたUE4用シェーダ)のマテリアルインスタンスを作成し、アサインしましょう。画像ではベースのテクスチャは設定されていますがブレンドマスク等が設定されていないので、単調な見た目になっています
STEP 02 ブレンドマスクのインポートとマテリアルの設定
Substance Painterから出力したブレンドマスクをインポートしました。5つのマテリアルごとに3つのブレンドマスクをもっているので計15枚ですが、解像度が低いためサイズは小さいです
マテリアルインスタンスのレイヤーごとにブレンドマスクをアサインし、カラーやタイリング、ブレンドノイズの値などを設定していきます。例えば画像右側の「Mat4」は、漆喰壁の茶色く剥がれた部分のテクスチャやカラー値などの設定を表しています
STEP 03 各種パラメータの調整
ここでは各パラメータがどのように働くか解説し、調整の仕方を見ていきたいと思います
板壁の上の部分、Mat2部分のTile値を意図的に小さく1.0としてみると、そこだけ板が拡大したのがわかります
同じレイヤーのColor値を極端な色にしてみると、このように色が変わります
BlendContrast値を1.0にすることで、Substanceで作ったマスクとここでアサインされているノイズテクスチャが合わさり、2値的なブレンド具合になります。これはステップ01で私がカスタマイズした処理によるものです
多くの可能性を秘めたマテリアルワークフロー
ご覧いただいたように、ダイナミックマテリアルレイヤリングを採用することで可能な限りテクスチャをアセット間で共有し、高解像度の見た目を実現すると同時に、モデルの形状に沿った経年劣化などの表現をメモリの負荷の少ないかたちで実装することができる、良いとこ取りのパイプラインと言えるでしょう。シェーダのさらなるカスタマイズやSubstance Painterとゲームエンジンとのより強い連携などで、効率化・高クオリティ化の可能性はまだまだあると思いますので、ぜひとも取り入れてみてください。