ランドスケープ マテリアル

ランドスケープ テレインで作業するためのマテリアルの設定方法について説明します。

Windows
MacOS
Linux

どの マテリアル でも Landscape アクタと一緒に使用できますが、Unreal Engine 4 (UE4) 搭載のマテリアル システムでは、ランドスケープのテクスチャを大幅に向上させる複数の特殊なランドスケープ固有のマテリアル ノードを利用できます。このページでは、これらのノードの機能、ランドスケープ マテリアルでのこれらのノードの使用方法について、詳しく説明します。

ランドスケープで使用するためには、他のマテリアルを変更する場合と同じ方法で、マテリアル エディタ でマテリアルを変更します。

レイヤーのウエイトと順序

ランドスケープは、アルファ ブレンドではなく重み付けブレンドを使用します。そのため、あらゆる位置のすべてのレイヤーのブレンド係数は 1.0 まで追加されます。アルファ ブレンドのメリットは順序に依存しないため、いつでもどのレイヤーでもペイントできる点です。また、アルファ レイヤーの重みが増すと、他の既存のレイヤーの重みが減ります。

デメリットは、1 つのレイヤーを 100% まで完全にペイントすると、他のすべてのレイヤーの重み値が 0% になることです。すでに 100% になっているレイヤーを ペイント ツールを使用して削除すると、このことがよくわかります。他のレイヤーは 0% であるため、削除している 100% のレイヤーをどのレイヤーと置き換えるべきか、ペイント ツールでは検出しません。そのため、ツールがレイヤーを変更しなかったように見えます。

ランドスケープ固有のマテリアル ノード

マテリアル エディタには、ランドスケープ システムで使用できる 6 つの特別なノードがあります。これらすべてのノードが、[Landscape (ランドスケープ)] カテゴリの [Palette (パレット)] メニューにあります。

Material Editor Context Menu

Landscape Layer Blend ノード

LandscapeLayerBlend ノードを使用すると、複数のテクスチャまたはマテリアル ネットワークを一緒にブレンドして、ランドスケープ レイヤーとして使用できるようになります。LandscapeLayerBlend は配列を使用して、ランドスケープ レイヤーに関する情報を格納します。この配列にレイヤーを追加するには、[+] アイコンを選択します。

Layer_Blend_arrayelements.png

LandscapeLayerBlend ノードに複数のレイヤーを追加すると、LandscapeLayerBlend ノードに [Layer Names (レイヤー名)] が入力されます。

LandscapeLayerBlend Mode

番号

プロパティ

説明

1

Layers (レイヤー)

ノードに含まれるレイヤーのリスト。プラス アイコン (Plus Sign) をクリックするとレイヤーを追加できます。

2

Additional Layers

これらは追加のレイヤーで、折り畳まれているときのように表示されます。

3

Layer Name

レイヤーに付ける一意の名前。[Layer Name (レイヤー名)] はランドスケープ ツール ウィンドウの [Paint (ペイント)] モード で使用されるレイヤー名に対応します。

4

Blend Type

LB_AlphaBlendLB_HeightBlend、または LB_WeightBlend のいずれか。このページの「ランドスケープ レイヤー ブレンド タイプ」を参照してください。

5

Preview Weight

マテリアル エディタでブレンドをプレビューするためのレイヤーの重み値として使用されます。

6

Const Layer Input

これは、テクスチャを使用しない場合に、使用する色を数値として指定するための設定です。主に、レイヤーに問題がある際のデバッグに使用されます。

7

Const Height Input

これは、テクスチャを使用しない場合に、高さを数値として指定するための設定です。

以下の表は、Layer Blend ノードの入力および出力の詳細です。

layer_blend_node.png

番号

項目

説明

1

Layer *LayerName

各レイヤーが、相互にブレンドするための入力を追加します。この入力は、レイヤーが [Details (詳細)] パネルに追加され、名前が付けられるまで利用できません。

2

Height *LayerName

ブレンドする高さマップを指定します。この入力は、[Blend Type (ブレンド タイプ)] プロパティが LB_HeightBlend に設定されたレイヤーでのみ表示されます。

3

Unlabeled Output

相互にブレンドされたレイヤーの結果。

レイヤーをブレンドする

