ボリューメトリック ライトマップ

動的オブジェクトのグローバル イルミネーションおよびビルドされていないシーンのプレビューに使用するキャッシュされたボリューメトリック ライティングのサンプル

Windows
MacOS
Linux

Volumetric Lightmap は 間接ライティング キャッシュ に変わります。いずれは Volume Lighting Sample に変わります。

[World Settings] > [Lightmass Settings][Volume Lighting Method][VLM Spare Volume Lighting Samples] に設定すれば、再度間接ライティング キャッシュを有効にすることができます。

ライトマスは静的オブジェクト上に間接ライティングの surface lightmaps を生成します。しかしながら、(キャラクターなどの) 動的オブジェクトも間接ライティングの情報が必要です。そこで、Volumetric Lightmap と呼ばれる空間内のすべてのポイントを事前計算してライティングを格納して、ランタイム時に動的オブジェクトの間接ライティングを計算可能にします。

Indirect Lighting Cache | (Old Method)

Volumetric Lightmap | (New Method)

Volumetric Lightmap は、間接ライティング キャッシュよりも正確な動的オブジェクトのレンダリングが可能。

機能の説明

Volumetric Lightmap システムは以下のように機能します。

  • ライトマスはレベルのあらゆる場所にライティング サンプルを配置し、ライティングのビルド中にそれらの間接ライティングを計算します。

  • 動的オブジェクトをレンダリングすると、各ピクセルのシェーディング中に事前計算間接ライティングが与えられて Volumetric Lightmap が補間されます。

  • ライティングが利用できない場合 (新規または移動が多すぎるオブジェクト) は、ライティングがリビルドされるまで 静的な オブジェクトの Volumetric Lightmap から各ピクセルに対してライティングを補間します。

Lightmass Importance Volume を置くと、ボリューメトリック ライトマップは 4x4x4 の brick (ライティング サンプル) をビルドします。ライトマスを実行すると、これらの brick は Lightmass Importance Volume 全体の上に置かれます。間接ライティングをきれいにキャプチャしょうとするほど、シーンの静的ジオメトリの周りにあるセルを多く使います。

CubeVLM1.png

これらのポイント (または球) の 1 つ 1 つが Volumetric Lightmap ライティング サンプルで、全方向の入射光を格納するために 3次球面調和を使用します。

VolumeLightmap.png

オブジェクトの近くでは、1 つのある brick 内のすべての静的なジオメトリは、間接ライティングの変化が最も大きくなる場所でより多くのセルを使用します。こうしたデータ構造により、GPU 上の空間のすべてのポイントで間接ライティングの補間が可能になります。

VLMDensity.png

(画像の左) 単一のスタティックメッシュをもつ Lightmass Importance Volume をボリューム内に置きます。(中央) 静的ジオメトリの周りのセルは密度が高くなります。(右) サンプルの brick の片側に 4x4x4 のセルで表現されてます。静的ジオメトリがライティング ビルド中に存在する場合は、高密度のセルで表現したこのサンプルと同じになります。

ボリューメトリック ライトマップの可視化を有効にする

Volumetric Lightmap のビュー モードを使って、[Show] > [Visualize] > [Volumetric Lightmap] をクリックしてレベル ビューポート内でライティング サンプルを使用します。

Volumetric Lightmap ビューモード

Volumetric Lightmap ライティング サンプルを視覚化

画像をクリックしてフルサイズ表示

画像をクリックしてフルサイズ表示

ライティングのビルド後に Volumetric Lightmap を視覚化すると、 影響を受けている Lightmass Importance Volume 内のセルに基づいて静的ジオメトリの周囲に集まっているライティング サンプルの密度を確認することができます。静的ジオメトリから離れているライティング サンプルは近くにジオメトリがないため、密度は低くなります。

Volume Lighting Samples | (Old Method)

Volumetric Lightmap | (New Method)

Indirect Lighting Cache は静的ジオメトリのサーフェス上にライティング サンプルのみを配置します。Volumetric Lightmap は 間接ライティングの変化が一番大きくなるには、その詳細のために静的ジオメトリの周囲に高密度にサンプルを配置します。

ビルドされていないライティングのプレビュー方法

Volumetric Lightmap は、ビルドされていないライティングを使用したオブジェクトのプレビューを可能にします。ライティングがビルドされているスタティックメッシュを移動すると、 それは次のライティング ビルドまで自動的に Volumetric Lightmap に切り替わります。

Indirect Lighting Cache | (Old Method)

Volumetric Lightmap | (New Method)

中央の柱はコピーです。ライティング ビルドが再ビルドされるまで、Volumetric Lightmap で照らされている状態です。

ムーバブル オブジェクトの事前計算ライティング

ライティング サンプル間の補間をコンポーネント全体で 1 度だけしか行わない 間接ライティング キャッシュ とは異なり、Volumetric Lightmap はピクセルごとに補間することによってより詳細が可能になります。信頼性のあるディティールを配布するため、ライト漏れが少なくなります。

Indirect Lighting Cache  | (Old Method)

Volumetric Lightmap  | (New Method)

Volumetric Lightmap の詳細が追加されたことにより、キャラクターが背景に自然に馴染みます。

Indirect Lighting Cache | (Old Method)

Volumetric Lightmap | (New Method)

静的ジオメトリに埋め込まれているムーバブル オブジェクトは、間接ライティング キャッシュよりも静的オブジェクト ライティングとの方がうまく適合します。

Volumetric Fog のフォグの事前計算ライティング

