BLOGブログ

2018.08.14UE4/Material

[UE4] Paragonのアセットを読む

こんにちは。
テクニカルアーティストの黒澤です。

今回は趣向を変えてParagonのアセットからSerathのデータを読んで、EPICの制作フローに思いを馳せることにします。
まずはこちらのハイクオリティな画像をご覧ください。

 

メッシュについて

ポリゴン数は約83,000ポリゴンで、使用しているマテリアルのエレメント数は15とかなり多めです。
マテリアルは金属部分にはClearCoatシェーダー、眼球はEyeシェーダー、髪の毛はHairシェーダー、肌はSubsurfaceProfileを使用しています。

また、変わったところでは、まぶたの下に影の代わりになるメッシュ、眼球にたまった涙のメッシュがあります。

(右からキャラクター全体のメッシュ、まぶたの下の影の代わりになるメッシュ、眼球にたまった涙のメッシュ)

影の代わりになるメッシュ

まぶたが眼球に落とす影のような微細な表現は、シャドウマップの性質上、リアルタイムグラフィックでは難しいので、フェイクとして半透明の板を眼球にくっつけて影の代わりにしています。
目に表情が出るため、簡単に作れる割に効果はとても大きいので、かなり制作で生きるテクニックです。

涙のハイライトにメッシュ

眼球にたまった涙を表現するために、チューブ状のメッシュを眼球の周辺に配置しています。
こちらも目の表現力がアップするのでおすすめのテクニックです。

マテリアルの構成

M_Serath_HKFHEGR というお尻の部分のマテリアルを見ていきます。

ぱっと見ての通り、このマテリアルは金色のプレート、そのふちの銀色の部分、鎖たかびらの3つのマテリアルで要素で構成されています。
マテリアルを開いてみるとこんな感じです。

金属プレートのサブマテリアルに対するインプットはこのようになっており、RチャンネルとGチャンネルが、それぞれ汚れと傷の出やすさになっています。
(AOとCurvatureに加工したようなテクスチャです)
※ AO(アンビエントオクルージョン) 物体の影だまりを表したテクスチャ
※ Curvature(カーバチュア) 物体の表面がどれくらいの角度で折れ曲がっているかを示したテクスチャ

かなり複雑な部分はありますが、いわゆるレイヤードマテリアルを使用した作りになっています。

レイヤードマテリアルとは?

レイヤードマテリアルについて、UE4のマニュアルから引用します。

レイヤー マテリアルは、「マテリアル内のマテリアル」として考えることができます。レイヤーマテリアルは、一連のサブマテリアル (または レイヤー) を持つ単一マテリアルの作成手段です。サブマテリアルは、マスクなどのピクセル単位の操作でオブジェクトのサーフェス全体へ配置することができます。ユニークなサーフェス タイプ間の複雑なブレンド処理に最適です。上記のロケットの画像は、一番右寄りのロケットに独自のマテリアル レイヤーを使用しています。クロム、アルミニウム、そして銅を使用して、ピクセル単位ベースで各マテリアルをブレンドしています。このエフェクトは、レイヤー マテリアルで簡単に実現できます。

ちょっと説明がややこしいですが、簡単に言ってしまえば「マスク画像を使用して、一つのマテリアル内で複数のマテリアルを合成する」機能です。

合成する前のマテリアルは便宜的にサブマテリアルと呼ばれます。
またここでのマスク画像は、複数の素材感を表すために「この色はこの素材感」と指定するためのマップなので、一般的にIDマップとも呼ばれます。

サブマテリアルはUE4のマテリアル内で一つのノードで扱えるので、可読性に優れ、作成したサブマテリアルは再利用可能なところが特徴です。
ただし、可読性に優れるとはいってもマテリアルを組む必要があるので、マテリアルインスタンスの調整に比べれば、制作と管理の難易度は飛躍的に上がります。

ここまで読んで、Substance等を使用したアセットワークに慣れている方なら、スマートマテリアルの概念に似ていることに気が付いたと思います。
おそらくParagonのワークフローとSubstanceを使用したアセットワークの違いは以下のようなものであるということができると思います。


モデル制作:Wes McDermott

上記の概念図を説明します。
SorceMesh(ハイポリ)とInGameMesh(ローポリ)を用意し、InGameMeshのUVに対し、各種マップを生成するところまでは同じです。

