UDN
Search public documentation:

LightEnvironmentsJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 ホーム > 光源処理とシャドウ > Light Environment (ライト環境)
UE3 ホーム > レベルデザイナー > Light Environments (ライト環境)
UE3 ホーム > ライティングアーティスト > Light Environments (ライト環境)


Light Environment (ライト環境)


ドキュメントの概要: Daniel Wright により作成。

概要


レベルデザイナーはLight Environment の使用により、関連する静的ライトの効果を概算し、動的ライティングの制御を自動化することができます。Gears of War および Unreal Tournament 3 では、すべてのキャラクター、ビークルおよび他の大多数の動的オブジェクトに対して、変調シャドウと共に Light Environment が使用されています。

Light Environment の必要性


Light Environment がないとレベルデザイナーは常に、静的のみのライトと動的オブジェクトに影響するライトという最低 2 セットのライトを設置しなければなりません。こうしてライトが重複すると、動的オブジェクトに作用するライトが多すぎることがパフォーマンス ヒットを招き、ライトの作動不能につながるケースも少なくありません。さらに、オブジェクトへの静的ライトのみ使用は、動的オブジェクトのライティング不具合が生じたり、柔軟性の低いライティング システムとなってしまいます。

また、ジオメトリを超えて投影される変調シャドウのアーチファクトでは、動的ライトをマニュアル配置せざるをえないことがあります。これも Light Environment によって簡単に回避することができます。

Light Environment のしくみ


Light Environment により、Skylight (スカイライト) と指向性ライトの設定されたキャラクターに作用している多数のライト効果を近似することができます。指向性ライトとは照射半径内にアクタを有するライトで構成されるものですが、これにより生じる変調シャドウをLight Environment で使用します。アクタに反映する全てのライトを平均化することで、シャドウの方向が決まります。ライトは明るさによって方向に影響する程度が異なり、明るいライトほどシャドウの方向に大きく影響します。環境の近似は 2 つのライトのみから行うため、パフォーマンス ヒットの心配もなく、ライトを必要なだけ動的オブジェクトに設定できるようになります。つまり、ひとつのライトセットによって、動的および静的オブジェクトの両方に反映させることができるようになります。

Light Environment により、壁を越えた変調シャドウの投影やプレイヤに対して可視性のあるアーチファクトの発生といった問題点を簡単に回避することができます。その回避方法とは、キャラクター頭上のライトのチャンネル CompositeDynamic (動的合成) で、下向きにシャドウを強制的にかける、より明るいライトを配置することです。

Light Environment はライトがキャラクターに作用すると判断すると、それらの各ライトを、低次の球面調和基底関数 (spherical harmonic basis function) に投影します。この投影ではライト強度とカラーを維持し、対象への入射角度をぼやかします。このぼかしによって情報を失わせるのが大切なポイントで、その結果球面調和基底関数は、一定数の球面調和係数内に無限数のライトを表現することができます。

関連するすべてのライトを球面調和基底関数に投影すると、次に Light Environment は、対象に作用する直接ライトから跳ね返される (bounced) ライティングを概算します。この概算では、直接ライティングの分率を取って飽和演算を行い、光の入射角度を適用し、それを直接光に加算してライティングの合計を求めます。この反射ライティングの概算は、DynamicLightEnvironment の BouncedLightingIntensity と BouncedLightingDesaturation メンバーにより制御されます。

平行 (Directional) ライトは、主要な照射角からのライティングの合成に使用されます。主要照射角とは、球面調和関数に投影された対象物への入射光の角度のうち、輝度が最も高い角度です。

球面調和ライティングは、平行ライトに起因しないすべてのライトを合成するのに使用されます。合成 (composite) ライティングを表現するのに球面調和基底関数で角度がぼかされるため、SH (球面調和) ライトは高周波のスペキュラー (鏡面反射) を正確に再現できません。そのため、SH ライトからのスペキュラーは最適化として完全に無視されます。

Light Environment ではオプションとして、環境に影響を与えるライトのうち bCastCompositeShadow=True に設定されているライトのサブセットの合成から、変調シャドウを投影することができます。Light Environment の球面調和ライトは、環境の変調シャドウの影響を受けず、平行ライトの影響を受けます。

設定


ライト

ライトごとに設定できる関連項目がこちらです。:

LightSettings.jpg

bCastCompositeShadow

あるライトをシャドウの方向に影響させたい場合、bCastComposteShadow を True にします。すべてのライト タイプではこのデフォルト設定は True で、Epic 社変更リスト 208754 以前は、ポイントライトとスポットライトでデフォルトで false に設定されていました。これを False に設定したライトを使うと、Light Environment の合成ライティングを変化させることはできますが、合成シャドウへの作用はありません。