Volumetric Lightmap は、空間での位置に対してフォグ ボクセルごとに事前計算ライティングを補間させることにより、Volumetric Fog のフォグの Static light (静的ライト) への適用に対応しています。

Spot Light with | No Indirect Light Bounce

Spot Light with | Indirect Light Bounce

Stationary Light (固定ライト) は間接ライティングをライトマップに格納してフォグを照らします。

Sky Light with Emissive Color

Sky Light Volumetric Lightmap

スカイライトは適切にシャドウ処理により、室内領域でのフォグのかかりすぎを防止します。

Indirect Lighting Cache: | Static and Emissive for Static Lighting | (Old Method)

Volumetric Lightmap: | Static and Emissive for Static Lighting | (New Method)

Static ligth (静的ライト) およびエミッシブによる Static light は、Volumetric Lightmap にすべてベイクされているため、負荷をかけずにフォグを照らすことができます。

設定

Volumetric Lightmap の設定は、[Lightmass Settings] の中の [World Settings] にあります。

VLMSettings.png

設定

説明

Volumetric Lighting Method

事前計算ライティングを Lightmass Importance Volume の全方向に使用する技法です。

VLM Volumetric Lightmap

ライティング サンプルは Lightmass Importance Volume 全体を囲む詳細グリッドで計算されます。ジオメトリ周辺では高密度なグリッドが使用されます。Volumetric Lightmap は GPU 上でピクセルごとに効率的に補間されるため、動的オブジェクトおよび体積ベースのフォグへの正確な間接ライティングが可能になります。Importance Volume の外側では、Volumetric Lightmap の境界テクセルを再利用します (アドレス処理をクランプ) 。モバイルの場合、CPU 上で各オブジェクトの範囲の真ん中で行われます。

VLM Sparse Volume Lighting Samples

ボリューム ライティング サンプルは静的なサーフェス上に中程度の密度で置かれ、Lightmass Importance Volume 内のその他の場所では低密度で置かれます。Positions outside of the Importance Volume 外の位置では間接ライティングはありません。このメソッドは CPU 補間が必要なので、間接ライティング キャッシュを使い、レンダリング スレッド オーバーヘッドを加えて、動的オブジェクトごとに結果を補間します。Volumetric Fog のフォグはこのメソッドによる事前計算されたライティングで照らすことはできません。

Volumetric Lightmap Detail Cell Size

最高密度 (ジオメトリ周辺で使用) での Volumetric Lightmap のボクセル サイズ (ワールド単位) です。この設定は、ビルド回数とメモリに大きく影響するので、慎重に使用してください。

Volumetric Lightmap Maximum Brick Memory Mb

Volumetric Lightmap Brick データに使用する最大メモリ量です。高濃度の brick は、上記の制限値が満たされるようになるまで破棄されます。その際、ジオメトリから最も遠くにある brick が先に破棄されます。メモリを極端に減らしてしまうと解像度の一貫性が失われます。Volumetric Lightmap Detail Cell Size を増やす手段をお勧めします。

パフォーマンス

Volumetric Lightmap によるパフォーマンスおよびメモリ使用に関して、次の点に留意してください。

  • サードパーソン キャラクター上で Volumetric Lightmap を使用すると、PlayStation 4 では GPU 処理が 0.2ms かかります。すべての間接ライティング キャッシュ レンダリング スレッド負荷は除去されました。

  • エピックの Paragon マップの Monolith では、間接ライティング キャッシュの使用によりメモリ使用量がデフォルトの [Detail Cell Size] 設定の 5Mb から 30 Mb に増えました。メモリ使用量は エディタの Stat Memory コマンドの Volumetric Lightmap Memory に表示されます。

    クリックしてフルサイズ表示

ボリューメトリック ライトマップと間接ライティング キャッシュ

Volumetric Lightmap と間接ライティング キャッシュを比較すると次のようになります。

事前計算された Light Volumes/Indirect Lighting Cache

Volumetric Lightmaps

GPU での負荷の高い補間

CPU での効率的な補間

インスタンス化されたコンポーネント上でのオブジェクト毎の補間

ピクセル毎の補間

Volumetric Fog のフォグに影響を及ぼすことができない

Volumetric Fog のフォグに適用

静的なサーフェス上に高密度のサンプルのみを配置すると、低密度のサンプルから漏れが発生してしまう

静的なサーフェスの周囲にびっちりと高密度のサンプルを置く

Lightmass Importance Volume 外の黒いサンプル

境界ボクセルを伸縮して Lightmass Importance Volume 外の領域を覆う

レベル ストリーミングに対応

現時点ではレベル ストリーミングには非対応

追記

  • 精度をあげるために大きなレベル内で Volumetric Lightmap Detail Cell Size を小さくする場合は Volumetric Lightmap Maximum Brick Memory Mb も高くする必要があります。そうしないと、詳細のセルがカリングされ、動的オブジェクト間接ライティングの精度が落ちます。

トラブルシューティング

  • サンプル数が増えると [Detail Cell Size] は小さくまりますが、サンプル密度は静的ジオメトリの近くでは要求よりも低くなります。

    • [Maximum Brick Memory] が低すぎたり、その領域のすべてのライティングがほぼ等しい場合、詳細の brick はカリングされることがあります。

  • 近くにスタティックメッシュはありませんが、キャラクター上に壁からのライト漏れがあります。

    • ライト漏れに対する唯一のソリューションは現段階では [Detail Cell Size] を低くする (さらに多くのメモリの使用が可能にする)、または壁の厚みを増やすことです。

タグ

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信