特定の組み合わせのレイヤー ブレンド モードを使用すると、ランドスケープ全体で、異なるレイヤーが重なる場所に黒い領域ができることがあります。この問題は、特に、複数のランドスケープ レイヤーで LB_HeightBlen モードを使用する場合に発生します。LB_HeightBlend は指定された高さ値でブレンド係数や重みを調整することで動作します。領域に複数のレイヤーをペイントし、それらがすべて LB_HeightBlend に設定されている場合、特定の領域にペイントされたレイヤーがすべて同時に高さ値を「0」に設定することができるため、各レイヤーの望ましいブレンド係数は「0」になります。

暗黙的または明示的な順序付けがない場合、レイヤーがその領域に関与しないため、黒い領域となります。法線マップをブレンドすると、法線値が (0,0,0) という無効な値となり、ライティングに関するレンダリングの問題が発生するため、状況はさらに悪化します。この問題を解決するには、次の例のようにレイヤーの 1 つに LB_AlphaBlend を使用します。

左の画像では、レイヤーはすべて LB_HeightBlend であり、ところどころ黒くなっています。右の画像では、赤い「1」のレイヤーに LB_AlphaBlend を使用するようにしたところ問題が解決しました。

LB_HeightBlend Problem

次の Landscape Layer Blend ノードのプロパティの例では、複数のレイヤーがすべてブレンドされています。Soil レイヤ-のブレンド モードが LB_AlphaBlend に設定され、他のレイヤーが LB_HeightBlend に設定されていることを確認してください。これは、上記の問題 (レイヤーが重なる部分に黒い点が発生する) を防ぐためです。

Layer Blend Properties

レイヤーを削除する必要がある場合は、レイヤーの要素番号の右側にあるドロップダウン矢印をクリックしてメニューを開き [Delete (削除)] を選択します。

Delete Layer

Landscape Layer Coords ノード

LandscapeLayerCoords ノードは、マテリアル ネットワークをランドスケープ テレインにマッピングするために使用できる UV 座標を生成します。

LandscapeLayerCoords Node

番号

プロパティ

説明

1

Mapping Type

マテリアル (またはネットワーク) をランドスケープにマッピングするときに使用する方向を指定する ELandscapeCoordMappingType

2

Custom UVType

テレイン上で使用するマッピング位置。CustomUVType では、指定されたプロパティ値に基づいてマテリアルをランドスケープにマッピングするための 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 ノード

LandscapeLayerSwitch ノードを使用すると、特定のレイヤーがランドスケープの特定の領域に関与していない場合に、マテリアルの一部の演算を除外するこができます。これにより、特定のレイヤーの重みが「0」である場合に不要な計算を削除して、マテリアルを最適化できます。

LandscapeLayerSwitch Node

番号

プロパティ

説明

1

Parameter Name

パラメータに付ける一意の名前。

2

Preview Used

オンの場合、プレビューを使用します。

3

LayerUsed

ノードのプロパティで指定されているレイヤーがランドスケープの現在の領域で使用される場合に使用します。

4

LayerNotUsed

レイヤーがランドスケープの現在の領域で使用されておらず、重みがゼロの場合に使用します。

5

Unlabeled Output

レイヤーがランドスケープの特定の領域に関与しているかどうかに応じて、LayerUsed 入力または LayerNotUsed 入力のいずれかを使用します。

Landscape Layer Weight ノード

LandscapeLayerWeight 表現式を使用すると、マテリアルが適用されるランドスケープから取得される関連レイヤーの重みに基づいてマテリアル ネットワークをブレンドできるようになります。このレイヤーの重みは、2 つの入力ネットワークをブレンドするためのアルファ値として使用されます。

LandscapeLayerWeight Node

番号

プロパティ

説明

1

Parameter Name

パラメータに付ける一意の名前。

2

Preview Weight

マテリアル エディタでプレビューのために使用する重み。

3

Const Base

ランドスケープに必要なベース カラーをここで指定できます。

4

Base

このレイヤーとブレンドするネットワーク。通常、これより前に行われたレイヤーのブレンドの結果です。ただし、これが最初のレイヤーである場合は空になることがあります。

5

Layer

このレイヤーを作成するためにまとめてブレンドするネットワーク。

6

Unlabeled Output

関係するレイヤーの重みに基づいて Base 入力および Layer 入力をブレンドした結果を出力します。

Landscape Visibility Mask ノード

LandscapeVisibilityMask ノードでは、ランドスケープの可視化部分を除去することで、洞窟の作成などランドスケープに穴を作成できるようにします。

LandscapeVisibilityMask Node

番号

プロパティ

説明

1

Unlabeled Output (ラベルなし出力)

可視性マスクのプロパティを出力します。

