マテリアル レイヤー

TODO

Windows
MacOS
Linux

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

主要な利点

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

以下はレイヤー マテリアルの例です。左はレイヤー マテリアル グラフを使用、右はマテリアル レイヤーを使用しています。ワークフローにより、作業と機能をアセット自体で行うことで、ベース マテリアルで必要なかなり少ないことが分かります。

MaterialFunctionsWorkflow.png

MaterialLayersWorkflow.png

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

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

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

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

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

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

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

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

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

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

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

[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

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

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

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

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

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

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

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

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

ベース マテリアル グラフ

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

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

UseMaterialAttributes.png

ベース マテリアルの出力に対してマテリアル レイヤーのマテリアル アトリビュートを参照する Material Layer Expression を使うと、最もシンプルな形になります。たとえば、このクロム マテリアルは Chrome マテリアル レイヤーを使い、出力用にマテリアル アトリビュートを参照するためにゲットおよびセットしています。

BaseMaterial.png

Material Layer 式

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

MaterialAttributesLayersDefaults.png

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

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

MaterialLayerExpression_AttributesNodes.png

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

指定されたパラメータから作成されたユニークなマテリアルを作成するためにマテリアルがインスタンス化されるように、

マテリアル レイヤーとマテリアル レイヤー ブレンドもインスタンス化することができます。このインスタンス化により、パラメータ化されているグラフの中のすべてのノードにアクセスすることができるようになります。

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

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

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

MaterialLayerParameters_MI.png

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

パラメータを渡す

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

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

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

    Param_1.png

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

    Param_1a.png

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

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

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

    layer_ma_output.png

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

    layer_ma_input.png

レイヤー スタック

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

MaterialInstanceEd_ML.png

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

MaterialInstanceEd_MLParameters.png

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

MaterialInstanceEd_ToggleLayerVis.png

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

Layer Visibility: Enabled

Layer Visibility: Disabled

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

追加リソース

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信