このガイドでは、Epic Games Launcher の [Samples (サンプル)] タブから入手可能な Content Examples プロジェクトに含まれるマテリアルを参照します。 これから説明する手順に対してすべてのマテリアルは必須ではありませんが、ペイントされたランドスケープ マテリアルを使用して正しく機能するようにランドスケープを設定することは必要です。 先に進む前に「ランドスケープ クイック スタート ガイド」をご覧ください。また、このガイドで使用するには、[Samples (サンプル)] タブの下の Content Examples プロジェクトの Landscapes マップを開いてください。
このランタイム バーチャル テクスチャリング (RVT) のクイック スタートでは、プロジェクト内のランドスケープおよび非ランドスケープ コンポーネントに対して、RVT を設定して使用するプロセスについて説明します。
本ガイドを読み進める前に、ランタイム仮想テクスチャがランドスケープ テレインと最適に機能する以下の理由について理解しておくことが大切です。
複雑なランドスケープ マテリアルはパフォーマンス向上のためにシェーディングの結果をキャッシュする。
スプラインおよびデカール型のエフェクトにより、品質とバリエーションの向上が可能。
非ランドスケープ アクタとランドスケープのブレンドは同じ RVT アセットによって処理される。
本ガイドを読み終えると、以下の点についての理解が深まります。
ランタイム バーチャル テクスチャ アセット、およびランタイム バーチャル テクスチャ アセットとさまざまなコンポーネントとのつなげ方を設定する。
ランドスケープ マテリアルに対してランタイム バーチャル テクスチャリングを有効にする。
レベル内にランタイム バーチャル テクスチャ ボリュームを設定する。
追加のアクタをランタイム バーチャル テクスチャにレンダリングするよう設定する。
1 - プロジェクトの設定
ランタイム仮想テクスチャを使用する前に、これをプロジェクトで有効にする必要があります。 次の手順を実行します。
メイン メニューから [Edit (編集)] を選択して [Project Settings (プロジェクト設定)] を選択します。 [Engine (エンジン)] > [Rendering (レンダリング)] > [Virtual Textures (バーチャル テクスチャ)] カテゴリに移動し、[Enable virtual texture support (バーチャル テクスチャのサポートを有効化)] を True にします。
プロジェクトを再起動します。
2 - ランタイム仮想テクスチャ アセットの作成
ランタイム バーチャル テクスチャ アセットには、ランタイム バーチャル テクスチャ ボリュームに割り当てられた RVT アセットの詳細な設定情報が含まれています。 また、データを共有する必要のある、シーン内のマテリアルと他のアクタをリンクすることで RVT アセットを機能させることもできます。
コンテンツ ドロワー内で右クリックしてコンテキスト メニューを表示するか、[+Add (追加)] ボタンを押し、[Textures (テクスチャ)] カテゴリから [Runtime Virtual Texture (ランタイム バーチャル テクスチャ)] アセットを作成します。
作成したランタイム バーチャル テクスチャ アセットに名前を付けます。 このガイドでは、「
VT_Test」と名前を付けます。アセットをダブルクリックし、プロパティを構成できるランタイム バーチャル テクスチャ アセット エディタを開きます。
このウィンドウで、ランタイム バーチャル テクスチャがサポートするマテリアルのサイズ、タイル サイズ、タイプを定義します。 これらのプロパティはリアルタイムで調整できるため、エディタ内ですぐに変更を確認することができます。
これらの設定の詳細と使い方については、「Virtual Texture Settings (バーチャル テクスチャの設定)」ページを参照してください。
3 - ランタイム仮想テクスチャ マテリアルの作成
これらの設定の詳細と使い方については、「Virtual Texture Settings (バーチャル テクスチャの設定)」ページを参照してください。
この手順では、シンプルなランドスケープ マテリアルを使用してランタイム バーチャル テクスチャのサポートを実装します。 さらに、対応プラットフォームでバーチャル テクスチャが利用できない場合にマテリアルを元の使用状態にフォールバックする、RVT 固有のマテリアル式をいくつか使用してロジックを設定します。
RVT と連携するようマテリアルを設定する際は、次の 2 点を考慮する必要があります。
マテリアルの一部は RVT アセットに書き込みを行う。
マテリアルの一部は RVT アセットからサンプリングして、さらなるロジックを適用する。
Content Examples プロジェクトから得たこのランドスケープ マテリアルの例には、雪、草、そして岩向けに設定されたシンプルなレイヤー ブレンドが含まれています。
Content Examples プロジェクトのマテリアルを使用していない場合は、上記のようにマテリアルを作成することができます。 しかし、ランドスケープに使用するにはマテリアルを適切に設定する必要があることに注意してください。 作成や設定の詳細については、「ランドスケープのクイック スタート ガイド」を参照してください。
以降のセクションでは、RVT アセットへの書き込みとサンプリングの方法を詳しく紹介するために、このマテリアルを分けて説明します。
必須のマテリアル設定
RVT アセットで使用するためのランドスケープ マテリアルの設定は従来とほとんど同じですが、1 点異なるのは [Use Material Attributes (マテリアル属性の使用)] の有効化が必要なことです。 このオプションによって Make Material Attributes (マテリアル属性の作成) 式を使用できるようになり、サポートされるさまざまな使用状況に応じてマテリアルを再ビルド、出力できるようになります。
既存もしくは使用可能なランドスケープ マテリアルを開きます。 グラフ内を右クリックして「Make Material Attributes」式を検索します。 式を 1 つグラフに加えます。
Main Attributes ノードから Make Material Attributes ノードにワイヤを引いてつなげます。 下の画像のように設定してください。
次に、Main Attributes ノードを選択した状態で、[Details (詳細)] パネルで [Use Material Attributes (マテリアル属性の使用)] をオンにします。
Make Material Attributes ノードの出力からワイヤを引いて Virtual Textures Feature Switch ノードを作成し、 その [No] 出力につなげます。 次に、これを [Material Attributes (マテリアル属性)] 出力につなげます。
マテリアルは次のようになるはずです。
ランタイム仮想テクスチャ アセットに書き込む
次に、Runtime Virtual Texture Output 式を使って RVT アセットにマテリアルを書き込めるよう設定する必要があります。 このノードは、本ガイドで作成した RVT アセットを参照し、Base Color、Roughness、Normal などの対応するマテリアル属性をこのノードの入力属性として使用できるようにします。
右クリックして Runtime Virtual Texture Output ノードをグラフに追加します。
ノードに含まれるそれぞれのマテリアル属性入力をノード ワイヤで接続します。 ベース マテリアルで使用していないものについては、定数値を使用します。
マテリアルは次のようになるはずです。
このマテリアルの最初の部分では、すべてのレイヤーのブレンドとロジックが処理されます。 これらはすべて RVT アセットにキャッシュ可能なカメラ非依存のシェーディングであり、 スプラインやデカールなど他のオブジェクトは、RVT システムによりこのノードの出力にコンポジットされることになります。
ランタイム仮想テクスチャ アセットからサンプリングする
次に、Runtime Virtual Texture Sample 式を使って RVT アセットからマテリアルをサンプリングできるよう設定する必要があります。
グラフのこの部分では、RVT アセットからサンプリングし、カメラ依存または追加のシェーディング操作をここで適用します。 RVT アセット属性がサンプリングされ、最終的なマテリアル出力にルーティングされるため、グラフのこの部分で行われる作業が少なくなるほど、このマテリアルのレンダリングの負荷は小さくなります。
右クリックして Runtime Virtual Texture Sample ノードを追加します。
右クリックして別の Make Material Attributes ノードを作成します。 Runtime Virtual Texturing Sample ノードの出力を、Make Material Attributes ノードの対応する入力につなげます。
Make Material Attributes ノードの出力を、Virtual Texture Feature Switch ノードの [Yes] 入力につなげます。
Runtime Virtual Texture Sample ノードを選択します。 [Details (詳細)] パネルの [Virtual Textures (バーチャル テクスチャ)] アセット選択ボックスで、本ガイドで作成した RVT アセットを割り当てます。
Virtual Texture Feature Switch ノードの出力をメインの Material Attributes ノードの入力につなげます。
このマテリアルを保存して閉じます。
マテリアルは次のようになるはずです。
4 - ランタイム仮想テクスチャ ボリュームの配置
ランタイム バーチャル テクスチャリングをサポートするようマテリアルを設定したので、次はレベルに移動し、ランタイム バーチャル テクスチャ ボリュームを配置して RVT マテリアルをサーフェス (この場合はランドスケープ テレイン) に適用できます。
[Place Actors (アクタを配置)] パネルの [Volumes (ボリューム)] カテゴリで [Runtime Virtual Texture Volume] を見つけて、シーン内にドラッグします。
RVT ボリュームを選択し、[Virtual Texture (バーチャル テクスチャ)] セクションで [Virtual Texture] マテリアルの割り当てボックスを、このガイドのステップ 2 で作成したランタイム バーチャル テクスチャ アセットを使用するように設定します。
RVT ボリュームは、RVT マテリアルを適用する領域をカバーするスケーリングがまだ正しく行われていません。 RVT ボリュームを選択し、[Transform from Bounds (境界からトランスフォーム)] セクションのその [Details] パネルで [Source Actor (ソース アクタ)] に使用したいアクタを設定します。 この例では、Landscape_2 を使用しています。
[Set Bounds (境界を設定)] ボタンをクリックし、選択したアクタの境界に対してランタイム バーチャル テクスチャ ボリュームをスケーリングします。
ランタイム バーチャル テクスチャからサンプリングするアクタや、ランタイム バーチャル テクスチャに書き込むアクタは、RVT ボリュームの境界内にある必要があります。
シーン アクタ (Landscape_2) を選択し、[Details] パネルの [Virtual Texture] セクションで、[Draw in Virtual Textures (バーチャル テクスチャで描画)] の横にある [Add Element (要素を追加)] アイコンをクリックします。
[Asset assignment (アセット割り当て)] ドロップダウンを使用し、ランタイム バーチャル テクスチャ アセットを選択します。
ランドスケープ テレインの周囲にランタイム バーチャル テクスチャ ボリュームを配置してスケーリングし、ランドスケープにランタイム バーチャル テクスチャ アセットを割り当てると、テレイン マテリアルがすぐに表示されるようになります。 正しく設定されていないと、風景は黒くなります。
5 - ランタイム仮想テクスチャへのアクタのレンダリング
ランドスケープのマテリアルの設定が完了すると、他のシーン アクタを設定して、地形に沿う道路のスプラインなど、ランタイム バーチャル テクスチャにレンダリングできるようになります。 ランタイム バーチャル テクスチャに出力するよう設定され、配置済みの RVT ボリューム内にあるアクタは、ランドスケープに適用されるランタイム バーチャル テクスチャ アセットの一部としてキャプチャおよびレンダリングされます。
本ガイドのこのセクションで使用するスプラインは Content Examples で設定済みですが、 ここで説明する手順を他のアクタやそのマテリアルに適用する場合も同じ効果が得られます。
[Modes (モード)] ドロップダウン メニューから [Landscape (ランドスケープ)] を選択します。
[Landscape] ツールバーで、[Splines (スプライン)] をクリックします。
レベル ビューポート内でスプラインの任意の部分を選択します。 レベルの [Details] パネルで [Segments (セグメント)] ボタンをクリックして、このスプラインを構成するすべてのセグメントを選択します。
[Landscape Spline Meshes (ランドスケープ スプライン メッシュ)] カテゴリにある [Spline Meshes (スプライン メッシュ)] 配列を展開します。 「SM_Street」スタティック メッシュが割り当てられています。 これをダブルクリックしてスタティック メッシュ エディタを開きます。
[Material Slots (マテリアル スロット)] にある [Element 0] の M_Street マテリアルをダブルクリックして、マテリアル エディタで開きます。
このスタティック メッシュと割り当てられているマテリアルについては、スロット 0 および 1 に使用されている親マテリアルであるため、Element 0 が選択されました。Element 1 は Element 0 の子マテリアル インスタンスです。 RVT アセットにレンダリングされるマテリアルは、すべて以下の手順によってランタイム バーチャル テクスチャにレンダリングされるように設定する必要があることに留意してください。
マテリアル グラフで右クリックし、[Runtime Virtual Texture Output] ノードを追加します。 [Color] ノードと [Roughness] ノードの出力を、Runtime Virtual Texture Output ノードの [BaseColor] と [Roughness] の入力につなぎます。
マテリアル エディタとスタティック メッシュ エディタの両方を保存して閉じます。
レベル ビューポート内で Landscape Spline (任意の部分) を選択します レベルの [Details] パネルで [Segments] ボタンをクリックして、すべてのアタッチされているスプライン セグメントを選択します。
スプライン セグメントを選択した状態のままで、[Details] パネルを [Virtual Texture (バーチャル テクスチャ)] セクションまで下にスクロールし、[Add Elements (要素を追加) (+)] アイコンをクリックします。 ランタイム バーチャル テクスチャ アセットを、割り当てドロップダウンから選択します。
プリミティブ (またはこのデモではランドスケープ スプライン) は RVT にレンダリングされます。 ただし、プリミティブはまだ表示されます。 プリミティブをメイン パスで表示せず、RVT に対してのみレンダリングする場合は、[Modes (モード)] ドロップダウンを使用し、レベル内に配置したランタイム バーチャル テクスチャ ボリュームを選択し、レベルのビューポートを選択モードに戻します。 [Virtual Texture] セクションの詳細プロパティで [Hide Primitives (プリミティブを非表示)] を有効にします。
ゲームビューのレベル ビューポートで、ランドスケープ スプラインがランタイム バーチャル テクスチャ アセットにレンダリングされ、テレインのサーフェスに適用されると、スプラインのプリミティブは表示されなくなります。
次の比較画像は、RVT を使用してスプライン マテリアルがランドスケープのサーフェスに適用されている様子を拡大したものです。
6 - 応用編
ここまでで、本ガイドのすべての手順を完了し、ランタイム仮想テクスチャを使用するためのランドスケープ マテリアルの設定を終えました。次は、あなた独自のアクタのマテリアルを RVT にレンダリングして、さまざまな可能性を試してみましょう。 以下は、応用にあたっての推奨事項です。
デカールなどの適用可能な別のスタティック メッシュを RVT に追加してみましょう。 スタティック メッシュ平面とマスクされたマテリアルを使用して、テレインにデカールのようなディテールを施す方法を確認してください。
フォリッジ インスタンスを使用して、RVT にレンダリング可能なメッシュをペイントし、テレインに独自のバリエーションを加えましょう。
複数のランタイム バーチャル テクスチャ アセットを使用して、さまざまなタイプのアクタと、それらのランタイム バーチャル テクスチャ ボリュームへのレンダリング設定を管理しましょう。
[Translucency Sort Priority (透過処理のソートの優先順位)] を使用して、アクタが RVT にレンダリングされる際のレイヤーの順序を設定しましょう。 たとえば、「0」は最下部のレイヤーを表し、この値が上がるにつれてレイヤーの配置順が上がります。