UDN
Search public documentation:

LandscapeMaterialsJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 ホーム > ランドスケープ > ランドスケープのマテリアル

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


概要


あらゆる「Unreal」のマテリアルは、ランドスケープ テレインに割り当てることが可能です。それと同時に、「Unreal Engine 3」のマテリアル システムには、ランドスケープ固有の式が用意されています。この式を使用することによって、ランドスケープのレイヤーがもつ重みに基づいて、複数のマテリアル ネットワークをブレンドすることができるようになるとともに、それらネットワークをランドスケープにマッピングする UV 座標の制御が可能になります。また、ランドスケープのフル解像度の法線マップが利用できます。この機能によって、特にレベルに使用されるランドスケープのためにマテリアルを作成することが有益となります。

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


レイヤーのブレンディング

レイヤーをブレンドする機能は、ランドスケープ テレインをテクスチャリングする際の基礎となります。この機能は、かつて「Unreal」においてテレイン システムが担っていた機能と同様のものです。ただし、ランドスケープ システムのマテリアルサイドの実装は異なります。

ランドスケープのレイヤーをブレンドする機能を設定するには、一連の TerrainLayerWeight (テレイン レイヤーの重み) 式を使用します。これらの式は、それぞれ、 Parameter Name (パラメータ名) プロパティで、ランドスケープ内の関連レイヤー名を指定する必要があります。第 1 のレイヤーについては、 Base の入力をブランクのままにしておくことができます。ただし、それに続くレイヤーに関しては、第 1 のレイヤーの出力を第 2 のレイヤーの Base に接続しなければなりません。以下のレイヤーについても同様にします。

内部においては、これらのノードが Static Switch Parameter (静的スイッチ パラメータ) のように振る舞います。ランドスケープの各コンポーネントには、そのコンポーネントだけに適用されるメインのランドスケープ マテリアルから作成された、それ自身の MaterialInstanceConstant があります。特定のレイヤーが特定のランドスケープのコンポーネント上で使用されていない場合は、そのレイヤーに接続されているノードのサブツリーが破棄されます。これによって、全体的なマテリアルの複雑度が下がり、ランドスケープに適用されているマテリアルが任意の数のテクスチャ サンプルをもてるようになります。ただし、そのためには、個々のコンポーネント上で使用されているサンプルの数が、シェーダーモデルの仕様によって規定されている最大値を超えないという条件がつきます (SM 3.0 では 16)。以上によって、ランドスケープ上のあらゆる部分で使用されている、あらゆるテクスチャまたはネットワークを含むマスター マテリアルをセットアップすることが可能であるということになります。その結果、非常に複雑なネットワークの集合体ができる可能性があります。(その一方で、ランドスケープのコンポーネントに適用されている最終的なマテリアルが、ハードウェアによって認められるパラメータ内にとどまります)。

次は、4 つのレイヤーのためのディフューズ カラーをブレンドするランドスケープ マテリアルの単純なセットアップ例です。

landscape_material_setup.jpg

注記 : マテリアルに対するさまざまな重みの効果をプレビューするには、 TerrainLayerWeight ノードの Preview Weight (プレビュー 重み) プロパティを変更してみます。 TerrainLayerCoords ノードを使用すると、ランドスケープのレイヤーが有するテクスチャの、タイリングやスケールなどのパラメータを指定することができます。

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

このブレンド方法以外には、LandscapeLayerBlend ノードを使用するという方法があります (下記参照)。

レイヤーの重みと順序

ランドスケープは、アルファ ブレンドではなく重みブレンドを使用します。そのため、あらゆる位置のあらゆるレイヤーのためのブレンド係数は、最大で 1.0 となります。これによる利点は、順序依存がないということです。いつでもどのようなレイヤーもペイントすることができ、その重みが増すと、他の既存のレイヤーの重みが減ります。 一方、短所は、1 つのレイヤーを 100% まで完全にペイントすると、他のレイヤーの重みの値が 0% になることです。このことは、すでに 100% になっているレイヤー上で アンペイント (カラー除去) ツールを使用するときに、明白となります。アンペイントしているレイヤーをどのレイヤーと置き換えるべきか、ツールは知りません。

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


マテリアル システムには、特にランドスケープ システムとともに使用されるように設計された式が多数用意されています。

テレイン レイヤーの重み

TerrainLayerWeight 式によって、マテリアル ネットワークをブレンドできるようになります。その際のブレンドは、マテリアルが適用されるランドスケープから取得される関連レイヤーの重みに基づきます。

Landscape_Material_LayerExp.png

プロパティ

  • Parameter Name - 式と関連づける、ランドスケープに属するレイヤーの名前です。このレイヤーの重みが、2 つの入力ネットワークをブレンドするためのアルファ値として使用されます。
  • Preview Weight - マテリアル エディタ内でプレビューのために使用する重みです。

入力

  • Base - 関連レイヤーとブレンドするネットワークです。通常、これより前に行われたレイヤーのブレンドの結果です。ただし、これが初めてのレイヤーである場合は空になり得ます。
  • Layer - 関連レイヤーのためにブレンドされるネットワークです。

出力

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

テレイン レイヤー 座標

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

Landscape_Material_CoordsExp.png

プロパティ

  • Mapping Type - マテリアル (またはネットワーク) をランドスケープにマッピングする際に用いる方向を指定する ETerrainCoordMappingType です。
  • Mapping Scale - UV 座標に適用する統一したスケーリングです。
  • Mapping Rotation - UV 座標に適用する回転です。(単位は角度)
  • Mapping Pan [U/V] - UV 座標に適用する、[U/V] 方向のオフセットです。

出力

  • 指定されたプロパティ値に基づいてマテリアルをランドスケープにマッピングするための UV 座標を出力します。

