マテリアル レイヤー

マテリアルのインスタンス化を使用して複雑なレイヤーおよびブレンドのあるマテリアルをビルドします。

Choose your operating system:

Windows

macOS

Linux

Unreal Engine 4.26 では、マテリアル レイヤー機能はすべてのプロジェクトでデフォルトで有効にされています。

Unreal Engine (UE) のマテリアル システムはパワフルで、プロジェクト用マテリアルの開発およびビルドのために数多くのオプションが用意されています。レベル内に配置したオブジェクトに使用するために、異なるテクスチャをまとめてレイヤー化およびブレンドし、ユニークなマテリアルを作成することができます。 マテリアル関数 を使った レイヤー マテリアル のワークフローと同様に、マテリアル グラフの中で マテリアル レイヤー アセット タイプを使用することでテクスチャを組み合わせてブレンドすることができます。このワークフローにより、 マテリアルのインスタンス化 を使用して、マテリアルのレイヤー化およびブレンド処理が簡素化されます。

主要な利点

レイヤー マテリアルを使用する 1 つの利点は、使用しないと作成が非常に困難なマテリアルを作成できることです。今後変種が必要なった場合の観点からも、より簡単な処理が可能になります。 レイヤー マテリアル ワークフローを使用して、または従来のマテリアル (レイヤーとマテリアル関数のない) において同じ種類のマテリアルを作成でき、マテリアル作成において調整しやすく、柔軟に対応ができ、複雑さを軽減することができます。

以下はレイヤー マテリアルの概略です。左はレイヤー マテリアル グラフを使用、右はマテリアル レイヤーを使用しています。マテリアル レイヤーを使用することで、ベース マテリアルでの作業量が減り、残りの作業と機能はアセット自体で行うことが分かります。

MaterialFunctionsWorkflow.png

MaterialLayersWorkflow.png

マテリアル関数ワークフロー使用のベース マテリアル

マテリアル レイヤー ワークフロー使用のベース マテリアル

マテリアル インスタンスの作成時に マテリアル関数 の機能の制限があります。つまり、ベース マテリアルでまずすべてを複製しておかないと、マテリアル関数で作成されたパラメータをマテリアル インスタンスで参照することができません。一方、マテリアル レイヤー アセットで設定されたパラメータはそれ自体でインスタンス化が可能なため、作用させる入力に対してベース マテリアル レイヤーのみをベース マテリアルで参照すれば良いのです。

マテリアル レイヤーまたは マテリアル レイヤー ブレンド アセット を開くと、ノード グラフは他のマテリアル エディタと似ています。マテリアルに使用するロジック (属性のパラメータ化を含む) はすべてここで設定します。テクスチャ入力、ベクター、定数値などの管理が可能になります。マテリアル レイヤー アセットでロジックを第一に設定すると、マテリアル内で大小なりとも変更をした場合に管理がしやすくなります。また、作業を複製せずに同じマテリアル レイヤーを複数のマテリアルで使用することができます。マテリアル関数と似た機能をより柔軟に適用および使用することができます。

クリックしてフルサイズ表示。

ここで設定されたすべてのパラメータは、マテリアル レイヤーを使用するマテリアルのマテリアル インスタンスのスタックに追加された レイヤー で参照されます。つまり、マテリアル インスタンスを作成した時に、ベース マテリアルにこれらのパラメータを複製する必要はありません。マテリアル インスタンスを開くと、このインスタンスに追加されたすべてのマテリアル レイヤーが [Layer Parameters] タブに入っています。

クリックしてフルサイズ表示。

マテリアル レイヤー ブレンド アセットを使用して、このマテリアル インスタンスで参照されているレイヤーのマスキングを制御します。それぞれのレイヤーは独自のマテリアル レイヤー ブレンドをもつことが可能です。スタック内のすべてのレイヤーに対して単一のブレンド アセットに制限されません。ブレンド アセットがレイヤーに割り当てられていないと、ブレンド アセットの割り当てのない一番上のレイヤーは常にその下のレイヤーをオーバーライドします。マテリアル レイヤー アセットのように、マテリアル レイヤー ブレンドには独自のノードがあり、それを使ってデフォルト用のブレンド/マスキング ロジックの設定およびパラメータ化を行うことができます。これらのノードは複数のマテリアル間でのインスタンス化および再利用も可能です。

クリックしてフルサイズ表示。

このワークフローにより、単一のアセットに対しては複雑なマテリアル ロジックを部分的に含みつつ、他のマテリアルを作成した場合はそのマテリアルにも再利用できるという柔軟性があります。

マテリアル レイヤーを有効化する

UE 4.26 から、マテリアル レイヤー機能はすべてのプロジェクトでデフォルトで有効になりました。以下の手順に従って、UE の前のバージョンでマテリアル レイヤーを有効にすることができます。