bCastCompositeShadow は、ライトマップにないライトが変調シャドウの影響を受けるかどうかも制御します。bCastCompositeShadow=False の動的ライトは、いずれのライトからの変調シャドウの影響も受けません。ライトマップ上のライトは合成ライトマップの一部としてレンダリングされるため、bCastCompositeShadow を無視します。ライトマップ上のすべてのライトは変調シャドウの影響を受けます。

CompositeDynamic チャンネル

デフォルトでは、ライトは全て CompositeDynamic (動的合成) のチャンネルにありますが、複合 Light Environment を採用しないプリミティブがある場合は動的ライトのチャンネルにもライトが必要です。CompositeDynamic は、最適化としての動的ライトチャンネルとは別のフラグですのでご注意ください。CompositeDynamic であるライトは多くなりがちですが、動的ではなく、動的ライトチャンネルのライトは、シーンにプリミティブが貼り付けられる度に、その妥当性のチェックが必要です。

プリミティブの LightEnvironment (Light Environment)

LightEnvironment (Light Environment) で有効な設定です。例えば、SkeletalMeshActors (骨格メッシュアクタ) で設定できます。

SkelMeshSettings.jpg

DynamicLightEnvironmentComponent (動的ライト環境コンポーネント)

  • AmbientGlow - レベルの光源に加えて付け加えられる環境色です。
  • AmbientShadowColor - 環境シャドウのカラーです。
  • AmbientShadowSourceDirection - 環境シャドウ ソースの方向です。
  • bCastShadows - ライト環境がシャドウをキャストすべきか否かを設定します。
  • bDynamic - ライト環境が動的に更新されるべきか否かを設定します。
  • bFreeze - ライト環境の状態をフリーズすべきか否かを設定します。(このプロパティは、新たなビルドで編集できなくなりました)。
  • BouncedLightingIntensity - シミュレートされる反射光の強さです。直接入射する光源の割合で指定します。
  • BouncedLightingDesaturation - シミュレートされる反射光に適用するデサチュレーションのブレンドです。通常、この値を負にして、反射光をより高彩度化 (サチュレート) します。
  • bSynthesizeDirectionalLight - 平行光源を使用して環境内のメイン光源を合成するか否かを設定します。
  • bSynthesizeSHLight - 球面調和光源を使用して、合成された平行光源によって考慮されなかったすべての光源を合成するか否かを設定します。そうしない場合は、天空光源が使用されます。
  • InvisibleUpdateTime - 視覚化されていないアクタのためのライト環境の更新間隔を設定します。
  • LightDesaturation - レベルの光源のデサチュレーション率です。これは、カラー化された光源のもとで、チームカラーをともなったキャラクターが目立たせるためのものです。
  • LightDistance - オーナーの原点からの、光源を作る距離です。単位は半径です。
  • LightShadowMode - 光源に適用するシャドウのタイプです。
  • MinTimeBetweenFullUpdates - フルに環境を更新するのに経過しなければならない最小時間量です。
  • ModShadowFadeoutExponent - 変調シャドウのフェードアウト曲線を調整する指数です。
  • ModShadowFadeoutTime - キャスターが最後に可視的になってから、変調シャドウが完全にフェードアウトするまでの時間です。
  • NumVolumeVisibilitySamples - プリミティブのバウンディングボリューム内で使用する可視サンプルの数です。
  • ShadowDistance - オーナーの原点を超えて投影するシャドウの距離です。単位は半径です。
  • ShadowFilterQuality - ライト環境で使用するシャドウ バッファ フィルタリングのクオリティです。

LightEnvironmentComponent

  • bEnabled - LightEnvironmentComponent (Light Environment コンポーネント) を有効にします。LightEnvironmentComponent が有効な場合、DynamicLightEnvironment (動的 Light Environment) は、動的ライトのチャンネルを CompositeDynamic ライトのチャンネルとみなします。これは動的チャンネルのユニークな点で、DynamicLightEnvironmentComponent (動的環境コンポーネント) の取り扱いが変わるチャンネルは他にありません。

限界


LightEnvironmentComponent.bEnabled を有効にした後に直下を指すシャドウ

環境の主体に影響を与える光源がどれも bCastCompositeShadows=True となっていない場合、オブジェクトのシャドウは直下を指し示します。(あるいは、環境の AmbientShadowDirection プロパティによって指定された方向を向きます)。