本ガイドは、Epic Games Launcher の [Learn (ラーニング)] タブから入手可能な Content Examples プロジェクトに含まれるマテリアルを使用します。これから説明する手順に対してすべてのマテリアルは必須ではありませんが、ペイントされたランドスケープを正しく機能させるためにランドスケープを設定します。Content Examples プロジェクトの Landscapes マップを入手または開いて本ガイドで使用する前に、「ランドスケープのクイックスタート ガイド」をお読みください。
この「Runtime Virtual Texturing (RVT) クイック スタート」では、プロジェクト内のランドスケープおよび非ランドスケープ コンポーネントに対して、RVT を設定して使用するためのプロセスについて説明します。
本ガイドを読み進める前に、ランタイム バーチャル テクスチャがランドスケープ テレインと最適に機能する以下の理由について理解しておくことが大切です。
- 複雑なランドスケープ マテリアルはパフォーマンス向上のためにシェーディングの結果をキャッシュする
- スプラインおよびデカール型のエフェクトにより、品質とバリエーションの向上が可能
- 非ランドスケープ アクタとランドスケープのブレンドは同じ RVT アセットによって処理される
本ガイドを読み終えると、以下の点についての理解が深まります。
- Runtime Virtual Texture アセットの設定と、さまざまなコンポーネントとの接続の仕組み
- ランドスケープ マテリアルに対してランタイム バーチャル テクスチャを有効にする
- レベル内にランタイム バーチャル テクスチャ ボリュームを設定する
- 追加のアクタをランタイム バーチャル テクスチャにレンダリングするよう設定する
1 - プロジェクト設定
ランタイム バーチャル テクスチャを使用する前に、これをプロジェクトで有効にする必要があります。以下の手順に従ってください。
-
メイン メニューから [Edit (編集)] を選択して [Project Settings (プロジェクト設定)] を選択します。[Engine (エンジン)] > [Rendering (レンダリング)] > [Virtual Textures (バーチャル テクスチャ)] カテゴリに移動し、 [Enable virtual texture support (バーチャル テクスチャのサポートを有効化)] をオンにします。
-
プロジェクトを 再起動 します。
2 - Runtime Virtual Texture アセットの作成
Runtime Virtual Texture アセットには、ランタイム バーチャル テクスチャ ボリュームに割り当てられた RVT アセットの詳細な設定情報が含まれています。また、データを共有する必要のある、シーン内のマテリアルと他のアクタをリンクすることで RVT アセットを機能させることもできます。
-
コンテンツ ブラウザ 内で右クリックしてコンテキスト メニューを表示するか、 [Add New (新規追加)] ボタンを使用して、 [Materials & Textures (マテリアル・テクスチャ)] カテゴリから [Runtime Virtual Texture (ランタイム バーチャル テクスチャ)] アセットを選択して作成します。
-
作成した Runtime Virtual Texture アセットに名前を付けます。このガイドでは「
VT_Test
」とします。 -
アセットをダブルクリックしてプロパティを設定することができる Runtime Virtual Texture アセットを開きます。
このウィンドウで、ランタイム バーチャル テクスチャがサポートするマテリアルのサイズ、タイル サイズ、タイプを定義します。これらのプロパティはリアルタイムで調整できるため、エディタ内ですぐに変更を確認することができます。
これらの設定の詳細と使い方については、「バーチャル テクスチャの設定」を参照してください。
3 - ランタイム バーチャル テクスチャ マテリアルの作成
これらの設定の詳細と使い方については、「バーチャル テクスチャの設定」を参照してください。
この手順では、シンプルなランドスケープ マテリアルを使用してランタイム バーチャル テクスチャのサポートを実装します。さらに、対応プラットフォームでバーチャル テクスチャが利用できない場合にマテリアルを元の使用状態にフォールバックする、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 ノードの出力からワイヤを引いて Runtime 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 ボリュームを選択して、[Details] パネルの [Transform from Bounds] セクションで Source Actor を使用するアクタに設定します。この例では、Landscape_2 が使用されます。
-
[Set Bounds] ボタンをクリックして、Runtime Virtual Texture ボリュームを選択したアクタの境界に設定します。
ランタイム バーチャル テクスチャからサンプリングされるアクタや、ランタイム バーチャル テクスチャに書き込むアクタは、ボリュームの境界内にある必要があります。
-
シーン アクタ (Landscape_2) を選択し、[Details] パネルの [Virtual Texture] セクションで [Draw in Virtual Textures] の横の [Add Element] アイコンをクリックします。
アセット割り当てドロップダウンで Runtime Virtual Texture Asset を選択します。
ランドスケープ テレインの周囲にランタイム バーチャル テクスチャ ボリュームを配置してスケーリングし、ランドスケープにランタイム バーチャル テクスチャ アセットを割り当てると、テレイン マテリアルがすぐに表示されるようになります。正しく設定されていないと、風景は黒くなります。
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 (詳細)] パネルを [Materials (マテリアル)] セクションまで下にスクロールし、[Add Elements (+)] アイコンをクリックします。割り当てドロップダウンで Runtime Virtual Texture Asset を選択します。
-
プリミティブ (またはこのデモではランドスケープ スプライン) は RVT にレンダリングされます。ただし、プリミティブはまだ表示されます。主パスでプリミティブを見えないようにして、RVT にレンダリングのみ行う場合は、[Modes] ドロップダウンを使ってレベル ビューポートを Select モードに戻して、レベルに配置された Runtime Virtual Texture Volume を選択します[Virtual Texture] セクションの詳細プロパティで Hide Primitives を有効にします。
ゲーム ビューのレベル ビューポートで、ランドスケープ スプラインがランタイム バーチャル テクスチャ アセットにレンダリングされ、テレインのサーフェスに適用され、スプライン プリミティブが表示されなくなります。


次の比較画像は、RVT を使用してスプライン マテリアルがランドスケープのサーフェスに適用されている様子を拡大したものです。


6 - 応用編
ここまでで、本ガイドのすべての手順を完了し、ランタイム バーチャル テクスチャを使用するためのランドスケープ マテリアルの設定を終えました。次は、あなた独自のアクタのマテリアルを RVT にレンダリングして、さまざまな可能性を試してみましょう。以下は、応用にあたっての推奨事項です。
- デカールなどの適用可能な別のスタティック メッシュを RVT に追加してみましょう。スタティック メッシュ平面とマスクされたマテリアルを使用して、テレインにデカールのようなディテールを施す方法を確認してください。
- フォリッジ インスタンスを使用して、RVT にレンダリング可能なメッシュをペイントし、テレインに独自のバリエーションを加えましょう。
- 複数のランタイム バーチャル テクスチャ アセットを使用して、さまざまなタイプのアクタと、それらのランタイム バーチャル テクスチャ ボリュームへのレンダリング設定を管理しましょう。
- [Translucency Sort Priority (透過処理のソートの優先順位)] を使用して、アクタが RVT にレンダリングされる際のレイヤーの順序を設定しましょう。例えば、「0」は最下部のレイヤーを表し、この値が上がるにつれてレイヤーの配置順が上がります。