2015年8月26日

UE4 でエリア ライトをシミュレーションする

作成 Alan Noon

現実世界ではあらゆる形状やサイズの光源があります。例えば、蛍光灯、電球 (従来型とカール形状)、車のヘッドライト、キャンプファイヤー、空など様々です。

プロの写真では、ライトは多様な方法でコントロールされます。ジェルはライトの色調を弱めて色付けするために使用します。遮光板やいわゆるクッキー (様々な形状の影を作るためのマスク) で投影の形状やパターンを変えます。特に興味深いのはソフトボックスや撮影用アンブレラなどのディフューザーで、ライトの方向を変える、ライトを拡散する、和らげるために使用します。

現代のオフライン レンダリング ソリューションで見られるパワフルな機能として、エリア ライトがあります。エリアライトは写真のソフト ボックス ディフューザーと同じように機能します。大きなサーフェスから光を放射し、ディフューズ ライティングで空間を満たします。これにより、シーンのシャドウとハイライトを和らげ、サーフェスのレンダリングの見た目を心地よいものにします。

このドキュメント作成時点では、UE4 はエリア ライトに対応していません。しかし、基本的な何らかのジオメトリ、単純なマテリアル、標準の UE4 のスポットライトがあれば、独自のリアルタイム ディフューザーを作成することで、エリア ライティングを満足のいく簡単に制御できるやり方でエミュレートすることができます。このドキュメントでは便宜上、この要素をバウンス カード (Bounce Card) と呼びます。

ステップ 1:シーン

最初は簡単なシーンで、いくつかの窓やドア、スカイライトを備えた家のような構造があります。太陽のように振る舞う指向性ライトもあります。以下のような特殊なアクタも配置されています。 Sphere Reflection Capture アクタが 3 つあり、反射サーフェスを正確にレンダリングする支援をします。 Lightmass Importance ボリュームは、どこでベイクを行うかをライトマスに指示します。 Post Process ボリュームは、様々なビジュアル エフェクトを伴う最終的なレンダリングを微調整します。

エディタで再生した結果

SimLight_0

明らかにこの建物の中は非常に暗くなっています。ここで何を行うかというと、外部から窓やドアを通り抜けて入ってくる光をシミュレーションし、フォトン (光子、photon) が建物の中に入ってくるようにします。こうしたフォトンは背景内を跳ね返り、接触するサーフェスを照らし、最終的には現実味のある好ましい結果を生み出します。

ステップ 2: ライトを追加する

最初に、各ポータル (戸口) の外側のほぼ中央部に光源を追加します。各スポットライトの照明を最大限広げるために、Inner Cone Angle (コーンの内側の角度) と Outer Cone Angle (コーンの外側の角度) を拡げました。

  • Inner Cone Angle    80.0
  • Outer Cone Angle    85.0

以下はライトのビルドとエディタで再生した結果です。

SimLight_1

少なくとも内部が見えるので前より良くなりましたよね。しかし、ライティングとシャドウイングがくっきりしていることがわかります。バウンス カードの残り部分を作成することで、建築ビジュアライゼーションに伴うエリア ライティングのクオリティをさらに高めることができます。

ステップ 3: ライトのディフューズ

バウンス カードは各スポットライトの先にある各ポータルにフィットするようにスケーリングされ外側に配置される単純なプレーンで構成されます。各プレーンには白色のマテリアルが適用され***、建物の内側に向けられます。

バウンス カードが十分な範囲を覆うように光源自体の減衰半径は減らしています。シーンが変われば違う値が必要になるかもしれません。ライトは外側を向くように回転され、建物の内側から離れて、配置したプレーンに直接向けられます。

  • Attenuation Radius (減衰半径) = 200.0

バウンス カードの構成

SimLight_3

シーン設定

SimLight_4

以下はライトのビルドとエディタで再生した結果です。

SimLight_6

プロのアドバイス: バウンス カードの白く光って見える外側のワールド エフェクトが気に入らない場合は、すべてのバウンス カードを選択し、その [詳細] パネルから [Actor Hidden In Game ] のチェックボックスを有効にします。

SimLight_5

補足説明:

*Lightmass の設定

Lightmass は、ライトのベイク プロセスを行うツールで、その結果を各オブジェクトのライトマップにエンコードします。主なパラメータ値を増やすことで、シーンの静的ライトのクオリティは最終的に高まります。このプロジェクトでは以下を含む調整を行いました。

  • Static Mesh Lightmap resolution (スタティックメッシュのライトマップ解像度) = 512
  • Num Indirect Lighting Bounces (間接ライティングのバウンス回数) = 25
  • Indirect Lighting Quality (間接ライティングのクオリティ) = 8.0
  • Use Ambient Occlusion (アンビエント オクルージョンの使用) = True
  • Compress Lightmaps (ライトマップの圧縮) = False

こうした値を増やすと最終的なライトのベイクのクオリティが高まりますが、利用可能な処理能力に応じて時間がかかります。低めの値で繰り返し、シーンのライティングの一般的なトーンを「大まかにとらえ」、望ましい外観になったら最終的クオリティにすることをお勧めします。

**ポストプロセス

ポストプロセス エフェクトは、レンダラーからの最終アウトプットに劇的な効果を与えうる非常パワフルな機能です。ちょっとしたポストプロセスが大きな違いを生みます。かすかなブルーム、何らかの色補正、コントラストのタッチがシーンを非常に味わい深いものにします。Post Processing ボリュームでは、様々なパラメータを利用することができます。このプロジェクトでは以下の設定を使用しました。

  • Scene Color (シーン カラー)
    • Fringe Intensity (フリンジ強度) = 0.575221
    • Grain Intensity (グレイン強度) = 0.150442
  • AutoExposure (自動露出)
    • Min Brightness (最小輝度) = 1.0
    • Max Brightness (最大輝度) = 1.0
  • レンズフレア
    • Intensity (強度) = 0.0
  • Unbound (境界なし) = True

フリンジとグレインの設定では、フォトグラフィックのアーティファクトが若干生じます。

ここでは Auto Exposure と Lens Flare の設定によって効果的にこうしたアーティファクトをなくしています。

Unbound の設定によって Post Process ボリュームがシーン全体でグローバルに機能します。

*** バウンス カードのマテリアル

マスターのバウンス カードのマテリアルは以下のように単純なものです。Base Color (基本色) に Vector3、そしてその色を乗算してエミッシブ チャンネルに入れる Scalar です。このマテリアル インスタンスのバージョンではその輝度が高くなっています。

  • Brightness = 13.0

SimLight_7
マスター マテリアル               |                マテリアル インスタンス

マテリアルのエミッシブのクオリティは、実際にライトをシーンに放射し、ライトマスの計算に使用するようには設定されていません。この場合は純粋に美的目的で選択しています。