テレイン レイヤーのスイッチ

(2011年10月のビルド以降、利用可能です)。

TerrainLayerSwitch (テレイン レイヤー スイッチ) を使用することによって、あるレイヤーがランドスケープのある地域に寄与していない場合に、マテリアルの演算をいくつか除外することができます。これにより、特定のレイヤーのウエイトが 0 である場合に不要な計算を削除して、マテリアルを最適化することができます。

LayerSwitchNode.png

入力

  • LayerUsed - ノードのプロパティで指定されているレイヤーが、ランドスケープの現在の地域によって使用されている場合に使用する結果です。
  • LayerNotUsed - レイヤーがランドスケープの現在の地域によって使用されていない場合に使用する結果です。

出力

  • LayerUsed または LayerNotUsed のいずれかです。これは、レイヤーがランドスケープの特定の地域に寄与しているか否かに依存します。

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

(2011年10月のビルド以降、利用可能です)。

TerrainLayerWeight ノードを使用してレイヤーを手動でブレンドする方法の代替として、LandscapeLayerBlend ノードを使って複数のレイヤーをブレンドするという方法があります。そのためには、アルファ ブレンディング、または、高さベースのオフセットをともなったアルファ ブレンディングを使用します。高さベースのオフセットを用いることによって、高さマップに基づいてレイヤーを他のレイヤーとブレンドすることができます。特定のレイヤーが使用されていない地域では、レイヤーが自動的に最適化されて除去され、シェーダーに寄与しません。

LayerBlendNode.png

入力

  • 各レイヤーが、互いとブレンドするための入力を追加します。
  • LB_HeightBlend ブレンド レイヤー (下記参照)には、高さの入力もあります。

出力

  • 互いにブレンドされたレイヤーの結果です。

このノードのプロパティには、配列が含まれており、ブレンドするレイヤーに関する情報をユーザーが入力することができます。

各レイヤーのためのプロパティ

  • Layer Name (レイヤー名) - ランドスケープの編集モード ウインドウで使用されるレイヤー名に対応します。
  • Blend Type (ブレンドタイプ) - LB_AlphaBlend または LB_HeightBlend のいずれかです。以下にそれらの図があります。
  • Preview Weight - マテリアル エディタ内でブレンドをプレビューするために、レイヤーのためのウェイト値として使用されます。

LB_HeightBlend.png

次のプロパティの例では、多数のレイヤーがブレンドされています。上記で示したノードと対応しています。

LayerBlendProperties.png

ジオメトリの法線マップ

注記 : 2011年5月のビルド以降、ジオメトリ法線マップは、自動的にピクセル単位にサンプリングされ、LOD に依存しない高解像度の光源処理を実現するためにマテリアル内において余分なノードを必要としなくなりました。以下の情報は、2011年5月以前のビルドを使用している場合にのみ必要となるものです。2011年5月以降のビルドにアップグレードする場合は、必ず、Heightmap (高さマップ) のサンプリング ノードをランドスケープ マテリアルから削除するようにしてください。

マテリアル内のハイトマップ テクスチャをサンプリングすることによって、ピクセル単位でジオメトリの法線情報にアクセスすることができます。これによって、ランドスケープが遠方で LOD アウトする場合でも、一定で高解像の光源処理が可能になります。

landscape_geometry_normal_comparison.jpg

ランドスケープによってハイトマップ テクスチャは Heightmap という名のパラメータとして割り当てられます。ジオメトリの法線マップは、X および Y 成分がハイトマップ テクスチャの Blue および Alpha チャンネルに保存されているワールド空間の法線ベクターとして保存されます。法線マップとして使用するには、いくつかのマテリアル ノードを使用することによって、Z 成分を生成するとともに、それに正しくバイアスをかけ、さらにワールド空間からコンポーネント空間に変換します。

上記作業を行うノードを次に示します。Engine\Content\EditorLandscapeResources.upk パッケージには、LandscapeLightingMaterial マテリアルにおけるこれに関する例が含まれています。

landscape_geometry_normal_setup.jpg

法線入力セットアップに接続している、先に示されたものと同様のレイヤー ブレンド構造を使用することによって、複数のレイヤーのための法線マップ、および、ジオメトリ法線マップをブレンドすることができます。

テセレーションと変位

マテリアルの TessellationFactors (テセレーション係数) と WorldDisplacement (ワールド変位) チャンネルは、ランドスケープ テレインと連動して使用されることによって、付加的な詳細と変形をもたらします。これらのチャンネルは、他の標準的なマテリアルの場合とまったく同じように機能します。また、レイヤーのブレンドは、ディフューズや法線、他チャンネルの場合とちょうど同じように、これらのチャンネルとともに使用することができます。

マテリアルでこれらの機能を利用する際の詳細については、テセレーションと変位のページを参照してください。 -->

ALERT! 注意 : これらの機能を使用できるのは、DirectX 11 が有効になっている場合に限られます。そのため、DirectX 11 のハードウェアを特にターゲットにしていない場合は、補助的な仕上げ効果として上記機能を使用するべきです。

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


作成後にマテリアルは、マップ内のランドスケープ アクタに割り当てられなければなりません。

Landscape_Material_Default.jpg

マテリアルの割り当ては、ランドスケープのためのプロパティ内で直接行います。それには、 Landscape (ランドスケープ) カテゴリの Landscape Material (ランドスケープ マテリアル) プロパティを使用します。コンテンツ ブラウザ内でマテリアルを選択し、さらに、 use_selected_button.png ボタンを押して、そのマテリアルを割り当てます。

Landscape_Material_Assigned.jpg

Landscape_Material_Viewport.jpg