[Project Settings (プロジェクト設定)] ウィンドウを開き、 [Rendering] > [Materials] カテゴリから [Support Material Layers (マテリアル レイヤーをサポート)] を有効にします。

EnableMaterialLayers.png

この機能を有効にするためにエディタを再起動する必要があります。

使用方法

以下の手順は、プロジェクトでマテリアル用にマテリアル レイヤーを作成して使用するための大まかな手順です。

  1. マテリアル レイヤー アセットを作成します。

  2. マテリアル レイヤー ブレンド アセットを作成します。

  3. 従来のマテリアル アセットを作成します。

  4. アクティブなマテリアル レイヤー スタックを評価し、マージされたアトリビュートを出力する Material Attribute Layers 式を追加します。

  5. ベース マテリアルのマテリアル インスタンスを作成します。

  6. [Layer Parameters] タブを使って、マテリアル用のレイヤーの追加、編集、マージを行います。

マテリアル レイヤー アセット タイプ

マテリアル レイヤーは 2 つのアセット タイプで構成されています。

  • マテリアル レイヤー アセットは、マテリアルで他のレイヤーを使ってマスクまたはブレンドすることができるレイヤーを作成するために使用します。

  • マテリアル レイヤー ブレンド アセットは、2 つのレイヤーをブレンドするためのマスクを作成します。

この 2 つのアセット タイプは、 [Add New (新規追加)] ボタンをクリック、またはコンテンツ メニューを右クリックして [Materials & Textures] カテゴリからアセットを選択することで、コンテンツ ブラウザからプロジェクトへ追加することができます。

AddNewMenu.png

マテリアル レイヤー アセット

マテリアル レイヤー アセットは、 マテリアル関数 と同様に、マテリアルのノード グラフ ロジックの設定とプレビューができる独自のグラフがあります。作成するマテリアルのそれぞれのタイプに対して、 マテリアル属性 式を使ってロジックの処理および結果の出力を行います。たとえば、クロムまたはエミッシブ マテリアルを作成するには、他の通常のベース マテリアル グラフで行うようにグラフ内でテクスチャとパラメータを設定します。

マテリアル レイヤー グラムで設定されたクロムのようなマテリアルを示すシンプルなマテリアル グラフの例。

クリックしてフルサイズ表示。

マテリアル レイヤー ブレンド

マテリアル ブレンド アセットは、 マテリアル関数 と同様に、マテリアルのノード グラフ ロジックの設定とプレビューができる独自のグラフがあります。作成するブレンドまたはレイヤーの各タイプに対して、グラフには BlendMaterialAttributes 式で設定された Input Bottom Layer Input Top Layer があります。これらの入力に追加のロジックを適用したり、単純に Alpha 入力を使ってマテリアル インスタンス レイヤー スタック内のレイヤーに独自のマスクとブレンドを操作することができます。

マテリアル レイヤー ブレンド グラフでマスクを使って BlendMaterialAttributes 式にアルファを操作しているシンプルなマテリアル グラフの例。

クリックしてフルサイズ表示。

ベース マテリアル グラフ

ベース (または親) マテリアルでは、グラフにすべてのノード ロジックを配置するのではなく、マテリアル レイヤー アセットとマテリアル レイヤー ブレンド アセットを使って操作します。これにより、ベース マテリアルで必要な管理数が減ります。

マテリアル レイヤーを使用する場合、メインのマテリアル ノードを選択し [Details (詳細)] パネルを設定して [Use Material Attributes (マテリアル アトリビュートを使用)] が有効になっていることを確認してください。

UseMaterialAttributes.png

Material Attribute Layer 式は、特定のマテリアル レイヤーに関連づけることができる多くのマテリアル属性を参照するために使用されます。その後、ベース マテリアルの出力に使用されます。たとえば、Material Attribute Layer 式を使うと、マテリアル属性を get および set するクロム マテリアルを使用できます。

BaseMaterial.png

Material Layer 式

Material Attributes Layer 式はアクティブなマテリアル レイヤー スタックを評価するために使用します。Material Attribute Layers 式を選択すると、 [Details (詳細)] パネスを使って、バックグラウンド マテリアルや追加レイヤーなど、作成されるすべてのマテリアル インスタンスと使用することができるデフォルト レイヤーを設定することができます。

MaterialAttributesLayersDefaults.png

マテリアル インスタンスを作成する、またはプロジェクトに直接オブジェクトを適用する場合、デフォルトのマテリアル レイヤーが使用されます。

設定したマテリアルがさらに複雑な場合は、マテリアル レイヤーで特別に設定するのではなく、ベース マテリアルの中で Get Material Attributes 式と Set Material Attributes 式を使うことで、設定したいマテリアル アトリビュートの追加と受け取りが可能になります。、

クリックしてフルサイズ表示。

マテリアル、レイヤー、ブレンドのインスタンス化

