異種ボリューム アクタは、スパース ボリューム テクスチャ をサンプリングするボリュームドメインのマテリアルをレンダリングするのに使用されます。このアクタは、リアルタイムで パス トレーサー でボリュームをレンダリングすることをサポートしています。異種ボリューム アクタは、静的またはアニメートされたスパース ボリューム テクスチャのマテリアルをレンダリングできます。
左は静的な単一のボリュームの SVT で、右はアニメートされた SVT です。
異種ボリューム アクタを操作する
以下のワークフローを使用して、プロジェクトで異種ボリュームを使用します。
- VDB をインポートして Unreal Engine でスパース ボリューム テクスチャ アセットを作成する。
- SVT アセットをサンプリングするボリュームドメインのマテリアルを設定する。
- 異種ボリューム アクタをシーンに追加し、SVT マテリアルをそれに割り当てる。
VDB ファイルをインポートする
インポートを開始するには、VDB (ボクセル データベース)ファイルが コンテンツ ブラウザ にインポートするために必要です。
VDB ファイルをインポートするには、次の手順を実行します。
- VDB を直接コンテンツ ブラウザにドラッグアンドドロップします。
- コンテンツ ブラウザの [Import (インポート)] ボタンを使用します。
VDB には、静的 な VDB ファイルおよび アニメートされた VDB ファイルをインポートするための独自のインポート ウィンドウがあります。
静的な VDB ファイルまたはアニメートされた VDB ファイルをインポートするオプションがあります。 静的な VDB には単一のファイルと格納されたボリューム データのみが含まれていますが、アニメートされた VDB は順番に番号が付いた個別のファイルのセットです。 アニメートされた VDB は、アニメートされた VDB を全体でインポートするために順番に番号の付いた VDB ファイルをインポートするだけで済みます。
VDB にはデータとともにさまざまな属性が含まれています。 これらは属性 A と属性 B に分けることができます。推奨事項として、2 つのサンプリング属性で入力データを分け、最初の属性データを 8 ビットの unorm として、2 番目の属性データを 16 ビットの浮動小数点数としてインポートします。
Epic Games のプロジェクトの場合、8 ビットの unorm として密度をプッシュして、インポート時に 16 ビットの浮動小数の属性リストを通じて他のすべてのデータを渡します。
インポートしたトランスフォームは、異種ボリュームに自動的に適用されます。トランスフォームが、ピボットが原点 (通常はボリュームのいずれかの隅) にある状態で作成されている場合は、[Pivot at Centroid (重心でのピボット)] チェックボックスをオンにして、ピボットをボリュームの中心に移動させることができます。ただし、ピボットをボリュームの中心に強制的に移動させると、トランスフォームが崩れる可能性があることに注意してください。
スパース ボリューム テクスチャのインポートと使用の詳細については、「スパース ボリューム テクスチャ」を参照してください。
SVT マテリアルを設定する
SVT を使用したマテリアルの設定とマテリアル内での SVT の使用の詳細については、「スパース ボリューム テクスチャ」を参照してください。
異種ボリュームには、スパース ボリューム テクスチャをサンプリングするボリュームベースのマテリアルが必要です。これらのマテリアルでは、Sparse Volume Texture Sample ノードを使用して SVT をサンプリングし、それをボリュームベースのマテリアル (異種ボリューム、ボリュメトリック フォグ、ボリュメトリック クラウドなど) と組み合わせて使用することができます。
Unreal Engine には、SVT アセットを適用できる、設定済みの空のサンプル SVT マテリアルが付属しています。これは、コンテンツ ブラウザの [Engine (エンジン)] > [Engine Materials (エンジン マテリアル)] (名前は SparseVolumeMaterial) の下にあります。このマテリアルのコピーを作成して、そのインスタンスを作成します。
マテリアル インスタンスを開いたら、SparseVolumeTexture パラメータをオーバーライドし、インポートした SVT アセットを割り当てスロットに適用します。
異種ボリュームを設定する
異種ボリュームを設定するには、次の手順を実行します。
- [Place Actors (アクタを配置)] パネルを使用して、異種ボリューム アクタを検索し、シーンに追加します。
- アクタを選択した状態で [Details (詳細)] パネルを使用して、SVT マテリアルをアクタに割り当てます。
- [任意] アニメートされた VDB をインポートした場合は、[Animation (アニメーション)] セクションにある Playing と Looping のチェックボックスをオンにします。
異種ボリューム アクタのプロパティ
異種ボリューム アクタには次のプロパティがあります。
| プロパティ | 説明 |
|---|---|
| Materials (マテリアル) | |
| Element [N] | スパース ボリューム テクスチャからサンプリングするボリュームベースのマテリアルのマテリアル割り当てスロット。 |
| Volume (ボリューム) | |
| Volume Resolution | SVT でレンダリングする場合、ボリュームの解像度は自動的に決定され、変更することはできません。 |
| Pivot at Centroid | ピボットをボリュームの中心に移動させます。トランスフォームは、ピボットが原点 (通常はボリュームのいずれかの隅であり、作成方法によって異なる) にある状態で作成されている場合は、 ピボットをボリュームの中心に強制的に移動させると、トランスフォームが崩れる可能性があることに注意してください。 |
| Animation (アニメーション) | |
| Frame | レンダリングされている SVT の現在のフレームが表示されます。Playing チェックボックスがオンになっていない場合は、アニメートされた SVT の特定のフレームを指定できます。 |
| Frame Rate | フレームが再生される速度。 |
| Start Frame | アニメートされた SVT の開始フレーム番号。これは、インポートした SVT で使用可能な範囲に制限されます。 |
| End Frame | アニメートされた SVT の終了フレーム番号。これは、インポートした SVT で使用可能な範囲に制限されます。 |
| Playing | オンであれば、アニメートされた SVT が 1 回再生されます。 |
| Looping | オンであれば、アニメートされた SVT が開始フレームから終了フレームまで再生された後に、最初から繰り返されます。 |
| Frame Transform | |
| Sparse Volume Texture Streaming (スパースボリュームテクスチャのストリーミング) | |
| Issue Blocking Requests | フレームごとのスパース ボリューム テクスチャ データの更新時にブロックするように、ストリーミング システムに通知されます。これはリアルタイム再生では推奨されませんが、シネマティック レンダリングで、ストリーミング システムがリアルタイムのフレームレートを維持するために高いミップ レベルでページングすることになる場合に役立ちます。 |
| Streaming Mip Bias | レンダリングされる SVT のテクスチャ レベルを設定します。この値が小さいほど、ボリュームの密度と品質が高くなり、大きいほど、密度と品質が低くなります。 |
| Lighting (ライティング) | |
| Step Factor | この係数は、ボリューム解像度の倍数で発生するように、レイ マーチング インテグレータのステップサイズを調整します。この係数を増やすと、マーチャーはステップを長くし、品質を犠牲にしてパフォーマンスを向上させます。 |
| Shadow Step Factor | この係数は、レイ マーチャーのシャドウの計算のステップサイズを調整します。この係数を増やすと、マーチャーはステップを長くし、品質を犠牲にしてパフォーマンスを向上させます。 |
| Shadow Bias Factor | この係数は、シャドウの計算時に適用される初期ボクセル バイアスを調整します。この係数を増やすと、セルフシャドウイングが減りますが、光漏れが発生する場合があります。 |
| Lighting Downsample Factor | この係数は、内部ライティング キャッシュのボリューム解像度を調整します。この係数を増やすと、実質的に操作の解像度が低くなり、システム メモリが減り、パフォーマンスが向上します。品質を下げる効果があります。SVT は元々スパースですが、内部ライティング キャッシュは現在、密になっています。現時点では、内部ライティング キャッシュでは、1024 x 1024 x 512 ボクセルより大きいボリューム解像度はアロケートされません。 |
アニメーション
Animation のプロパティは、再生のカスタム ルールを提供します。デフォルトでは、[Start Frame] プロパティと [End Frame] プロパティはインポートされた SVT の使用可能な範囲に制限されていますが、トリミングして、SVT のアニメーションの一部のみを再生することができます。再生は 24 fps の「シネマティック」レートで行われることが想定されていますが、必要に応じて調整することができます。
Playing チェックボックスがオンであれば、SVT がシーン内でインタラクティブに再生され、Looping チェックボックスがオンであれば、連続して繰り返し再生されます。Playing チェックボックスがオフのままであれば、Frame のテキスト フィールドをマウスで左クリックし、左右にドラッグして SVT の使用可能なフレームをスクラブ再生することができます。
ライティング
ディファード レンダリング モデルでは、異種ボリューム アクタによる高品質のボリュメトリック アセットのレンダリング時に、レイ マーチングを使用します。調整可能な各 Factor プロパティは、Volume Resolution プロパティに対して相対的です。インポートされた SVT の解像度は、ランタイム パフォーマンスと直接的な相関関係にあります。
ブループリント
ブループリントでは、Play ノードおよび Set Playing ノードを使用して、アニメーション データの開始と停止をトリガーできます。
パス トレーサーで異種ボリュームを使用する
Niagara Fluids プラグインを使用するか、シーンの異種ボリューム アクタをインスタンス化することで、異種ボリュームを作成できます。 これらのボリュームは、パス トレーサーが有効になるとレンダリングを開始します。
パス トレーサーを使用してレンダリングされた Niagara Fluid 異種ボリュームの例。
異種ボリュームをパス トレーサーでレンダリングするには、以下を有効にします。
- プロジェクト設定
- [Default RHI (デフォルトの RHI)] を DirectX 12 に設定する
- [Support Hardware Ray Tracing (ハードウェアレイトレーシングをサポート)] を有効にする
- [Path Tracing (パストレーシング)] を有効にする
- プラグイン
- [任意] Niagara Fluids
仕様の一覧については、「パス トレーサー」を参照してください。
Niagara Fluids を使用した異種ボリューム
この機能を使用するには、Niagara Fluids プラグインを有効にする必要があります。詳細については、「Niagara Fluids」を参照してください。
Niagara Fluids を使用してレンダリングするには、以下の手順を実行します。
- コンテンツ ブラウザで新しい Niagara Fluid を作成します。
- Niagara ピッカーのウィンドウで、[New system from a template or behavior example (テンプレートまたは動作例に基づく新しいシステム)] を選択して [Next (次へ)] をクリックします。
- ウィンドウの [3D Gas (3D ガス)] リストから例を 1 つ選択します。
- Niagara Fluid アセットをダブルクリックすると、Niagara エディタが開きます。
- グラフで Niagara Fluid system ノードを選択します。
- [Details] パネルで、次の項目を設定します。
- [Loop Behavior (ループ動作)] を [Infinite (無限)] に設定する
- [Loop Duration (ループ持続時間)] を 5 秒未満にする
- Niagara Fluid アセットをコンパイルして保存します。
- Niagara Fluid をシーンに配置します。
- コンソール ウィンドウを開いて
r.PathTracing.HeterogeneousVolumes 1と入力することで、異種ボリュームのレンダリングでのパス トレーサーのサポートを有効にします。
スパース ボリューム テクスチャを使用した異種ボリューム
スパース ボリューム テクスチャ を使用してレンダリングするには、以下の手順を実行します。
- VDB ファイルをインポートし、それを表示するためにスパース ボリューム テクスチャ マテリアルを設定します。
- レベル エディタで、[Place Actors (アクタを配置)] パネルを使用して、異種ボリューム アクタをシーンに追加します。
- そのマテリアル スロットにスパース ボリューム テクスチャのマテリアルを割り当てます。
- コンソール ウィンドウを開いて
r.PathTracing.HeterogeneousVolumes 1と入力することで、異種ボリュームのレンダリングでのパス トレーサーのサポートを有効にします。
便利なコンソール変数
| コンソール変数 | 説明 | デフォルト値 |
|---|---|---|
r.PathTracing.HeterogeneousVolumes |
異種ボリュームのパス トレーシングを有効にします。 | 0 |
r.HeterogeneousVolumes.IndirectLighting |
異種ボリュームに対する間接ライティングを有効にします。これはデフォルトではオフになっています。 | 0 |
r.HeterogeneousVolumes.OrthoGrid |
ワールド空間のボクセル グリッドを有効にします。 | 1 |
r.HeterogeneousVolumes.OrthoGrid.MaxBottomLevelMemoryInMegabytes |
ボクセル化 (エミッション、エクティンクション、アルベド) に使用される各ボトムレベルのボクセル グリッドに対するメモリの上限 (メガバイト単位) を決定します。推奨されるシネマティック デフォルトは 512 です。 | 128 |
r.HeterogeneousVolumes.OrthoGridShadingRate |
ワールド空間のボクセル グリッドのアクティブなシェーディング レートを決定します。この値はピクセル幅とほぼ合致しています。シェーディング レートを小さくするほど、作成されるテッセレーションが高品質になりますが、メモリ使用量が増えます。推奨されるシネマティック デフォルトは 1 です。 | 4 |
r.HeterogeneousVolumes.FrustumGrid |
錐台に位置揃えされたボクセル グリッドを有効にします。 | 1 |
r.HeterogeneousVolumes.FrustumGrid.MaxBottomLevelMemoryInMegabytes |
ボクセル化 (エミッション、エクティンクション、アルベド) に使用される各ボトムレベルのボクセル グリッドに対するメモリの上限 (メガバイト単位) を決定します。推奨されるシネマティック デフォルトは 512 です。 | 128 |
r.HeterogeneousVolumes.FrustumGrid.ShadingRate |
錐台に位置揃えされたボクセル グリッドの有効なシェーディング レートを決定します。この値はピクセル幅とほぼ合致します。シェーディング レートを下げるほど、作成されるテッセレーションが高品質になりますが、メモリ使用量が増えます。推奨されるシネマティック デフォルトは 1 です。 | 4 |
r.HeterogeneousVolumes.FrustumGrid.DepthSliceCount |
シェーディング レート 1 でのレンダリング時の、錐台に位置揃えされたボクセル グリッドの深度スライス数を決定します。シェーディング レート 2 でのレンダリングは、深度スライス数 256 に相当します。推奨されるシネマティック デフォルトは 512 または 1024 です。 | 512 |
r.HeterogeneousVolumes.Tessellation.FarPlaneAutoTransition |
錐台に位置揃えされたボクセル グリッドのボクセル サイズがワールド空間ボクセル グリッドのボクセル サイズに一致する場合、錐台に位置揃えされたグリッドの遠方平面を切り捨てます。 | 1 |
| スケーラビリティ変数 | ||
r.HeterogeneousVolumes.DownsampleFactor |
これは、レンダリングされたビューポートをダウンサンプリングする際の係数です。 | 1.0 |
r.HeterogeneousVolumes.MaxStepCount |
異種ボリュームのレンダリングに使用されるレイマーチング ステップの最大数。 | 512 |
r.HeterogeneousVolumes.Shadows.Resolution |
ボリュメトリック シャドウ マップのビルド時の解像度を設定します。 | 512 |
異種ボリュームのプロジェクト設定
異種ボリューム アクタには以下のプロジェクト設定があり、これらは、[Heterogeneous Volumes (異種ボリューム)] カテゴリの [Engine (エンジン)] > [Rendering (レンダリング)] セクションにあります。
| プロパティ | 説明 |
|---|---|
| Heterogeneous Volumes | 異種ボリューム サブシステムによるレンダリングを有効にします。 |
| Shadow Casting | 異種ボリュームを有効にして、環境にシャドウをキャストします。 |
| Composite with Translucency | 透過処理のレンダリング時に異種ボリュームとのコンポジットを有効にします。 |
追記
リアルタイム:
- リアルタイムでのレンダリングとパス トレーサーでのレンダリングの比較
- ボリュームのレンダリングのより包括的なサポートをパス トレーサーで利用できるようになり、グローバル イルミネーションを正確にシミュレートできます。
- 環境にシャドウをキャスト
- これは実験段階の機能です。
- 異種ボリュームのシャドウ キャスティングはプロジェクト設定で有効にすることができます。
パス トレーサー:
これは実験段階の機能です。
- 異種ボリュームがブロック状になるか、ぼやけている
- インタラクティブなパス トレーシングをサポートするための、異種ボリューム レンダリングのデフォルトのシェーディング レートは 4 です。シェーディング レートを 1 に下げると、知覚できるアーティファクトはなくなりますが、正しくレンダリングするために必要なメモリが増大します。推奨されるシネマティック デフォルトのシェーディング レートは 1 であり、推奨されるデフォルトのメモリ上限は 512 です。レンダリング時に ムービー レンダー キュー で、それらの値を設定することをお勧めします。
- レンダリングでボクセルが欠落する
- ワールド空間および錐台に位置揃えされたボクセル グリッドのシェーディング レートを下げると、課せられたメモリ上限で許容されるよりも多くのボトムレベルのボクセルの割り当てが試行される場合があります。このような場合、ボクセルが割り当てられず、ボリュームの一部が欠落します。現時点では、ボトムレベルのメモリ上限を増やすか、シェーディング レートを上げる必要があります。
- 重なり合った異種ボリュームがブロック状に見える
- 領域が均質であると判断された場合は、ワールド空間のボクセル グリッドのボトムレベルのボクセル データが集約されます。均質であるかどうかの検出は単一のボリュームの範囲内で行われるため、同一領域内で重なり合うボリュームがある場合は、不適切に集約されることがあります。
r.HeterogeneousVolumes.Tessellation.BottomLevelGrid.HomogeneousAggregationを0に設定して無効にすることで、集約を回避できます。
- 領域が均質であると判断された場合は、ワールド空間のボクセル グリッドのボトムレベルのボクセル データが集約されます。均質であるかどうかの検出は単一のボリュームの範囲内で行われるため、同一領域内で重なり合うボリュームがある場合は、不適切に集約されることがあります。
- Niagara Fluid によるスクリーン ドア効果
- Niagara システムは、Niagara エディタが開いているときにのみ、パス トレーシングの無効化イベントをトリガーします。エディタが開いていると、パス トレーサーでアニメーションが正しく表示されます。エディタが閉じていると、パス トレーサーはアニメーション全体でサンプルを蓄積し続けます。
- 異種ボリューム アクタによるスクリーン ドア効果
- 現時点では、異種ボリューム アクタはパス トレーシングの無効化イベントをトリガーしません。アニメーションを一時停止するには、アクタの Animate プロパティをオフにします。
異種ボリュームによる間接ライティング
異種ボリュームによる間接ライティングのサポートを有効にするには、コンソール変数 r.HeterogeneousVolumes.IndirectLighting 1 を設定します。この機能を最大限に活用するには、ハイエンド PC および シネマティック スケーラビリティ設定を使用します。
![]() |
![]() |
| 間接ライティングなし | 間接ライティングあり |
その他のリソース
- Niagara Fluids プラグイン
- Niagara Fluids プラグインには、異種ボリュームのレンダリングで使用できるサンプルが付属しています。プロジェクトでこのプラグインを有効にし、付属のテンプレートから新しい Niagara システムを作成します。詳細については、「Niagara Fluids」を参照してください。
- このページのサンプルで使用されている VDB ファイルは、EmberGen で作成された JangaFX の無料の VDB セットです。
- 無料のサンプルは、こちら でダウンロードできます。

