Unreal Engine (UE) には、ランドスケープのテクスチャを向上させるのに役立つ、ランドスケープ特有のマテリアル ノードがあります。 それらのノードを、UE の他のマテリアルとともに使用することができます。
ランドスケープ マテリアルは、他のマテリアルと同じように、マテリアル エディタで作成および変更できます。
レイヤーのウェイトと順序
ランドスケープ マテリアルは複数のレイヤー間のブレンドとして動作し、そのブレンドでは、ペイント済みブレンド ウェイトによって各レイヤーの影響が制御されます。
マテリアル グラフは、ウェイトがどのように補間されてブレンド結果が達成されるかを決定します。 ブレンド方法は、ランドスケープが最終的な結果でそれらのウェイトをどのように使用するかを指定します。
ブレンド方法には、ウェイト ブレンドとアルファ ブレンドの 2 つがあります。 これらの方法を一緒に使用して、さまざまなエフェクト (草や土のレイヤーの上の雪など) を作り出すことができます。
| ブレンドモード | 説明 |
|---|---|
Weight Blending (ウェイト ブレンド) | マテリアルの各レイヤーに、対応するパーセンテージ値を表す 1 つのレイヤーが 100% でペイントされている場合、他のすべてのレイヤーのウェイト値は 0% です。 つまり、他のすべてのレイヤーのウェイト値は 0% であるため、ペイント ツールを使用して、100% であるレイヤーを取り除くと、それを置き換えるものがありません。 そのため、そのレイヤーが変化しなかったかのように見えます。 |
Alpha Blending (アルファ ブレンド) | 各レイヤーに 0 ~ 100% の範囲のアルファ パーセンテージ値を割り当てます。 マテリアル グラフが、順序付きブレンドに設定されている場合、この方法では、レイヤーが適用されている順序が優先されます。 アルファ レイヤーは、重み付けされた他のレイヤーとは別に存在するため、アルファ レイヤーのウェイトが増えると、既存の他のレイヤーのウェイトが減ります。 |
ランドスケープ特有のマテリアル ノード
マテリアル エディタ内には、ランドスケープ システムで使用できる、いくつかの特有のノードがあります。 それらのノードを見つけるには、右クリックしてコンテキスト メニューを検索するか、[Palette (パレット)] メニューで検索します。
Landscape Layer Blend ノード
Landscape Layer Blend ノードは、テクスチャ サンプルやマテリアルなど、レイヤーごとの複数の値をブレンドします。 レイヤーのブレンド ウェイトが高いほど、ブレンド結果により大きな影響を及ぼします。
新しいレイヤーを追加するには、プラス (+) アイコンをクリックします。
このノードに複数のレイヤーを追加すると、LandscapeLayerBlend ノードにレイヤー名が表示されます。 このノードには次の入力があります。
| 番号 | プロパティ | 説明 |
|---|---|---|
1 | Layers (レイヤー) | 配列に含まれるレイヤーを列挙します。 プラス アイコン (₊) をクリックして新しいレイヤーを追加します。 |
2 | Additional Layers | 折りたたまれた追加のレイヤーを表示します。 |
3 | Layer Name | レイヤーの一意の名前を表示します。 Layer Name はランドスケープ ツール ウィンドウの [Paint (ペイント)] モードで使用されるレイヤー名に一致します。 |
4 | Blend Type | このレイヤーで使用されるブレンド モードを定義します。 オプションには、[LB Alpha Blend]、[LB Height Blend]、または [LB Weight Blend] があります。詳細については、「ランドスケープ レイヤー ブレンドのタイプ」を参照してください。 |
5 | Preview Weight | マテリアル エディタでブレンドをプレビューするときに使用するウェイト値を表示します。 |
6 | Const Layer Input | テクスチャを使用しない場合に使用する RGB 値を定義します。 これはレイヤーのデバッグに使用されます。 |
7 | Const Height Input | テクスチャを使用しない場合に使用する高さの値を定義します。 |
Landscape Layer Blend ノードには、次の入力と出力があります。
| 番号 | 項目 | 説明 |
|---|---|---|
1 | レイヤーのレイヤー名 | レイヤーの一意の名前を表示します。 この入力は、[Details (詳細)] パネルでレイヤーを追加して名前を付けた後に限り使用できます。 |
2 | 高さのレイヤー名 | 名前を付けたレイヤーとブレンドする高さマップを定義します。 この入力は、Blend Type プロパティが [LB Height Blend] に設定されているレイヤーでのみ表示されます。 |
3 | 出力 | ブレンド結果を出力します。 |
レイヤー名はすべて一意である必要があります。 レイヤーのコンテンツを表すわかりやすい名前にすることをお勧めします。
Landscape Layer Coords ノード
Landscape Layer Coords ノードは、ランドスケープ マテリアルをランドスケープにマッピングするために使用される UV 座標を生成します。
このノードには次のオプションがあります。
| 番号 | プロパティ | 説明 |
|---|---|---|
1 | Mapping Type | マテリアルまたはネットワークをランドスケープにマッピングするときに使用する向きを指定します。 これには、次のオプションがあります。
|
2 | Custom UVType | タイプに基づいてマテリアルをランドスケープにマッピングするための UV 座標を出力します。 これには、次のオプションがあります。
|
3 | Mapping Scale | UV 座標に均一なスケーリングを適用します。 |
4 | Mapping Rotation | UV 座標に回転 (度単位) を適用します。 |
5 | Mapping Pan [U] | UV 座標に [U] 方向のオフセットを適用します。 |
6 | Mapping Pan [V] | UV 座標に [V] 方向のオフセットを適用します。 |
7 | Unlabeled Output | 指定されたプロパティ値に基づいてマテリアルをランドスケープにマッピングするための UV 座標を出力します。 |
Landscape Layer Switch ノード
Landscape Layer Switch ノードを使用すると、特定のレイヤーがランドスケープの特定の領域に影響していない場合に、マテリアルの一部の演算を除外することができます。 これを使用すると、レイヤーのウェイトが「0」である場合に不要な計算を削除して、マテリアルを最適化できます。
このノードには次のオプションがあります。
| 番号 | プロパティ | 説明 |
|---|---|---|
1 | Parameter Name | パラメータの一意の名前を表示します。 |
2 | Preview Used | オンの場合、プレビューを使用します。 |
3 | Layer Used | 特定のレイヤーがランドスケープの現在の領域によって使用されている場合に使用するマテリアル ネットワークを示します。 |
4 | Layer Not Used | 特定のレイヤーがランドスケープの現在のリージョンによって使用されていない場合に使用するマテリアル ネットワークを示します。 |
5 | Output | レイヤーがランドスケープの特定の領域に影響するかどうかに応じて、Layer Used 入力または Layer Not Used 入力のいずれかを使用します。 |
Landscape Layer Weight ノード
Landscape Layer Weight ノードを使用すると、レイヤー ウェイトにアクセスし、マテリアル グラフに独自のカスタム ブレンド ソリューションを実装できます。 出力は (Base + Layer * LayerWeight) を返します。 複数の Landscape Layer Weight ノードを連結することで、指定されたレイヤー間でブレンドされる加重和を生成できます。
Base 値を 0 に、Layer 値を 1.0 に設定することで、変更することなく LayerWeight 値に直接アクセスできます。
このノードには次のオプションがあります。
| 番号 | プロパティ | 説明 |
|---|---|---|
1 | Parameter Name | 読み取りたいウェイトのレイヤーの名前を表示します。 |
2 | Preview Weight | マテリアル エディタでプレビューのために使用するウェイトを定義します。 |
3 | Const Base | Base が接続されていない場合に使用する特定の RGB の定数値を定義します。 |
4 | Base | このレイヤーとブレンドするノード ネットワーク。 これには、前のレイヤーの値とその他の基礎データが含まれます。 これにより、レイヤー値にペイントされたレイヤーのウェイトが乗算されます。 |
5 | Layer | 指定されたレイヤーの値。 この入力値はレイヤーのウェイトで乗算され、Base に累積されて出力値が生成されます。 |
6 | Output | 入力のレイヤーのウェイトに基づいて Base 入力および Layer 入力をブレンドした結果を出力します。 |
Landscape Visibility Mask ノード
Landscape Visibility Mask ノードは、ランドスケープの可視性の値を出力します。
このノードには次のオプションがあります。
| 番号 | プロパティ | 説明 |
|---|---|---|
1 | Output | 可視性マスクの値を出力します。 ランドスケープが透明な場合は値が |
ランドスケープの穴マテリアルは独立して作成できます。 ランドスケープ マテリアルとランドスケープの穴マテリアルには同じマテリアルを使用できますが、オパシティ マスクを使用しているマテリアルは、パフォーマンスに関してより高い負荷がかかります。
ランドスケープ レイヤーのブレンド タイプ
Landscape Layer Blend ノードには 3 つのブレンド モードがあります。 使用するレイヤー ブレンド タイプごとに、達成される結果は異なります。
| ブレンドタイプ | 機能 |
|---|---|
LB Weight Blend (LB ウェイト ブレンド) | すべての LB ウェイト ブレンド レイヤー間で重み付けされたブレンドを実装します。 この型は、順序に依存しません。 |
LB Alpha Blend (LB アルファ ブレンド) | LB ウェイト ブレンドと LB 高さブレンドの上に、アルファ ブレンドされたオーバーレイを実装します。 各 LB アルファ ブレンド レイヤーは、リスト内に現れる順序で適用されます。 たとえば、岩と草の上に雪をペイントすると、その両方がオクルードされますが、雪を消すとその下の岩と草が現れます。 |
LB Height Blend (LB 高さブレンド) | これは LB ウェイト ブレンドと同じですが、高さマップに基づいたレイヤー間の遷移にディテールの追加も行います。 たとえば、岩と泥との間で滑らかにブレンドするのではなく、レイヤーの遷移点にある岩どうしの隙間に土が現れるようにすることができます。 |
[LB Height Blend] の例を以下に示します。
レイヤーの遷移点で岩の間の隙間に土が現れて、レイヤーが接触するところで滑らかな遷移が作り出されています。
ランドスケープ レイヤー ブレンドの技術情報
ランドスケープ レイヤーのノードは Static Switch Parameter ノードと同様に動作し、 使用するマテリアルのブランチを切り替えます。 ランドスケープの各コンポーネントには、そのコンポーネントだけに適用されるメインのランドスケープ マテリアルから作成された、独自のマテリアル インスタンス定数があります。
ランドスケープ コンポーネントで特定のレイヤーが使用されていなければ、そのレイヤーにつながれているノードのサブツリーは破棄されます。 これにより、複雑さが軽減され、ランドスケープに適用されているマテリアルに、シェーダー モデルで設定されている上限以内の任意の数のテクスチャ サンプルを含めることができます。
この方法を使用して、最終結果をハードウェアで許容されているパラメータの範囲内に維持したままで、必要とするすべてのテクスチャやマテリアルが入っているマスター ランドスケープ マテリアルを作成することができます。
マテリアル式のすべてのネットワークは、単純な Texture Sample ノードではなく、Layer ノードの入力につなぐことができます。 これにより、さらに複雑なエフェクトが可能になります。たとえば、どのくらい離れてレイヤーを眺めるかに応じて、詳細テクスチャからより大きなマクロ テクスチャに遷移するエフェクトなどを実現できます。
レイヤー ブレンドの問題点
複数のランドスケープ レイヤーで [LB Height Blend (LB 高さブレンド)] モードを使用すると、異なるレイヤーが重なるランドスケープで黒い領域ができることがあります。 LB Height Blend は指定された高さ値でブレンド係数やウェイトを管理することで機能します。 領域に複数のレイヤーがペイントされ、[LB Height Blend] に設定されている場合、特定の領域にペイントされたレイヤーが同時に高さ値を「0」に設定する可能性があるため、各レイヤーの望ましいブレンド係数は「0」になります。
順序付けがないことにより、黒い領域が表示される可能性があります。これは、その領域に影響を及ぼすレイヤーがないためです。 法線マップをブレンドすると、さらに多くの黒い領域が表示される可能性があります。これは、ブレンドの結果の法線値が (0,0,0) という無効な値となり、ライティングに関する問題が発生するためです。 この問題が発生する場合は、ウェイトがゼロ以外のマテリアルでその領域をペイントします。
左の画像では、レイヤーはすべて LB Height Blend であり、一部の領域が黒くなっています。 右の画像では、赤い「1」のレイヤーが LB Alpha Blend を使用するように変更されています。
以下の Landscape Layer Blend ノードのプロパティの例では、複数のレイヤーがすべてブレンドされています。 Soil レイヤーのブレンド モードが LB Alpha Blend に設定され、他のレイヤーが LB Height Blend に設定されています。 これは、上記の問題を防ぐためです。
レイヤーを削除するには、レイヤーの要素番号の右側にあるドロップダウン矢印をクリックして、[Delete (削除)] を選択します。
モバイル ランドスケープ マテリアル
十分な数の Texture Sampler ノードがある限り、任意の数のランドスケープ レイヤーを使用できます。 ランドスケープ レイヤーのアロケーションには Feature Level Switch マテリアル ノードが使用されているため、1 つの PC または Console Landscape Material でもモバイル バージョンを使用できるようになっています。 次の図は、フォートナイト バトル ロイヤルでのランドスケープがモバイル デバイスに使用された場合にどのように見えるかを示しています。
任意の数のノードを使用できますが、3 つだけを使用することをお勧めします。
レイヤー ブレンドを使用する
複数のテクスチャおよびマテリアル ネットワークをペイント可能ランドスケープ レイヤーにブレンドすることは、ランドスケープ テレインのテクスチャリングの基本であり、 次の 2 つの方法があります。
複数の Landscape Layer Weight ノードを使用する
最大 2 つの Landscape Layer Blend ノードを使用する
Landscape Layer Weight ノード
LandscapeLayerWeight ノードの設定方法:
マテリアル エディタで LandscapeLayerWeight ノードを追加します。
[Details (詳細)] パネルで、[Parameter Name (パラメータ名)] をわかりやすいレイヤー名に変更します (例:「Rock」)。
レイヤー名はすべて一意である必要があります。 レイヤーのコンテンツを表すわかりやすい名前にすることをお勧めします。
マテリアルを適用するレイヤーごとに 1 つのノードになるまで、Landscape Layer Weight ノードを追加します。 この例では LandscapeLayerWeight ノードを 2 つ使用しています。
Texture Sample ノードまたはマテリアル ネットワーク式を、Landscape Layer Weight ノードに追加してつなぎます。
LandscapeLayerCoords ノードを追加し、UV タイル処理を設定します。 それを Texture Sample ノードにつなぎます。
各 Layer ノードの出力ピンを次の Layer ノードの Base ピンにつなぎ、最初の Layer ノードの Base ピンはつながず、そのままにしておきます。
最後の Layer ノードの出力ピンを、マテリアルの Base ノードの Base Color 入力につなぎます。
次の例のようになっているはずです。
LandscapeLayerWeight ノードの Preview Weight プロパティを変更すると、マテリアルへのさまざまなウェイトの効果をプレビューすることができます。
Landscape Layer Blend ノード
LandscapeLayerWeight ノードを使用してレイヤーを手動でブレンドする代わりに、LandscapeLayerBlend ノードで、アルファ ブレンドまたは高さベースのオフセットによるアルファ ブレンドのいずれかを使用して、複数のレイヤーをまとめて自動的にブレンドすることができます。 高さベースのオフセットでは、入力された高さマップに基づいてレイヤーを他のレイヤーとブレンドすることができます。
マテリアル エディタで LandscapeLayerBlend ノードを追加します。
[Details] パネルで、Layers ノードの横にある [+] アイコン () をクリックして新しいレイヤーを追加します。
レイヤーを展開してそのプロパティを表示します。
Layer Name を、わかりやすいレイヤー名に変更します (例:「Snow」)。
レイヤーをアルファ ブレンドまたは高さブレンドのどちらにするかを決め、それに応じて Blend Type を設定します。
ランドスケープ マテリアルに必要な数だけレイヤーを追加します。 それらの名前を変更し、Blend Type を適切に設定します。
LandscapeLayerBlend ノードの出力ピンを、マテリアルのベース ノードの Base Color 入力ピンにつなぎます。
Texture Sample ノードを追加し、そのノードのメイン出力を LandscapeLayerBlend ノードの Layer 入力につなぎます。 または、さらに複雑なマテリアル ネットワークを作成して、Landscape Layer Blend の Layer 入力につなぐこともできます。 高さブレンドされたレイヤーでは、Texture Sample のアルファ出力を Landscape Layer Blend の Height 入力につなぎます。
完了すると、ランドスケープ マテリアル ネットワークは次のようになっているはずです。
LandscapeLayerBlend ノードの Preview Weight プロパティを変更すると、マテリアルへのさまざまなウェイトの効果をプレビューすることができます。
ランドスケープの穴マテリアルを作成する
ランドスケープの穴マテリアルを使用して、特定のロケーションの可視性とコリジョンをマスクで除外し、ランドスケープにトンネルや洞窟用の穴を作り出すことができます。
マテリアル エディタを開き、[Details] パネルで、Blend Mode を [Masked (マスク)] に設定します。
LandscapeVisibilityMask ノードをマテリアル グラフに追加し、その出力を Opacity Mask 入力につなぎます。
マテリアルをコンパイルしてから、それをランドスケープに割り当てます。 それは、[Details] パネルの [Landscape Hole Material (ランドスケープの穴マテリアル)] セクションで行うことができます。
残りのランドスケープ マテリアルをセットアップします。 完了すると、次のようになっているはずです。
次の動画のように、テレインの可視性のマスクを適用および解除できるようになりました。
ペイント ツールを使用してランドスケープの穴を作成する方法については、「オパシティ マスキングを使用して穴を作成する」を参照してください。
マテリアルをランドスケープに割り当てる
ランドスケープ マテリアルを作成したら、そのマテリアルをレベルにあるランドスケープ アクタに割り当てます。
コンテンツ ブラウザで、使用するランドスケープ マテリアルを見つけます。
ビューポート内で、またはアウトライナを使用して、そのランドスケープを選択します。
そのランドスケープの [Details] パネルで、[Landscape Material (ランドスケープマテリアル)] オプションを見つけ、[Assign (割り当て)] 矢印アイコン () をクリックすると、選択されているマテリアルが割り当てられます。
ランドスケープの穴マテリアルをランドスケープに割り当てる
さまざまなマテリアルを、ランドスケープの穴マテリアルとして機能するように割り当てることができます。ランドスケープの穴マテリアルは、特別なオパシティ設定を持つマテリアルです。
穴マテリアルについては、「ランドスケープ穴マテリアル」のセクションを参照してください。 オパシティ マスキングについては、「オパシティ マスキングを使用して穴を作成する」を参照してください。
コンテンツ ブラウザで、使用するランドスケープの穴マテリアルを見つけて選択します。
ビューポートで、または [World Outliner (アウトライナ)] で、ランドスケープを選択します。
[Details (詳細)] > [Landscape (ランドスケープ)] > [Landscape Hole Material (ランドスケープの穴マテリアル)] に移動します。 選択済みマテリアルを割り当てるには、矢印を選択します。