出力がマテリアルの [Opacity Mask (オパシティ マスク)] スロットに接続されていることと、マテリアルの [Blend Mode (ブレンド モード)][Masked (マスク適用)] に設定されていることを確認してください。この設定を行わないと、ノードが正しく動作しない場合があります。

layer_visibility_mask_opacitymask.png

ランドスケープのレイヤーブレンドのタイプ

ランドスケープ レイヤー ブレンド マテリアル ノードでは、3 種類のブレンド モードを選択できます。実現したい結果に応じて、それぞれ異なる レイヤー ブレンド タイプを使用します。

ブレンドの種類

機能

LB Weight Blend (LB 重みブレンド)

このモードは、World Machine などの外部プログラムのレイヤーを使用している場合や、レイヤーの順序を気にすることなく相互に独立したレイヤーをペイントできるようにしたい場合に使用します。

LB Alpha Blend (LB アルファ ブレンド)

細部にペイントしたい場合や、レイヤーの順序が定義されている必要がある場合に、使用します。例えば、岩や草の上の雪をペイントすると、それらをオクルードできますが、雪を消すとその下の岩や草があらわれます。

LB Weight Blend (LB 高さブレンド)

これは LB_WeightBlend と同じですが、高さマップに基づいたレイヤー間の遷移に詳細も追加します。これを使用すると、例えば、岩と泥との間のスムーズなブレンドの代わりに、レイヤーの遷移点にある岩どうしの隙間に土が現れるようにすることができます。

以下は、LB Height Blend が実行された例です。ご覧のように、レイヤーの遷移点で岩どうしの隙間に土が表示されています。この方法により、レイヤーが重なる場所をうまく遷移させることができます。

LB_HeightBlend.png

ランドスケープ レイヤーのブレンドの技術情報

これらのレイヤー ノードは、Static Switch Parameter ノードのように動作するので、マテリアルの 1 部から別の部分への切り替えが可能です。ランドスケープの各コンポーネントには、そのコンポーネントだけに適用されるメインのランドスケープ マテリアルから作成された、独自の MaterialInstanceConstant があります。特定のレイヤーが特定のランドスケープ コンポーネント上で使用されていない場合は、そのレイヤーに接続されているノードのサブツリーが破棄されます。このことにより、マテリアルの全体的な複雑度が低下し、ランドスケープに適用されているマテリアルが任意の数のテクスチャ サンプルを含むことができるようになります。ただし、そのためには、個々のコンポーネント上で使用されているサンプルの数が、シェーダ モデルの仕様によって設定されている最大値を超えないことが条件となります (SM 3.0 では 16)。

つまり、ランドスケープ上のあらゆる部分で使用されている、あらゆるテクスチャまたはネットワークを含むマスター マテリアルを設定できるということです。その結果、非常に複雑なネットワークの集合体ができる可能性があります (その一方で、ランドスケープのコンポーネントに適用されている最終的なマテリアルは、ハードウェアで許可されたパラメータ内で維持されます)。

マテリアル式のすべてのネットワークは、単純な TextureSample ではなく、Layer 入力に接続できます。これにより、さらに複雑なエフェクトが可能になります。例えば、どのくらい離れてレイヤーを眺めるかに応じて、詳細なテクスチャからより大きなマクロ テクスチャに遷移させるエフェクトなどが実現できます。

テセレーションと変位

マテリアルの Tessellation Multipliers (テッセレーション乗数)World Displacement (ワールド変位) チャンネルは、ランドスケープ テレインと連動して使用されることによって、ランドスケープがカメラの近くにあるときに、詳細と変形をもたらします。これらのチャンネルは、他の標準的なマテリアルの場合とまったく同じように機能し、ベース カラー法線、その他すべてのチャンネルと同様に、レイヤーのブレンドをこれらのチャンネルと併用できます。また、ランドスケープは、ハードウェアのテッセレーションを最高レベルの詳細度 (LOD) でのみレンダリングし、ランドスケープが 2 番目の LOD に近づくにつれてフェードアウトします。後続の LOD ではテッセレーションが有効にならないので、ランドスケープ テレインの変位にテッセレーションを有効にすると、パフォーマンスが大幅に向上します。

これらの機能を使用できるのは、DirectX 11 が有効になっている場合に限られます。そのため、DirectX 11 のハードウェアを特にターゲットにしていない場合は、上記の機能は補助的な仕上げエフェクトとして使用する必要があります。プロジェクトでテッセレーションを有効にして使用する方法の詳細については、「テッセレーション乗数」のページを参照してください。

