Unreal Engine の マテリアル レイヤー システムは、テクスチャやプロパティのレイヤーやブレンドを行い、レベル内のオブジェクトにユニークなマテリアルを作成できるパワフルなツールです。マテリアル レイヤーは、マテリアル関数 を使用した レイヤー マテリアル ワークフローと似ていますが、この代替アプローチはプロセスを簡素化し、アーティストにさらなる柔軟性を提供します。
Material ノード グラフで直接編集する必要がある従来のレイヤー マテリアルとは異なり、マテリアル レイヤー システムは マテリアル インスタンス エディタ に [ユーザー インターフェース] タブを備えています。このインターフェースによって、アーティストはマテリアル インターフェースのレイヤーを素早く簡単に入れ替えることができます。マテリアル レイヤーはインスタンス エディタに表示されているので、このワークフローはレイヤー マテリアルをカスタマイズするために必要な技術的知識と時間を大幅に削減し、より反復性のあるユーザーエクスペリエンスにつながります。
主要な利点
レイヤー マテリアルを使用する利点の 1 つは、将来の編集の観点からより簡単な管理が可能なまま、レイヤー マテリアルを使用しないと作成が非常に困難なマテリアルを作成できることです。レイヤー マテリアル ワークフローまたは従来の (レイヤーとマテリアル関数のない) マテリアルを使用して同じ種類のマテリアルを作成することはできますが、マテリアル レイヤー ワークフローは調整しやすく、柔軟に対応ができ、複雑さを軽減することができます。
たとえば、以下の画像はグラフベースのアプローチを使った従来のレイヤー マテリアルと、GUI ベースのマテリアル レイヤーを使ったものの違いを示しています (写真右)。マテリアル レイヤーを使用することで、ベース マテリアルでの作業量が減り、残りの作業と機能はアセット自体で行うことが分かります。
|
|
---|---|
マテリアル関数ワークフロー使用のベース マテリアル |
マテリアル レイヤー ワークフロー使用のベース マテリアル |
マテリアル インスタンスの作成時の マテリアル関数 の動作の制限のため、ベース マテリアルでまず複製しておかないと、マテリアル関数で作成されたパラメータをインスタンス化したマテリアルで参照することができません。一方、マテリアル レイヤー アセット で設定されたパラメータをインスタンス化することができ、作用する入力のベース マテリアルでベース マテリアル レイヤーのみを参照する必要があります。
マテリアル レイヤーまたは マテリアル レイヤー ブレンド アセット を開くと、ノード グラフはマテリアル エディタのものと似ています。属性のパラメータ化を含む、このマテリアルに使用するロジックはすべてここで設定します。これによって、テクスチャ入力、ベクター、定数値などの制御が可能になります。ロジックを主にマテリアル レイヤー アセットで設定すると、マテリアル内で大小なりとも変更をした場合に管理がしやすくなります。また、二度手間をかけずに同じマテリアル レイヤーを複数のマテリアルで使用することができます。マテリアル関数と似た機能を、より柔軟に適用および使用することができます。
ここで設定したすべてのパラメータは、マテリアル レイヤーを使用するベース マテリアルのマテリアル インスタンスのスタックに追加された レイヤー で参照されます。つまり、マテリアル インスタンスの作成時に、ベース マテリアルにこれらのパラメータを複製する必要はありません。マテリアル インスタンスを開くと、このインスタンスに追加したすべてのマテリアル レイヤーとパラメータが [Layer Parameters] タブに表示されます。
マテリアル レイヤー ブレンド アセット を使用して、このマテリアル インスタンスで参照されているレイヤーのマスキングを制御します。各レイヤーは独自のマテリアル レイヤー ブレンドをもつことができ、スタック内のすべてのレイヤーに対するブレンド アセットは 1 つに制限されません。ブレンド アセットがレイヤーに割り当てられていないと、ブレンド アセットの割り当てのない一番上のレイヤーは常にその下のレイヤーをオーバーライドします。マテリアル レイヤー アセットのように、マテリアル レイヤー ブレンドには独自のノード グラフがあり、それを使ってデフォルト用のブレンド/マスキング ロジックの設定およびパラメータ化を行うことができます。これらのノードは複数のマテリアル間でのインスタンス化および再利用も可能です。
このワークフローにより、他のマテリアルを作成した場合はそのマテリアルにも再利用できるという柔軟性をもちながら、マテリアル ロジックの一部を単一のアセットに簡素化することができます。
マテリアル レイヤーの使用
以下は、プロジェクトでマテリアル用にマテリアル レイヤーを作成して使用するための高難度の手順です。
マテリアル レイヤー アセットを作成します。
マテリアル レイヤー ブレンド アセットを作成します。
ベース マテリアルとして機能する、従来のマテリアル アセットを作成します。
アクティブなマテリアル レイヤー スタックを評価し、マージされたアトリビュートを出力する Material Attribute Layers 表現式を追加します。
ベース マテリアルのマテリアル インスタンスを作成します。
[Layer Parameters] タブを使って、マテリアル用のレイヤーの追加、編集、マージを行います。
マテリアル レイヤー アセット タイプ
マテリアル レイヤー システムは 2 つのアセット タイプで構成されています。
マテリアル レイヤー アセットは、マテリアルで他のレイヤーとブレンドできるレイヤーを作成するために使用します。
マテリアル レイヤー ブレンド アセットは、2 つのレイヤーをブレンドするためのマスクを作成します。
これら両方のアセット タイプは、コンテンツ ブラウザからプロジェクトに追加できます。[Add (追加)] ボタンをクリック、またはコンテンツ ブラウザで 右クリック して、[Create Advanced Asset] の マテリアル のサブカテゴリを展開します。コンテキストメニューから [マテリアル レイヤー] または [マテリアル レイヤー ブレンド] を選択します。
マテリアル レイヤー アセット
マテリアル レイヤー アセットは、マテリアル関数 と同様に、マテリアルのノード グラフ ロジックの設定とプレビューができる独自のマテリアル グラフがあります。作成するマテリアルのそれぞれのタイプに対して、マテリアル属性表現式 を作成、または設定を使用して、ロジックの処理および結果の出力を行います。たとえば、クロムまたはエミッシブ マテリアルを作成するには、他の通常のベース マテリアル グラフで行うように、このグラフ内でテクスチャとパラメータを設定します。
マテリアル レイヤー ブレンド アセット
マテリアル レイヤー ブレンド アセットは、マテリアル関数 と同様に、マテリアルのノード グラフ ロジックの設定とプレビューができる独自のグラフがあります。マテリアル レイヤー ブレンド アセットには BlendMaterialAttributes 表現式で設定された Input Bottom Layer と Input Top Layer が自動的に含まれます。これらの入力に追加のロジックを適用したり、単に Alpha 入力を使ってマテリアル インスタンス レイヤー スタック内のレイヤーに独自のマスクとブレンドを操作することができます。
ベース マテリアル グラフ
マテリアル レイヤーを使用する場合、ほとんどのノード ロジックはマテリアル レイヤー アセットとマテリアル レイヤー ブレンド アセットを使って操作します。ベース マテリアルのグラフに含まれるマテリアル ロジックは通常、比較的少ないので、ベース マテリアルで必要な管理数が減ります。
マテリアル レイヤーを使用する場合、Main Material ノードを選択し、[Details (詳細)] パネルのボックスにチェックを入れて [Use Material Attributes (マテリアル属性を使用)] を有効してください。
Material Attribute Layer 表現式 は、特定のマテリアル レイヤーに関連づけることができる多くのマテリアル属性を参照するために使用します。その後、ベース マテリアルの出力に使用されます。たとえば、Material Attribute Layer 表現式を使うと、マテリアル属性を取得し設定するクロム マテリアルを使用できます。
Material Layer 表現式
Material Attributes Layer 表現式は有効なマテリアル レイヤー スタックを評価するために使用します。Material Attribute Layers 表現式を選択すると、[Details (詳細)] パネルを使って、作成されるすべてのマテリアル インスタンスと使用することができるデフォルト レイヤーを設定することができます。この例では、クロム マテリアル レイヤー アセットを参照するバックグラウンド マテリアルしかありません。[Add Element (要素を追加)] ボタン (+) をクリックするとレイヤーを追加できます。
マテリアル インスタンスを作成する、またはプロジェクトのオブジェクトにこのマテリアルを直接適用する場合、デフォルトのマテリアル レイヤーが使用されます。
さらに複雑なマテリアルを設定した場合、マテリアル レイヤーで特別に設定するのではなく、ベース マテリアルの中で Get Material Attributes 表現式と Set Material Attributes 表現式でベース マテリアルに設定するマテリアル属性の追加と受け入れができます。この例では、追加の法線マップがマテリアル レイヤーの法線マップとブレンドしています。Set Material Attributes ノードは新しいブレンドされた法線を受け入れ、更新したマテリアル属性を出力します。マテリアル属性 表現式の詳細については、こちらを参照してください。
マテリアル レイヤーとブレンドのインスタンス化
指定したパラメータから一意のマテリアルを作成するためにマテリアルをインスタンス化できるように、マテリアル レイヤーとマテリアル レイヤー ブレンドもインスタンス化することができます。これによってノード グラフのパラメータ化された表現式にアクセスできます。
コンテンツ ブラウザで 右クリック して、[Create Layer Instance (レイヤー インスタンスを作成)] または [Create Blend Instance (ブレンド インスタンスを作成)] を選択することで、それぞれマテリアル レイヤーまたはマテリアル レイヤー ブレンドのインスタンスを作成することができます。
ベース マテリアル レイヤー グラフでノードをパラメータ化する場合、これらのパラメータは作成したすべての子マテリアル インスタンスからアクセスできるようになります。マテリアル レイヤーとブレンドについては、マテリアル インスタンス エディタの [Layer Parameters] タブの中にパラメータのリストがあります。任意のマテリアル レイヤーのためのすべてのパラメータのリストがここにあります。
各レイヤーのパラメータはそのレイヤー専用になります。したがって、スタック内で同じマテリアル レイヤーを使用している複数のレイヤーがある場合、スタック内で 1 つのレイヤーにオーバーライドされたパラメータ値を設定しても、同じレイヤー スタック内の他の場所で、マテリアル レイヤーのパラメータをオーバーライドしません。
パラメータを渡す
マテリアル レイヤーとブレンドからマテリアルとマテリアル インスタンスへパラメータを渡す方法は複数あります。提案のほとんどはレイヤーとブレンドの両方に当てはまります。
マテリアルレイヤー内のパラメータは既存のマテリアルや関数と同様に動作します。
マテリアル レイヤーとマテリアル レイヤー ブレンド グラフ内に追加されたパラメータはそのレイヤーおよびブレンドに対して一意です。たとえば、以下のマテリアル レイヤーは Vector パラメータ、ラフネス マップのテクスチャ パラメータ、メタル用とラフネス用の 2 つのスカラー パラメータを使っています。標準のメタル関数またはマテリアル関数と同様に設定されています。
マテリアル レイヤーを使用する標準マテリアルがインスタンス化され、このレイヤーがマテリアル インスタンスの [Layer Parameters] タブに追加されると、すべてのパラメータが編集可能になります。
ベース マテリアルの Material Attributes Layers スタック表現式への入力ピンを使用します。
標準のマテリアル グラフでは、Set Material Attributes 表現式を使ってもう 1 つのマテリアル属性を入力とし、それが各レイヤーへつなげられて Material Attribute Layers 表現式のスタックへ追加されます。
この例では、ベース法線テクスチャが Material Attribute Layers スタックに渡されます。
次に、マテリアル レイヤー アセット内で、Set Material Attributes 表現式を使って入力とブレンド インを設定します。さらに、各レイヤーは、ベース スタックのマテリアル属性入力を使用することも無視することもできます。
レイヤー スタック
マテリアル インスタンス エディタの [Layer Parameters] タブでは、マテリアル レイヤーの表示/非表示の切り替え、新規マテリアル レイヤー ブレンド アセットの割り当て、またはスタック内のレイヤーのトップダウン従属への並び替えができます。
[Layer Parameters] タブから、マテリアル レイヤーまたはマテリアル レイヤー ブレンドに対して公開されたすべてのパラメータのオーバーライドと編集が可能です。これらのパラメータはそのレイヤー専用となります。したがって、同じマテリアル レイヤーをこのレイヤー スタックに複数回追加したとしても、パラメータはパネル内にあるそのレイヤーに一意に設定されます。
さらに、作成した作業を削除せずに、スタックの各レイヤーの表示/非表示を切り替えることができます。スタック内のレイヤーの表示/非表示を切り替えるには、目の形 のアイコンをクリックします。
レイヤーの表示/非表示を切り替えると、そのレイヤーは無効になり、スタック内の他のレイヤーですでに使用されているレイヤー ブレンドとパラメータ設定に基づいて、スタック内の次のレイヤーを表示します。以下の例では、胸当ての側面に対して独自の一意のプロパティとブレンド マスクをもつマテリアル レイヤーを無効にしています。無効にすると、次のレイヤーが胸当ての他の部分で使用されているクロム メタルを表示します。
一番上のレイヤーがすべての下位レイヤーに優先して、レイヤーをドラッグ&ドロップして順番を入れ替えることができます。 最後に、スタック内の各レイヤーは、すべての下位レイヤーに優先して一番上のレイヤーをドラッグ&ドロップできます。バックグラウンド レイヤーは移動できないことに留意してください。他にマテリアル レイヤーが存在しない場合、バックグラウンド レイヤーはベースの親マテリアルでデフォルト マテリアルとして設定されています。