このチュートリアルでは、クロムと雪という 2 つのレイヤーからなるシンプルな レイヤー マテリアル を作成するプロセスの実例を示します。最終的なレイヤー マテリアルでは、ワールド位置に基づいたブレンドを使用して、メッシュの接面の上方に雪を自動的に配置し、2 つのマテリアルを効果的に切り替えます。そのブレンド関数は常に上面をチェックし、次の画像で示しているように、オブジェクトを回転しても雪のマテリアルが一番上のままになるようにします。
レイヤー マテリアルの作成時には、各レイヤーをマテリアルとして作成し、ノード ネットワークを新しいマテリアル関数にコピーして貼り付けるのが一般的ですが、このチュートリアルでは、時間を節約するために、最初に関数内で各レイヤーを構築しています。
シンプルなクロム
クロムのテクスチャ |
|
---|---|
T_ExampleLayers_Metal_1_BC.png |
T_ExampleLayers_Metal01_N.png |
(画像右クリックすると名前を付けて保存できます) |
(画像右クリックすると名前を付けて保存できます) |
ベース レイヤーは、視覚的な関心を加えるためにサーフェスにさりげない不完全を持たせた、シンプルなクロム マテリアルです。編集時の操作性を示しやすくするために、このマテリアルには、全体的な外観を微調整できるようにするいくつかの入力があります。
コンテンツ ブラウザ で右クリックし、コンテキスト メニューで [Materials (マテリアル)]、[Material Function (マテリアル関数)] の順に選択します。
マテリアル関数を「Layer_Chrome」という名前にします。
マテリアル関数を ダブルクリック するとマテリアル エディタで開かれます。
マテリアル グラフで 右クリック し、コンテキスト メニューで「Make Material Attributes」を検索して選択します。
Make Material Attributs ノードを Output Result ノードにつなぎます。
クロム マテリアルのネットワーク
次の図はクロム レイヤーのマテリアル グラフを示していて、画像の下にその詳細があるので、簡単にレプリケートできます。使用されている 2 つのテクスチャは、Base Color と Roughness 用の T_ExampleLayers_Metal_1_BC.png と、法線マップ用の T_ExampleLayers_Metal01_N.png であり、どちらもこのページの上部でダウンロードできます。
クリックして画像を拡大します
マテリアル グラフにある 4 つのコメント ブロックについて以下に説明しています。
Base Color - Base Color では、線形補間 (Lerp) を使用して、ベースのクロムの色と非常に暗いグレー値 (0.3) がブレンドされています。Base Color では、Function Input ノードが作成され、「Tint」という名前になっています。[Details] パネルで、入力タイプが [Vector3] に設定されていることを確認します。そうなっていれば、カラーを関数に入力して、クロムの色合いを変更できます。T_ExampleLayers_Metal_1_BC テクスチャの赤チャンネルを使用して、2 つの値の補間が制御されています。
Metallic - これはメタル マテリアルであるため、値 1 が Metallic の入力に渡されています。
Roughness - クロム マテリアルでは通常、Roughness を非常に低くしておく必要がありますが、微妙に変化させると、マテリアルの全体的な外観に奥行きを与えることができます。この例では、クロムのテクスチャの赤チャンネルを使用して、0.2 ~ 0.4 の範囲の値で線形補間を行っています。こうすることで、テクスチャ マップ上の暗い領域ほど、明るい領域よりもラフネスの値が少し高くなります。
Customizable Normal - このネットワークは、接線空間の法線マップを受け取って、それがマップのディテールの大部分を制御する緑チャンネルと赤チャンネルを分離しています。チャンネルごとに、もう 1 つの関数入力から与えられる値が乗算されています。この入力はスカラー型に設定されていて、「Normal Multiplier」という名前であり、デフォルト値は 1.0 です。AppendVector node ノードを使用して、その結果が加算されてから、法線マップの青チャンネルに加算されています。そうすることで、ユーザーが Normal Multiplier の値を変更することによって法線の高さを調整できるようになります。
変更が終わったら、マテリアル関数 をコンパイルして保存します。
シンプルな雪
雪のテクスチャ |
|
---|---|
T_Cave_Ice_Tiling_D.png |
T_Cave_Ice_Noise_N.png |
(画像右クリックすると名前を付けて保存できます) |
(画像右クリックすると名前を付けて保存できます) |
上記の 2 つのテクスチャをダウンロードし、Unreal Engine にインポートします。以下の手順に従って、雪のレイヤー用の 2 つ目の関数を作成します。
コンテンツ ブラウザ で右クリックし、コンテキスト メニューで [Materials (マテリアル)]、[Material Function (マテリアル関数)] の順に選択します。
マテリアル関数を「Layer_Snow」という名前にします。
マテリアル関数を ダブルクリック するとマテリアル エディタで開かれます。
マテリアル グラフで 右クリック し、コンテキスト メニューで「Make Material Attributes」を検索して、それをグラフに追加します。
Make Material Attributs ノードを Output Result ノードにつなぎます。
雪のレイヤーのネットワーク
次の図は雪のマテリアル グラフの詳細を示しています。このレイヤーでは、T_Cave_Ice_Tiling_D.png と T_Cave_Ice_Noise_N.png という 2 つのテクスチャが使用されていて、どちらもこのページの上部でダウンロードできます。
Base Color - ここでは FuzzyShading マテリアル関数が使用されているので、このネットワークの中で唯一の比較的高度な部分です。この関数は、マテリアルに光が差しているときに、テクスチャが暗くなりすぎないようにします。これは線維状のサーフェスを光が通り抜けるのと似ています。これによって、ベルベットや苔など、この例では雪に最適になります。この値を 0.3 の累乗に増やすことで、Base Color のテクスチャ (T_Cave_Ice_Tiling_D.png)からコントラストがある程度取り除かれています。
次に、その結果が FuzzyShading マテリアル関数につながれています。このマテリアル関数は、マテリアル エディタのパレットにある [Functions (関数)] タブで挿入できます。CoreDarkness は 0、Power は 1、EdgeBrightness は 0.5 に設定されています。そして、その結果に非常に淡い青色 (R=0.8, G=0.9, B=0.95) を乗算することによって、寒色で氷のような色がキャストされています。
Metallic - これは非メタリックのサーフェスであるため、Metallic は 0 に設定されています。
Roughness - ちょうど光が当たったときに雪が少し光る必要があるので、T_Cave_Ice_Tiling_D.png テクスチャの赤チャンネルを使用して、0.6 ~ 0.3 の範囲の値で線形補間を制御します。
Normal - この独自の法線マップは少し強力すぎます。接線空間の法線マップの効果を小さくする一つの方法は、青チャンネルの強度を 2 倍にすることです。そうするには、値が (1,1,2) である Constant3 ベクターを法線マップに乗算します。
変更が終わったら、結果を保存します。
レイヤー マテリアル
これで、マテリアルを作成し、2 つのレイヤー関数をブレンドできるようになりました。この例では、雪が常にサーフェスの一番上に現れるように構成されています。このマテリアルには、マテリアル インスタンスでカスタマイズ可能にするためのいくつかのパラメータもあります。
コンテンツブラウザ で [Add New (新規追加)] ボタンをクリックして、コンテキスト メニューで [Material] を選択します。
新しいマテリアルを「Mat_SnowyChrome」という名前にします。
マテリアルを ダブルクリック するとマテリアル エディタで開かれます。
マテリアル関数 Layer_Chrome と Layer_Snow を コンテンツ ブラウザ からマテリアル グラフにドラッグします。
マテリアル グラフの背景をクリックすると、ベース マテリアルのプロパティが [Details] パネルに表示されます。[Use Material Attributes (マテリアル属性の使用)] のチェックボックスをオンにします。
パレットから MatLayerBlend_Simple マテリアル関数と WorldAlignedBlend 関数を追加します。MatLayerBlend_Simple はクロムから雪への遷移を実行し、WorldAlignedBlend はサーフェスが指している方向に基づいてレイヤー ブレンドを動作させます。
レイヤー マテリアルのネットワーク
次の図は Mat_SnowyChrome マテリアルのネットワークの詳細を示していて、コメントが付いている各領域について説明しています。
Chrome Setup - 2 つのパラメータが Layer_Chrome マテリアル関数につながれています。1 つ目は Chrome Normal というスカラー パラメータであり、NormalMultiplier 入力の制御に使用されています。2 つ目は ChromeTint というベクター パラメータであり、Tint 入力を制御しています。これらのパラメータを使用すると、法線マップの強度を変更することや、後でマテリアルがインスタンス化されたときにクロムの色合いを変更することができます。
Snow Setup - 追加ノードは必要ありません。Layer_Snow マテリアル関数はブレンド ノードに直接につながれています。
World Aligned Blend Setup - WorldAlignedBlend ノードは、マテリアル ブレンドの位置とシャープネスを制御します。Blend Sharpness の値が 10 に設定されています。BlendBias**というスカラー パラメータが作成されて Blend Bias** 入力につながれています。こうすることで、ブレンドが行われるメッシュ上の垂直位置を調整できるようになります。
MatLayerBlend - このノードには、ブレンドを制御するロジックが入っています。この例では、Base Material は Layer_Chrome であり、Top Material は Layer_Snow です。WorldAlignedBlend は Alpha 入力につながれていて、遷移を制御します。
変更が終わったら、マテリアルを保存します。
レイヤー マテリアルをインスタンス化する
このマテリアルには 2 つのパラメータがあるので、マテリアル インスタンスを作成し、マテリアル レイヤーの側面をカスタマイズできるようになっています。
プロジェクトにスターター コンテンツが含まれている場合は、新しいマテリアルを適用する 1 組の椅子とテーブルがあります。含まれていない場合は、独自のアセットをいくつか自由に選択してシーンに配置します。
Mat_SnowyChrome マテリアルを右クリックし、コンテキスト メニューで [Create Material Instance (マテリアル インスタンスを作成)] を選択します。デフォルトの名前のままにしておきます。
そのマテリアル インスタンス アセットを、コンテンツ ブラウザ からシーン内のいずれかのオブジェクトにドラッグします。