Landscape_HW_Tess.png

上記のビジュアリゼーションでは、最も高い LOD (白) がテッセレーションを有効にしてレンダリングされており、他の LOD (色付き) はテッセレーションなしでレンダリングされます。

モバイル ランドスケープ マテリアル

モバイル ランドスケープは、もはや 3 つのランドスケープ レイヤーに限定されません。依然として 3 つは最適化されていますが、十分なテクスチャ サンプラーがある場合、任意の数のレイヤーがサポートされます。ランドスケープ レイヤーの割り当てには、Feature Level Switch material ノード を使用するようになりました。それにより、1 つの PC または Console Landscape Material にもモバイル用のバージョンを割り当てることが可能となりました。次の図は、PC およびコンソール バージョンで使用されているランドスケープがモバイル デバイスで使用された場合の Fortnite Battle Royal の外観を示しています。

MobileLandscape_FeatureLevel.png

レイヤー ブレンドを使用する

ペイント可能なランドスケープ レイヤーに複数のテクスチャとマテリアル ネットワークをブレンドする機能は、ランドスケープ テレインをテクスチャリングする際の基本となります。複数のレイヤーをブレンドするためには、複数の LandscapeLayerWeight ノードか、法線マップを使用しているかどうかに応じて、1 または 2 つの LandscapeLayerBlend ノードを使用できます。

Landscape Layer Weight ノードを使用する

LandscapeLayerWeight ノードの設定と使用は非常に簡単です。以下に概要を説明します。

すべてのレイヤー名は一意である必要があるため、レイヤーに含まれている内容を示すわかりやすい名前をレイヤーに付けることをお勧めします。これにより、レイヤー内のコンテンツの場所を思い出したり、レイヤー間を迅速に移動することができます。

  1. マテリアル エディタLandscapeLayerWeight ノードをマテリアル グラフに追加します。[Parameter Name (パラメータ名)] のデフォルトは「None」です。

    1. [Details (詳細)] パネルで、[Parameter Name (パラメータ名)] を記述的なレイヤー名に変更します。例えば、「岩」などです。[Parameter Name (パラメータ名)] を入力すると、ノード自体が更新されます。

![Layer Name](layer_weight_rock.png)
  1. マテリアルを適用したい各レイヤーが 1 つずつノードを持つまで、LandscapeLayerWeight ノードを追加します。この例では、LandscapeLayerWeight ノードを 2 つのみ使用しています。

  2. Texture Samples または他のマテリアル ネットワーク表現式を LandscapeLayerWeight ノードに追加して接続します。

  3. LandscapeLayerCoords ノードを追加して、UV タイリングに必要な設定を行い、Texture Sample ノードに接続します

  4. レイヤー のノードの出力ピンから次のレイヤー ノードの Base ピンへドラッグし、ワイヤーで接続します (最初のレイヤー ノードの Base ピンは接続しないままにしておきます)。

  5. 最後の レイヤー ノードの出力ピンを、マテリアルの Base ノードの Base Color 入力ピンにドラッグします。

完了すると、LandscapeLayerWeight ノードを使用した以下の例のようになります。

Landscape Layer Nodes

マテリアルに対するさまざまな重みの効果をプレビューするには、LandscapeLayerWeight ノードの [Preview Weight (重みのプレビュー)] プロパティを変更します。

Landscape Layer Blend ノードを使用する

LandscapeLayerWeight ノードを使用してレイヤーを手動でブレンドする方法の代わりに、LandscapeLayerBlend ノードを使って複数のレイヤーをブレンドする方法があります。このためには、アルファ ブレンディング、または、高さベースのオフセットを使用するアルファ ブレンディングを使用します。高さベースのオフセットを使用することによって、入力された高さマップに基づいてレイヤーを他のレイヤーとブレンドすることができます。

  1. マテリアル エディタで、LandscapeLayerBlend ノードを追加します。

  2. [Details (詳細)] パネルで、[Layers (レイヤー)] の隣のプラス アイコン (+) をクリックしてレイヤーを追加します。

    Layer_Blend_arrayelements.png

  3. レイヤーを展開してプロパティを表示します。

  4. [Layer Name (レイヤー名)] を「Snow」など、わかりやすいレイヤー名に変更します。

    Layer Name

  5. レイヤーをアルファ ブレンドにするのか高さブレンドにするのかを決めて、それに合わせて [Blend Type (ブレンド タイプ)] を設定します。

  6. ランドスケープ マテリアルに必要な数だけレイヤーを追加します。名前を変更して、[Blend Types (ブレンド タイプ)] を正しく設定します。

  7. LandscapeLayerBlend ノードの出力ピンを、マテリアルの基本ノードの Base Color 入力ピンに接続します。

  8. Texture Sample ノードを追加して、このノードのメイン出力を LandscapeLayerBlend ノードの Layer 入力に接続します。または、さらに複雑なマテリアル ネットワークを作成して、LandscapeLayerBlend の Layer 入力に接続します。レレイヤーが高さブレンドされている場合は、Texture Sample のアルファ出力を LandscapeLayerBlend の Height 入力へ接続します。