Substanceを使用したワークフローではこれらの各種素材をうまく利用して、例えば「革素材はAOが明るい場所は色落ちしており傷も多い。AOの暗い場所は色落ちしておらず、極端に暗い場所には汚れがたまっている」などの素材感を作り、効率よくPBRに必要な素材を制作します。それらの素材はUE4でほぼ手を加えることなく同じ絵を表示できます。

これに対して、レイヤードマテリアルを使用したワークフローでは、各種マップに加え、UE4のマテリアル内で取得できる要素や、ほかのシームレス素材もマテリアル内で合成し、上記の素材感の特徴をUE4の中で生成するといった違いであるといえます。

 

レイヤードマテリアルについてまとめます。

利点

解像度がテクスチャサイズの制限を受けない

同じメッシュで素材の組み合わせが違うようなものをUE4の中で制作できる

ルックの調整がUE4の中だけで完結する

欠点

マテリアルが重くなる

わかりにくくなる

管理が煩雑になる

 

それぞれの項目についてもう少し詳細に解説します。

解像度がテクスチャサイズの制限を受けない

鎖かたびらの質感がわかりやすいのですが、UVに対して6倍繰り返しているため、テクスチャでは24,576Pixel(4096×6)相当の解像度を持っているともいえます。いわゆるディテールマップ的な表現なのですが、こういった表現を無理なく取り込めるのもレイヤードマテリアルの特徴といえるでしょう。繰り返すような素材感はサブマテリアルに持たせてしまえばいいわけです。

また、シャープな絵ほど解像度不足が目立つものですが、マテリアル内でノイズを合成し、コントラストを上げる処理を行って錆の素材感などを出すのであれば、解像度感はベースのテクスチャに拠るわけではないので、解像度不足な感じはほとんど見えなくなります。

同じメッシュで素材の組み合わせが違うようなものをUE4の中で制作できる

M_Serath_HKFHEGRでは鎧と鎧のふち、鎖かたびらのサブマテリアルの合成でしたが、シルクのような素材が混ざったマテリアルを作りたいとします。その場合でもサブマテリアルとIDマップの接続を変えるだけです。

ルックの調整がUE4の中だけで完結する

レイヤードマテリアルだからそうだというわけでもないのですが、「汚れた場合にはBaseColorはこう変化する」といった情報をほとんどマテリアルの中で行っているため、UE4の中でアセットワークが完結するのがうれしいです。質感を高めたいからSubstanceに戻すといったことを行う必要が少なくなります。

マテリアルが重くなる

多くのパラメーターをマテリアルに持たせて合成するということは、当然マテリアルの処理が重くなります。

わかりにくくなる

極限までシンプルなアセットワークを考えてみます。こちらは購入したアセットの一例ですが、マテリアルインスタンスで必要なマップを接続し、調整用のパラメーターをいじるだけです。

サブマテリアルの組み合わせは見た目はわかりやすくなるとは言え、上記の作業に比べると、レイヤードマテリアルは遥かに難易度が高く、アーティストがそれぞれUE4に精通している必要があります。

管理が煩雑になる

アーティストはマテリアルインスタンスしか触らない状況と比較すると、ベースマテリアルも多数存在することになります。
結果的にサブマテリアルが紛れ込んでいた場合の原因と影響範囲の究明など、管理もかなり難しくなります。

以上のことから、アーティスト全員がテクニカルアーティストという、EPICに向いたワークフローであるといえるでしょう。

 

おまけ

最後に、一つ面白いパラメーターを見つけたのでご紹介します。
MF_GoodEvilMaskというマテリアルファンクションがほとんどのマテリアルに接続されていたのですが、この中のClothBurnというパラメータを0から1に変化させると、キャラクターの見た目が一瞬で変化します。(通常にみることのできない暗い革の素材や、特殊なマテリアル表現はこのために用意されています)

こちらもレイヤードマテリアルをうまく使っており、同じIDマップに対してGoodEvilMaskから出てきた変数に応じて、サブマテリアルが表示される範囲が変わるといった作りになっています。

今回、ご紹介したSerathも含め、Paragonのアセットのいくつかは無料で公開されています(UnrealEngine4も無料で使えます)
12億円以上の予算をかけて作られたゲームのデータを見ることができるというのはなかなかないことですので、ぜひ自分でもデータを見てみることをお勧めします!