動的ライティング 基本と室内
動的ライティングの基本について説明します。 固定ライトと可動ライトの比較、パフォーマンスと品質のトレードオフの基本についても取り上げます。
ダイナミックライティングのパート1では屋内と基本を扱うとの事
- 標準的なダイナミックライトと影
- Stationary と Movable
- 異なった影についての説明
- パフォーマンス
- 品質
ここで使用するレベル
FundamentalsClassesContentFundamentalsLighting_RenderingEssentialConceptsStartAssetsDynamicLighting_Indoor
ライトは屋外の夜空にあるのみ。真っ暗のレベル。このレベルにポイントライトを配置する
配置すると一部の影の部分に Preview の文字が出てくる。これはポイントライトの可動性が Stationary(デフォルト)で設定されている為。
今回は動的なライトを試すため Movable に設定する
Movable に設定する事でプレビューの文字が消え、ライティングを再ビルドする必要があるというメッセージも消えた。
動的ライトの利点
- ライトを動かすと即座に変更内容が確認できる。これは動的ライトの利点の1つ
- 動的ライトはランタイム時に配置する事もできる
- 爆発などが起こったときにライトをスポーンさせるなどで使用する
動的ライトの欠点
- バウンス(光の反射)に対応していない
- 壁の向こう側は通路があるが光がバウンスしないため全く見えない
- 静的ライトと同じクオリティは出せない
- 稼働ライトの車道は怖めてシャープになる
Stationary と Movable
電気スタンドの中にポイントライトを配置した図。Stationaryはベイクが必要なためベイク後の画面。
Stationaryは光がバウンスして周辺も照らされている事がわかる。
異なった影についての説明
- シャドウは4~6タイプぐらいある
- 固定ライトが作る影と動的ライトが作る影は異なる。
- その他のシャドウについては次のチャプターで触れますとの事。
パフォーマンスについて
- Staticライトはパフォーマンスに影響しない。
- Stationary ライトはシャドウマップをテクスチャに格納するがこのテクスチャには4チャンネルの色しかない。
- Movable ライトはライトの数とダイナミックシャドウの数だけパフォーマンスに影響が出る
品質
- ダイナミックライトはグローバルイルミネーションをサポートしていないという点で品質は最高ではない
- ダイナミックライトはリアルタイムラジオシティをサポートしていない
- ダイナミックライトのシャドウはくっきりしすぎていて現実性に欠ける
動的ライティング 屋外
屋外シーンでは、離れた場所からでも表示される影が必要です。カスケードシャドウマップ(CSM)、 ディスタンスフィールドシャドウ、 ディスタンスフィールドアンビエントオクルージョン(DFAO) はパフォーマンスの損失を抑えつつそうした影を実現することを助けます。
屋外を扱いますつまり CSM、Distance Field、DFAOです。
- 🤔屋外はこれらが関連するという事ですね。
ここで使用するレベル
FundamentalsClassesContentFundamentalsLighting_RenderingEssentialConceptsStartAssetsDynamicLighting_Outdoor
上記のレベルがなかったため下記で代用。
FundamentalsClassesContentFundamentalsLighting_RenderingEssentialConceptsFinishedAssetsDynamicLighting_Outdoor_Finished
- 上記のレベルは完成しているためライト関連のものを一旦削除
- DirectionalLight1
- LightmassImportanceVolume
- SkyLight
- 大規模で広がりのある環境の場合、ダイナミックシャドウが描かれる。
- 極めて遠方のダイナミックシャドウも描かれる
- ディレクショナルライトを追加しMovableにする
- 部屋の中に入るとバウンスがなく不自然に見える
- 屋外へ行くと木の葉が揺れておりダイナミックシャドウがある事がわかる
- 上空から建物を見下ろすとある距離で影が消える
- このようなシャドウマップをCSM(カスケードシャドウマップ)というらしい
- StationaryまたはMovableを選択すると自動的に有効になる機能の模様
- このようなシャドウマップをCSM(カスケードシャドウマップ)というらしい
- 部屋の中に入るとバウンスがなく不自然に見える
CSM(Cascade shadow map)
- Dynamic Shadow Distance Movable: 影をフェードアウトさせるしきい値。この値が小さいと影のクオリティーが上がる、大きいと影のクオリティーが下がる
- 🤔小さいと処理する範囲が狭くなるのできれいになるってことですね
このシャドウは距離によってシャドウをカスケードさせる(一定以上離れると影がぼやけた感じになる)事から、カスケードシャドウと呼ばれている
- CSMは基本的には3つの品質のシャドウを作成する。品質高、中、低。一番近いところにいる場合は高い品質のシャドウが表示され、距離が遠くなるに連れ品質を落とす。
- いくつ作成するかは Num Dynamic Shadow Cascades で設定する
Distance Field
パフォーマンスが低下し正確さも失うことになるが遠くからでもシャドウが見えるようにしたい場合、ディスタンスフィールドまたはディスタンスフィールドシャドウが使える。
- デフォルトでは有効になっていないためプロジェクト設定から有効にする必要がある
- メッシュ距離フィールドの生成にチェックを入れる
- 有効にすると視覚化できるようになる
- メッシュ距離フィールドはモデルの近似値で、ボリューメトリックテクスチャに格納されている
- このフィールドによりすべてのモデルのテクスチャが生成される
- テクスチャはボリューメトリックテクスチャとして機能するため、その情報を利用してモデルを近似化している
- 木の葉などから分かる通りかなり不正確ではあるが、影にはこれで十分なため実際のモデルのジオメトリを使うのではなくこのテクスチャに基づき影を生成する
この機能を確認するためCSMの距離を極端に短くして、Distance Field Shadowsを有効化する
- 左がCSMを極端に短くし影を消した図
- 右がDistance Field Shadowsを有効にした図
- CSM Dynamic Shadow Distance Movable < 現在の位置から対象までの距離となったときにDistance Field シャドウに切り替わる
- Distance Field シャドウはアニメーションしないため、揺れる葉のようなものの影は停止する。
- 🤔CSMで設定をした距離以上に遠く離れるとハリボテに切り替えるという事ですね。
DFAO (Distance Field Ambient Occlusion)
- これはスカイライトによって作成される。
- 下記図はスカイライトを配置しMovableに設定した図
- 窓に写っている黒い壁のようなものがDFAOらしい
- 🤔このレベルでは不自然な結果となり例にはあまり適していないようです
- ダイナミックなライティングが多くある大規模な屋外環境がある場合DFAOを試しうまく言った設定を保持する事をおすすめします。
- DFAO がやろうとしていること
- ディスタンスフィールドメッシュを使用してライトのバウンスを生成しようと試みる
- つまりライトのアンビエントオクルージョンを生成しようと試みる
- ディスタンスフィールドメッシュは非常に不正確なため、最良の結果が得られるとは限らない
静的ライティングと動的ライティングの組み合わせ
静的ライティングが適している場合、動的ライティングが適している場合についてと、 組み合わせて使う例について紹介します。
ここで使うレベル
FundamentalsClassesContentFundamentalsLighting_RenderingEssentialConceptsFinishedAssetsCombiningStaticDynamic_Finished
ここではすでに完成しているレベルを解説していくとのこと
スカイライト
まずは屋外から解説。
- 可動性 static
- スカイライトはくっきりとしたシャドウをキャストしない。またその影響も多くの場合わずか。その上ライトを十分にバウンスさせる必要がある。
- キューブマップはデフォルトサイズより大きく設定
- 実際には反射キューブマップをキャプチャしておりこれについてはあとの章で説明
- 🤔ということはただ単に見えやすくしたりクリックしやすくするためだけにデフォルトサイズを変えているという事ですかね
- スカイライト内部にはフォールバック反射キューブマップがある
- Cubemapの値を上げて Sky Distance Threshold を下げると遠方の空をより適切にキャプチャし環境のライティングに使用できるようになる。
- 🤔全く意味がわかりませんがおそらく重要なためメモ
ディレクショナルライト
- 可動性 stationary に設定されている。
- 光のバウンスがあり(静的要素)かつ屋外で揺れる物体に連動する影(動的要素)があるため
スポットライト
ここからは屋内
- 可動性 stationary
- 近くにある植木?の影をくっきりを作成する必要があったため
ポイントライト
- 可動性 stationary
- 近くにある植木?の影をくっきりを作成する必要があったため
- 可動性 static
- くっきりとしたシャドウが必要なく、明るいライトをキャストするわけでもないため
- 環境を若干ライトアップするために存在している
- また最初の3つのスポットライトとこの背後には一個前のポイントライトの計4つのstationaryがあるため、数の制限を超えるためこちらはstationaryにはできない。
- 影がかなり低解像度なことがわかる
ライトマップの注意点
ここで先に進むまえに少し注意事項としてこの注意が挙げられていた。
モデルにはライトマップの解像度の設定がある
通常ライトマップの解像度は低い(16,32,64,128の解像度)
多数のモデルに高解像度のライトマップが設定されている場合、メモリ、リビルド、ライティングに問題が発生する可能性がある。最も重要で最も大きなモデルにのみ高解像度は設定してください
🤔上記はこの部屋にある壁のライトマップの解像度。本の10倍以上は大きいため大きくなっている模様
ライトマップ密度は確認できる
密度を表示させるとカラフルに見えるが、この色が一様になるようにしてくださいとの事。
アンビエントオクルージョン
- ライトマスの設定ではアンビエントオクルージョンを使用のチェックが有る
- 必須ではないがチェックを入れると少し環境が詳細になる
- ライトマップの圧縮のチェックを外すと高解像度の環境になるが、建設用のレベルを作っているのでないならオフにしないでくださいとの事。
- かなり重くなる模様
- 通常ゲームであれば圧縮は有効なままにしておく
メモ
- ダイナミックシャドウは Unreal Engine でリアルタイムレンダリングを行う場合、最も負荷の高い要素の一つ
- CSM Cascade shadow map
- DFAO Distance Field Ambient Occlusion
- 通常指向性ライトはStationaryにする必要がある
- 光のバウンスが可能な上にアニメーションする影(揺れる草木)も生成する為
種類 | 可動性(一般的な設定) | 備考 |
---|---|---|
ディレクショナルライト | stationary | 光のバウンスがあり(静的要素)かつ屋外で揺れる物体に連動する影(動的要素)があるため |
スカイライト | static | スカイライトはくっきりとしたシャドウをキャストしない。またその影響も多くの場合わずか。その上ライトを十分にバウンスさせる必要がある。 |
ポイント/スポット | シャドウをくっきりしたい場合はstationary。ON/OFFできるライトならMovable。 |
英語メモ
- loaded it up. それはロード済
- 英語字幕で見たほうが英語の細かい部分に気付ける。わからない部分だけ日本語字幕で見る