完了すると、ランドスケープ マテリアル ネットワークは次のようになります。

Landscape Blend Node

マテリアルに対するさまざまな重みの効果をプレビューするには、LandscapeLayerBlend ノードの [Preview Weight (重みのプレビュー)] プロパティを変更します。

ランドスケープの穴マテリアルを作成する

ランドスケープでの穴の作成は、Manage Mode で実行できますが、ランドスケープ コンポーネント全体を一度に削除することによってのみ実現できます。これを回避するには、ランドスケープの穴マテリアルを使用して、ランドスケープの特定の場所のコリジョンの可視性のマスキングを解除します。これは、山の斜面にある洞窟の入り口のようなものを作りたい場合、役に立ちます。

ランドスケープ マテリアルとランドスケープ穴マテリアルには同じマテリアルを使用できますが、オパシティ マスクを使用するマテリアルは、使用しないマテリアルよりもパフォーマンスに関してより高い負荷がかかることに注意してください。このような理由から、ランドスケープ穴マテリアルを個別に作成するオプションが提供されています。

  1. マテリアル エディタを開いて、[Details (詳細)] パネルで、[Blend Mode (ブレンド モード)][Masked (マスク適用)] に設定します。

    layer_visibility_mask_opacitymask.png

  2. 次に、LandscapeVisibilityMask ノードをマテリアル グラフに追加して、その出力を [Opacity Mask (オパシティ マスク)] 入力に接続します。

    Landscape_VisibilityMaskNode.png

  3. マテリアルがコンパイルされたら、今度はそれをランドスケープに割り当てて使用できるようにします。これは、[Details (詳細)] パネルの [Landscape Hole Material (ランドスケープ穴マテリアル)] セクションで実行できます。

    landscape_holematerial1.png

  4. これで、通常どおりにランドスケープ マテリアルの残りの部分を設定して、完了したら、次のような結果が得られます。

    Landscape_VisibilityMaskSetup_In_Material.png

次の動画のように、テレインの可視性マスクの適用と解除ができるようになりました。

ランドスケープに穴を作成するペイント ツールの使用方法については、「オパシティ マスキングを使用して穴を作成する」 を参照してください。

マテリアルをランドスケープに割り当てる

ランドスケープ用のマテリアルが作成されたら、レベル内の Landscape アクタに割り当てる必要があります。

  1. コンテンツ ブラウザ で使用したいランドスケープ マテリアルを検索します。

  2. ビューポート または ワールド アウトライナー でランドスケープを選択します。

  3. レベル エディタのランドスケープの [Details (詳細)] パネルの [Landscape (ランドスケープ)] セクションの [Landscape Material (ランドスケープ マテリアル)] の隣にある (Assign arrow) をクリックして選択したマテリアルを割り当てます。

    Assigned Material

ランドスケープ穴マテリアルをランドスケープに割り当てる

特別なオパシティ設定を持つマテリアルである、ランドスケープ穴 マテリアルとして機能するように、別のマテリアルを割り当てることができます。

穴マテリアルについては、「ランドスケープ穴マテリアル」セクションを参照してください。オパシティ マスキングについては、「オパシティ マスキングを使用して穴を作成する」を参照してください。

  1. **コンテンツ ブラウザ**で使用したいランドスケープ穴マテリアルを検索して、選択します。

  2. ビューポートまたは [World Outliner (アウトライナ)] でランドスケープを選択します。

  3. レベル エディタの [Details (詳細)] > [Landscape (ランドスケープ)] > [Landscape Hole Material (ランドスケープ穴マテリアル)] に移動します。矢印 (割り当て矢印) を選択して選択したマテリアルを割り当てます。

    landscape_holematerial1.png

タグ
Select Skin
Light
Dark

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

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

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

フィードバックを送信