異種ボリューム アクタは、スパース ボリューム テクスチャ をサンプリングするボリュームドメインのマテリアルをレンダリングします。このアクタは、リアルタイムで パス トレーサー でボリュームをレンダリングすることをサポートしています。異種ボリューム アクタは、静的またはアニメートされたスパース ボリューム テクスチャ マテリアルををレンダリングできます。
左は静的な単一のボリュームの SVT で、右はアニメートされた SVT です。
異種ボリューム アクタを操作する
以下のワークフローを使用して、プロジェクトで異種ボリュームを使用します。
- VDB をインポートして Unreal Engine でスパース ボリューム テクスチャ アセットを作成する。
- SVT アセットをサンプリングするボリュームドメインのマテリアルを設定する。
- 異種ボリューム アクタをシーンに追加し、SVT マテリアルをこれに割り当てる。
VDB ファイルをインポートする
開始するには、コンテンツ ブラウザにインポートする VDB (ボクセル データ ベース) ファイルが必要になります。
VDB ファイルをインポートするには、以下の手順に従います。
- VDB を直接コンテンツ ブラウザにドラッグアンドドロップします。
- コンテンツ ブラウザで [Import (インポート)] ボタンを使用します。
VDB には、静的な VDB ファイルおよびアニメートされた VDB ファイルをインポートするためのインポート ウィンドウがあります。
静的 または アニメートされた VDB ファイルをインポートするオプションがあります。静的な VDB には単一のファイルと格納されたボリューム データのみが含まれていますが、アニメートされた VDB は順番に番号が付いた個別のファイルのセットです。アニメートされた VDB は、アニメートされた VDB を全体でインポートするために順番に番号の付いた VDB ファイルのインポートするだけで済みます。
VDB にはデータとともにさまざまな属性が含まれています。これらは属性 A と属性 B に分けることができます。推奨事項として、2 つのサンプリング属性で入力データを分け、最初の属性データを 8 ビットの unorm として、2 番目の属性データを 16 ビットの浮動小数点数としてインポートします。
Epic Games のプロジェクトの場合、8 ビットの unorm として密度をプッシュして、インポート時に 16 ビットの浮動小数の属性リストを通じて他のすべてのデータを渡します。
スパース ボリューム テクスチャのインポートと使用の詳細については、「スパース ボリューム テクスチャ」を参照してください。
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 でのレンダリング時に変更することはできません。 |
| Animation | |
| Frame | レンダリングされている SVT の現在の名前を表示します。[Playing] チェックボックスが設定されていない場合、アニメートされた SVT の特定のフレームを指定できます。 |
| Frame Rate | フレームを再生する速度。 |
| Start Frame | アニメートされた SVT が開始するフレーム。これは、インポートした SVT の使用可能な範囲に制限されます。 |
| End Frame | アニメートされた SVT が終了するフレーム。これは、インポートした SVT の使用可能な範囲に制限されます。 |
| Playing | 有効な場合、これはアニメートされた SVT で 1 回再生されます。 |
| Looping | 有効な場合、これはアニメートされた SVT を最初から、開始フレームから終了フレームを繰り返します。 |
| Sparse Volume Texture Streaming | |
| Issue Blocking Requests | ストリーミング システムは、フレームごとのスパース ボリューム テクスチャ データの更新時にブロックするように通知を受けます。これはリアルタイムの再生には推奨しませんが、ストリーミング システムがリアルタイムのフレーム レートを維持するために高い MIP レベルでページングする場合、シネマティック レンダリングに便利です。 |
| Mip Level | レンダリングされている 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 の「シネマティック」レートで行うように想定されていますが、必要に応じて調整できます。
SVT は、[Playing] チェックボックスが設定されているときにシーンでインタラクティブに再生し、[Looping] チェックボックスが設定されているときに継続的に繰り返します。[Playing] チェックボックスを選択しないままにすると、[Frame (フレーム)] テキスト フィールドをマウスの左ボタンでクリックし、左または右にドラッグし、SVT の使用可能なフレームをスクラブ再生できます。
ライティング
ディファード レンダリング モデルでは、異種ボリューム アクタで高品質のボリュメトリック アセットのレンダリング時に、レイ マーチングを使用します。調整可能な各 Factor プロパティは、Volume Resolution プロパティに対して相対的です。インポートされた SVT の解像度は、ランタイム パフォーマンスと直接的な相互関係があります。
ブループリント
ブループリントで、Play ノードと Set Playing ノードを使用して、アニメーション データの開始と停止をトリガーできます。
制限事項および既知の問題
- VDB ファイルをインポートする
- SVT を構築時に OpenVDB ファイル内で適用されたトランスフォーム データは無視されます。現在、アーティストは、インポート後にアセットをエディタ内で配置しなおす必要があります。
- Houdini などのサードパーティのパッケージは、通常、エクスポート時にフレームごとのトランスフォーム データを OpenVDB ファイルに書き込みます。現在、アーティストは、フォグ ボリュームを OpenVDB にエクスポートする前に、このトランスフォーム データを削除する必要があります。Pyro DOP ネットワーク内で動的なサイズ変更コンテナ操作を無効にすると、この動作が回避されます。
- リアルタイムでのレンダリングとパス トレーサーでのレンダリング
- レンダリング ボリュームのより完全なサポートはパス トレーサーで利用でき、散乱、シャドウ、グローバル イルミネーションを正確にシミュレーションできます。
その他のリソース
- このページの例で使用される VDB ファイルは、EmberGen で作成された JangaFX の無料の VDB セットです。
- 無料サンプルは、ここ でダウンロードできます。