BLOGブログ

2023.12.06UE5UE/ Material

[UE5] 新しいMaterial Layerを使ってみよう

執筆バージョン: Unreal Engine 5.2

こんにちは!アートディレクターのくろさわです。
今回はMaterial Layerについて解説します。

Material Layerと旧来のMaterial Layerの違い

実は、Material Layer(Layerd Material)と呼ばれる機能はUE4の初期から存在していました。
ただし、以前のMaterial Layerは、Material Functionをマテリアルの素材感の部品として単純に利用するものでした。

それに比べ、新しく導入されたMaterial Layerは、専用のデータ形式がいくつも用意されており、非常に整理されたものとなっています。
これにより、より高度なマテリアルの作成や管理が可能になり、効率的にプロジェクトを進めることができます。

旧来のMaterial Layer

旧来のMaterial Layerでは、Material Functionをマテリアルの一部として組み込み、マテリアル内で統合されていました。
しかし、この方法ではマテリアルが複雑化し、初学者には理解が難しいという課題がありました。
旧来のMaterial Layerについては以下の記事を御覧ください。

[UE4] Layered Materialの基本的な使い方

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

 

新しいMaterial Layer

新しいMaterial Layerでは、マテリアルの要素を専用のアセットである「Material Layer」として管理します。
また「Material Layer」の統合方法は「Material Layer Blend」と呼ばれる専用のアセットで行います。
合成作業はLayer Parametersと呼ばれる専用のビューで行います。

このLayer Parametersの表示はSubstance Painterのようなレイヤー表示で、視覚的に理解しやすく、初学者にも親しみやすいものになっています。

新しいMaterial Layerを使用したワークフローは、最初の設定には少し手間がかかるかもしれませんが、仕組みができれば初学者でも複数の素材感の合成が可能です。
この仕組みはプロジェクトが大規模になるほど効果が発揮されやすくなります。

以下はMaterial Layerを使ったワークフローでマテリアルを重ね合わせている様子です。

また、「Material Layer」のパラメーターはすべて調整可能なため、柔軟に素材感を設定することができます。
「Material Layer」ごとにパラメーターが分離して管理されているため
スマートなパラメーター名をつけることができるのも嬉しいポイントです。

旧来のMaterial Layerの作例

ここまで「旧来のMaterial Layer」という用語を使用してきましたが
Contents ExsamplesのMaterial Layerセクションには、未だにこのタイプのマテリアルの作例のみが掲載されています。
この作例を用いて、旧来のMaterial Layerについて振り返りつつ、あらためてその特徴をみていきましょう。

以下はクロームのマテリアルです。クロームの素材感はMaterial Functionになっており、その後にメッシュ固有のNormalを合成するというシンプルなものです。

最終的なロケットのマテリアルは以下のようになっています。
メッシュの素材ごとの合成が全てノードで表記されているため煩雑です。

素材ごとのMaterial Function はかなり似通っています。
これらをインスタンスで管理できないというのも旧来のMaterial Layerの使いにくい点です。

 

新しいMaterial Layerの作例

以前のMaterial Layerでは、銅、アルミニウム、クロームなどの各Material Layerが独立して用意されていました。
繰り返しますが、これらのマテリアルの構造は非常に似通っています。主な違いは金属ごとの色味とNormalの画像です。

新しい仕組みのMaterial Layer はMaterial Layer Instanceというデータ形式でインスタンスを作成できるためインスタンス側でパラメーターを更新することが可能になりました。
今回は、Material LayerはベースとなるML_Metal_Baseだけを作成し各素材の違いはMLI_Metal_Aluminium…といったインスタンスで管理できるようにしました。
旧来の仕組みから移植する場合、Material LayerではFunctonではないので、Functon Inputは使用できないことに注意してください。

新しいMaterial Layerを使用する方法を以下に示します。

  1. マテリアルの設定
    まず、マテリアルを用意します。マテリアルは非常にシンプルです。
    “Use Material Attribute”にチェックを入れ、”Material Attribute Layers”ノードを接続してください。

  2. Material Layer Instanceの作成
    先程のマテリアルのMaterial Instanceを作成します。
    “Detail”タブの隣にある”Layer Parameters”タブをクリックすると、マテリアルを合成する表示に切り替わります。

  3. プレビューメッシュの設定
    もし固有のメッシュがある場合は、プレビューメッシュを設定しておくと良いでしょう。

  4. 素材の重ね合わせ
    “Layer Parameters”タブで、さまざまな金属の素材を用意しているので、これらを重ね合わせます。

  5. マスクによる合成
    RGBAのチャンネルをマスクにして合成する場合、エンジン標準の合成方法である”LayerBlend_TextureMask”を使用できます。

  6. 固有のNormalmapを合成するためのMaterial Layer Blendが見つからなかったため、自分で作成してみました。
    これにより、Normalを合成する処理だけを書くことができ、非常にシンプルで使い勝手が良いです。

まとめると今回の作例では以下のようなデータの関連性でロケットの素材感を設定できました。

いかがでしたでしょうか?

ハードウェアも進化しているとはいえ、4K時代にすべてのアセットを固有にベイクして質感を割り当てるのはかなり厳しいです。
スマートな仕組みを使って高品質なアセットを軽量に作ることを心がけたいですね!
ではまた!