指定したパラメータから作成した一意のマテリアルを作成するためにマテリアルをインスタンス化するように、マテリアル レイヤーとマテリアル レイヤー ブレンドもインスタンス化することができます。これにより、パラメータ化されているグラフの中のすべてのノードにアクセスすることができるようになります。

コンテンツ ブラウザで選択することで、グラフ内のすべてのノードのインスタンスを作成することができます。コンテキスト メニューから [Create Layer Instance (レイヤー インスタンスの作成)] または [Create Blend Instance (ブレンド インスタンスの作成)] を選択します。

クリックしてフルサイズ表示。

ベース マテリアル レイヤー グラフでノードをパラメータ化すると、通常作成する マテリアル インスタンス と同様に、これらのパラメータは作成されたすべての子インスタンスへアクセスすることができるようになります。レイヤーとブレンドは、レイヤーに対するパラメータが設定されている [Layer Parameters] タブの中にあります。

MaterialLayerParameters_MI.png

各レイヤーのパラメータはそのレイヤー専用になります。従って、スタック内で同じマテリアル レイヤーを使用している複数のレイヤーは、スタック内で 1 つのレイヤーにオーバーライドされるたパラメータ値を設定しているので、同じレイヤー スタック内の同じレイヤーのパラメータをオーバーライドしません。

パラメータを渡す

パラメータをマテリアル レイヤーとマテリアル レイヤー ブレンドからマテリアルとマテリアル インスタンスへ渡す方法はいくつかあります。以下の提案のほとんどはレイヤーとブレンドに適用されます。

既存のマテリアルおよびマテリアル関数と同様に動作するパラメータをレイヤー内に作成します。

マテリアル レイヤーとマテリアル レイヤー ブレンド グラフ内に追加されたパラメータはそのレイヤーおよびブレンドに対して一意です。たとえば、以下のマテリアル レイヤーはVector Color、ラフネス マップのテクスチャ パラメータ、メタル用とカラー用の 2 つのスカラー パラメータを使っています。標準のメタル関数またはマテリアル関数と同様に設定されています。

Param_1.png

標準マテリアルがマテリアル レイヤーを使用するようにインスタンス化されて、このレイヤーがマテリアル インスタンスの [Layer Parameters] タブに追加されると、すべてのパラメータが編集に使用できます。

Param_1a.png

ベース マテリアルのマテリアル アトリビュート スタックへの入力ピンを使用します。

標準のマテリアル グラフで、 Set Material Attributes 式を使ってもう 1 つのマテリアル アトリビュートを入力とみなし、それが各レイヤーへつなげられて Material Attribute Layers 式のスタックへ追加されます。

この例では、ベースの法線マップテクスチャ パラメータをこのように渡します。

layer_ma_output.png

次に、マテリアル レイヤー アセット内で、 Set Material Attributes 式を使って入力とブレンドインを設定します。さらに、各レイヤーは、ベース スタックのマテリアル アトリビュート入力を使用または無視できます。

layer_ma_input.png

レイヤー スタック

マテリアル インスタンスで使用されているマテリアル レイヤーは Layer Parameters タブを使用して可視性を切り替え、新しいマテリアル レイヤー ブレンド アセットを割り当て、上から下への依存関係のためにスタック内にドラッグ アンド ドロップすることができます。

クリックしてフルサイズ表示。

[Layer Parameters] タブから、マテリアル レイヤーまたはマテリアル レイヤー ブレンドに対して公開されたすべてのパラメータのオーバーライドと編集が可能です。これらのパラメータはそのレイヤー専用となります。従って、同じマテリアル レイヤーをこのレイヤー スタックに複数回追加したとしても、パラメータはパネル内にあるそのレイヤーに一意に設定されます。

クリックしてフルサイズ表示。

さらに、作成した作業を削除せずに、スタックの各レイヤーの可視性を切り替えることができます。スタック内のレイヤーの可視性を切り替えるには、 目の形 のアイコンをクリックします。

クリックしてフルサイズ表示。

レイヤーの可視性を切り替えると、そのレイヤーを無効にして、レイヤー ブレンドとパラメータに基づいてスタック内の次のレイヤーを表示します。以下の例では、胸当ての側面に対して独自の一意のプロパティとブレンド マスクをもつマテリアル レイヤーを無効にしています。無効にすると、次のレイヤーが胸当ての他の部分で使用されているクロム メタルを表示します。

Layer Visibility: オン

Layer Visibility: オフ

最後に、スタック内の各レイヤーは、すべての下位レイヤーに優先して一番上のレイヤーをドラッグ&ドロップできます。他にマテリアル レイヤーが存在しない場合でも、 バックグラウンド レイヤーをデフォルト マテリアルとしてベースの親マテリアルで移動および設定することはできないことに注意してください。

追加リソース

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる