Unreal Engine (UE) のライトは物理ベースのライティング単位を使用して定義されます。既知の測定可能な値を入力することで、リアリティ溢れるライティングが実現できます。ライトの種類が様々なライティング単位をサポートするだけでなく、明暗順応 (自動露出) のポストプロセスも広範囲の値に対応し EV100 (ISO 100) で表現されるようになりました。「マジックナンバー」を使ったりアーティストが勘で値を入力しなくても、ライティングと自動露出の物理ベースの単位によってリアリティ溢れるライティングがとても簡単に作成できるようになりました。
ライトの強度を表すライティングの単位
各種ライトの選択時に、物理ベースのライティングの単位が [Details (詳細)] パネルの [Intensity (強度)] 値の隣に表示されます。
各種ライトの強度は以下のように表示されます。
指向性ライト は 1 平方メートルのルーメンを意味する Lux で表される Direct Normal Illuminance を使用します。
スカイライト と スタティック ライトとしての発光体 は 1 平方メートルあたりのカンデラ (cd/m2) で表される輝度を使用します。
ポイント ライト 、 スポット ライト および 矩形ライト のライティング単位は以下から選択可能です。
カンデラ (cd) は、1 ステラジアン (sr) の立体角を均等に放出される光度の単位です。たとえば、1000 cd に設定したライトは 1 平方メートルに 1,000 lux と計測されます。
ルーメン (lm) は、1 ステラジアンの角度に放出される光束の単位です。測光学では、光束 (またはルミナス パワー) は知覚される光量の単位です。光の分布の広さ狭さに関係なく、放出されたエネルギーの総量は同じです。
ユニットレス はエンジン特有のライト強度値で、バージョン 4.19 より以前の Unreal Engine とも互換性を保っています。
指向性ライト
指向性ライト (Directional Light) は、 Direct Normal Illuminance または Lux (lx) で表されます。それらは、 視覚可能 で 直接的な 太陽光線に対して垂直なサーフェイス上の太陽からの放射によって地表で生成される 照度 を意味します。表面に降り注ぐライトの総量を表します。
エミッシブ サーフェイス
エミッシブ サーフェイスは、ライティングが加えられる前のピクセルの輝度を定義する 1 平方メートルあたりのカンデラ (cd/m2) で表されます。
スカイ ライト
スカイライト (Sky Light) は、ライト強度を乗じたピクセル強度を使用し、HDR の cd/ 平方メートルで表されるトータルの輝度と等しくなります。たとえば、HDR のピクセルをフィルターとみなし、これらのピクセルが 0 から 1.0 の範囲で、スカイの強度は 1000 cd/平方メートルとすると、輝度は 1.0 * 1000 cd/ 平方メートルとなります。
静的ライトとしてのエミッシブ マテリアル
アクタごとの設定 [Use Emissive for Static Lighting] を有効にする スタティック メッシュに適用されるエミッシブ マテリアル の場合、表面の輝度はライティングをシーンにベイクするために使用されます。
ポイント ライト、スポット ライト、および矩形ライト
ポイント ライト(Point Light)、スポット ライト(Spot Light)、および 矩形ライト(Rect Light) では、Inverse Squared Falloff (逆 2 乗フォールオフ) を有効にしたライトのユニット タイプを指定できます。[Details (詳細)] パネルで Intensity Units (強度の単位) を Candela (カンデラ)、Lumen (ルーメン) または Unitless (ユニットレス)** に設定することができます。
Inverse Squared Falloff は、減衰半径が 3 つすべてのライト ユニット タイプでサポートされているライトの影響に対しクランプのみ行う、物理ベースのディスタンス フォールオフです。無効にすると、Unitless のみ使用可能となります。Inverse Squared Falloff を無効にしたライトは、ライト付近で明るいスポットを作りたくない場合に使う、強度の弱いフィル ライトを設置する際に便利です。
ポイント ライト、スポット ライト、および矩形ライトのデフォルトの単位タイプは [Project Settings (プロジェクト設定)] > [Rendering (レンダリング)] > [Default Settings (デフォルト設定)] で設定することができます。
各単位の関係は以下のように定義されます。
1 cd = 625 unitless
1 cd = 1 lm/sr
ライトの強度が Candelas で定義される場合、円錐角の影響を受けません。しかし、ライトの強度が Lumens で定義される場合、ステラジアン (sr) で、ルミナス パワーはライトの影響を受ける立体角のみに適用されることに留意してください。
ポイント ライト の場合、ライトの影響を受ける立体角は 4π sr です。
照度 (1 lm) ≈ 49.7 * 照度 (1 unitless)
照度 (1 cd) ≈ 12.6 * 照度 (1 lm)
スポット ライト の場合、立体角は 2π * (1 - cos(θ)) で定義されます (θ は光円錐の半分の角度)。
照度 (1 lm) ≈ 99.5 / (1 - cos(θ)) * 照度 (1 unitless)
デフォルトの円錐では、θ = 44° で、立体角はおよそ 1.76 sr です。
デフォルトのスポッ トライトの照度 (1 lm) ≈ 354 * 照度 (1 unitless)。
デフォルトのスポッ トライトの照度(1 cd) ≈ 1.76 * 照度 (1 lm)。
円錐角が小さいほど、ライトからの表面への照明は強くなります。ライトの強度はルーメンで表されます。
矩形ライト の立体角は 2π sr で定義されます。
照度 (1 lm) ≈ 199 * 照度 (1 unitless)
照度 (1 cd) ≈ 3.14 * 照度 (1 lm)
ヒントとアドバイス
以下は物理ベースのライティング ワークフローを最大活用する上でのアドバイスです。
ライトの設置後にイメージが白くなった場合は、自動露出の制限が大きすぎるのかもしれません。[Auto Exposure] を 最大の [EV100] (および [Histogram] を最大の [EV100]) にすることを検討してください。
反射するサーフェイスに黒いパッチのようなアーティファクトがある場合、SceneColor のバッファがオーバーフローする可能性があります。これを修正するには、[Apply Pre-Exposure before writing to the scene color (シーンカラーに書き込む前に事前露出を適用する)] を有効にするか、シーンのライトを暗くします。
ポストプロセス ボリュームが存在していなくても、デフォルトのポスト プロセス設定がすでにシーンに適用されている場合があることに注意してください。これらのデフォルト設定が知らないうちにカメラの設定に影響を与えることがあります。ポストプロセス ボリュームをシーンに設置して、必要に応じて設定を変更するようにしてください。
拡張されたデフォルトの輝度の範囲を使用する設定にプロジェクトを変更すると、既存の露出設定は失われます。処理を最初から安全に行うために、これらのアセットの設定を手動で移行/再設定することが必要になります。
シーンで少し変更したことでわずかに露出値が変わると、自動露出のヒストグラムが不安定になることあります。この問題を回避するには、Histogram Min と Max の範囲をシーンにおける実際の使用量程度に減らしてください。Visualize HDR を表示するフラグを有効にすると使用量を確認することができます。
一般的な考慮事項
アセットとインスタンス間でデフォルト値が伝搬する際の問題を回避するために、いくつか注意すべき点があります。別のライトから (ブループリントまたはデフォルトのオブジェクトを介して) インスタンス化されたライトは、その親と同じライト ユニットを使用するようにしてください。そうしない場合は、すでに使用されている側のユニットを変更しないでください。親と同じライト ユニットを使用することで、デフォルト値が変更され想定通りに動作し、インスタンスに正確に伝搬され、既存インスタンスの破壊を防止します。
デフォルト プロジェクトのポイントライト、スポットライト、矩形ライトの Light Units は [Project Settings] > [Rendering] > [Default Setting] で定義することができます。