今回はUnityのLightingウインドウについて見ていきたいと思います。
Lightingウインドウではシーン全体のライトに関する設定が可能で、グローバルイルミネーションや環境光、霧の設定等が出来ます。
グローバルイルミネーション(GI)
グローバルイルミネーションはライトの光源からゲームオブジェクトに直接当たる光(直接光)だけでなくその反射した光(間接光)も表現する機能です。
直接光だけだと上のように洞窟内が真っ暗ですが、間接光が有効だと下のように洞窟内も反射光で照らされています。
UnityではPrecomputed Realtime GIとBaked GIがあります。
Precomputed Realtime GIの場合は事前計算で光の反射の経路を保持しておきリアルタイムに光を反映させます。
Baked GIはあらかじめライトマップ(ライトの情報をテクスチャに焼き付ける)を作成しておきます。こちらはあらかじめ焼き付けたライトなので動く物体への間接光の影響は考慮出来ません。
これら二つのGIは同時に使う事も出来ますが、処理する時間はそれぞれにかかりますので負荷が高くなります。
Lightingウインドウ
Lightingウインドウの個々の設定について見ていきます。
Sceneタブ
Sceneタブではシーンのライトに関する設定をすることが出来ます。
Environment
Environment設定を見ていきます。
Skybox Materialはデフォルトのスカイボックスマテリアルを設定します。スカイボックスは全てのゲームオブジェクトの遠景に表示される背景になります。
Sun Sourceに設定したライトで太陽の方向を指定します。何も指定しない場合はシーンで一番明るいライトが使用されます。
Environment Lightingを見ていきます。Environment Lightingは環境光に関する設定が出来ます。
Sourceは拡散環境光に使用するソースを指定し、シーン全体に光が影響します。選択出来るのはSkybox、Gradient、Colorです。
Skyboxを選択するとIntensityで強度を指定出来ます。
GradientはSkyColor(空)、EquatorColor(中間)、GroundColor(地上)が設定出来ます。
ColorはColorが設定出来ます。
Ambient Modeは拡散環境光をRealtimeにするかBakeにするかを指定出来ます(Realtime Global IlluminationとMixed Global Illuminationの両方がチェックされている場合だけ設定可能)。
Environment Reflectionsを見ていきます。Environment ReflectionsはReflection Probeのベイクやリアルタイムのリフレクションについての設定が出来ます。
Sourceは反射に使用するソースを指定します。SkyboxとCustomを指定出来、Customでは特定のCubemapを指定する事も出来ます。
SkyboxではResolutionで解像度を指定出来ます。
Compressionはリフレクションテクスチャの圧縮の設定です。Uncompressedは圧縮をしない、Compressedは圧縮をする、Autoは圧縮形式が適切な場合だけ圧縮します。
Intensity Multiplierはリフレクションの強度の割合を指定します。
Bouncesはオブジェクト間の反射の回数を指定します。
Realtime Lighting
Realtime Lightingを見ていきます。
Realtime Global Illuminationにチェックを入れるとPrecomputed Realtime GIが有効になります。
Mixed Lighting
Mixed Lightingを見ていきます。
Baked Global Illuminationにチェックを入れるとBaked GIが有効になります。
Baked Global Illuminationにチェックを入れるとLighting Modeの設定をすることが出来ます。
Lighting ModeはMixed Light(LightコンポーネントのModeをMixedにしたライト)と影がゲームオブジェクトにどのように作用するかの設定です。
Baked Indirectはリアルタイムに直接光を計算し、間接光源のみ自動計算して影のベイクをしません。
Subtractiveは直接光と間接光をライトマップにベイクします。Realtime Shadow Colorでリアルタイムの影の色を設定します。
ShadowMaskは直接光が当たったゲームオブジェクトの影と間接光をベイクします。
UnityメニューのEdit→Project Settings…を選択し、QualityのShadowsでShadowMask Modeの変更をすることが出来ます。
ShadowMaskは常にベイクした影を使用し、Distance ShadowmaskはShadow Distanceの距離に達したらベイクした影を使用します。
Mixed LightingについてはUnityマニュアルに詳しく載っています。
Lightmapping Settings
Lightmapping Settingsを見ていきます。Lightmapping Settingsではライトマップに関する設定をすることが出来ます。
Lightmapperはライトマップに使用するソフトウェアを指定します。
Prioritize Viewにチェックを入れるとシーンビューのテクセル(テクスチャピクセル)に変更を加えてから他のテクセルに変更を加えます。
Multiple Importance Samplingはちょっとわかりません。
Direct Samplesは直接光の計算に使用するサンプル数
Indirect Samplesは間接光の計算に使用するサンプル数
Environment Samplesは環境光の計算に使用するサンプル数
Bouncesは間接光の反射させる回数
Filteringはライトマップに後処理をさせる方法を選択します。Noneはしない、Autoは自動、Advancedは自分で設定を行います。
Advancedに設定した場合はDirect(直接光)、Indirect(間接光)、Ambient Occlusion(周囲の遮蔽)の設定が出来ます。
それぞれのDenoiserはシステム要件を満たしている時だけ使用出来るノイズ除去システムです(使えない場合はグレイ表示されます)。
それぞれのFilterではライトマップターゲットに使用するフィルタを選択出来ます。
Gaussianはガウスフィルターを使用しライトマップをぼやけさせて目に見えるノイズを現象させます。Radiusの設定でテクセル単位の半径を指定します。
A-TrousはA-Trousフィルターを使用しライトマップの可視ノイズを除去し、ぼかしの量を最小限にします。Sigmaの設定でぼかしの強さを設定します。
Indirect Resolutionは単位あたりの間接光のテクセルの量
Lightmap Resolutionは単位あたりのライトマップのテクセルの量
Lightmap Paddingはライトマップの別々の形状間の間隔で単位はテクセル
Lightmap Sizeはライトマップのサイズ
Compress Lightmapsにチェックを入れるとライトマップを圧縮します。
Ambient Occlusionにチェックを入れると周囲の遮蔽の設定をすることが出来ます。
Max Distanceは距離
Indirect Contributionは間接光にどの程度影響を与えるかの設定
Direct Contributionは直接光にどの程度影響を与えるかの設定
Directinal Modeは入射光に対する設定をすることが出来ます。Non-Directionalは平行に光が拡散し、Directionalの場合は法線マップ(NormalMap)の方向に光を拡散します。
Indirect Intensityは間接光の強度を設定します。
Albedo Boostはオブジェクトの表面で跳ね返る光の量を設定します。
Lightmap Parametersではデフォルトのライトマップパラメータを選択したり自分でライトマップパラメータを作成し設定することが出来ます。
ライトマップパラメータは項目の選択でCreate New…を選択したり、Assetsフォルダ内で右クリックからCreate→Lighmap Parametersでも作成出来ます。
Other Settings
Other Settingsを見ていきます。
Fogにチェックを入れると霧を発生させることが出来ます。Deferredレンダリングパスの場合は使用出来ないので、Deferredレンダリングパスの場合はPostProcessingStackを使用します。
Colorで霧の色を指定します。
Modeで霧の密度のモードを指定します。
Linearは霧が直線的に増え、Stardで霧が発生する距離、Endで霧で完全にゲームオブジェクトが見えなくなる距離を指定します。
Exponentialは指数関数的に増え、Densityで霧の深さを指定します。
Exponential Squaredは指数関数的よりも早く密度が濃くなり、Densityで霧の深さを指定します。
Halo Textureは光の周囲のハロー効果に使用するテクスチャを指定します。
Halo Strengthはハロー効果の強さで0~1の値を指定します。
Flare Fade Speedはレンズフレアが現れた後にフェードしていく時間を指定します。
Flare Strengthはレンズフレアの強さで0~1の値を指定します。
Spot Cookieはスポットライトに使用するデフォルト設定のクッキーを指定します。
レンズフレアはLightコンポーネントのFlareに設定し、カメラにFlare Layerコンポーネントを取り付けると見ることが出来ます。
Debug Settings
Debug Settingsを見ていきます。
Light Probe Visualizationで選択しているゲームオブジェクトへのライトプローブの効果を可視化する時の設定が出来ます。
Only Probes Used By Selectionはシーンビューで現在選択しているゲームオブジェクトに影響するライトプローブのみ表示します。
All Probes No Cellsはシーンビューで全てのライトプローブを表示しますがプローブを繋ぐ線は非表示になります。
All Probes With Cellsはシーンビューで全てのライトプローブを表示し、プローブを繋ぐせんを表示します。
Noneは影響するかどうかにかかわらずライトプローブを表示しません。
Display Weightsは補間に使用する四面体への線を表示します。
Display OcclusionはMixed LightingのLighting ModeがDistance ShadowmaskかShadowmaskの時にライトプローブの遮蔽データを表示します。
Auto Generateにチェックを入れるとゲームオブジェクトの配置や移動を行うと自動でライトマップをベイクします。
Auto Generateにチェックを入れていない場合はGenerate Lightingボタンを押すことでライトマップをベイクします。
Generate Lightingボタンの右の矢印を押しBake Reflection Probeを選択するとリフレクションプローブのみベイクします。
Generate Lightingボタンの右の矢印を押しClear Baked Dataを選択すると、設定されているライトマップデータが解除されデータ自体も削除します。
Realtime Lightmapsタブ
Realtime Lightmapsタブを見ていきます。
Realtime LightmapsはSceneタブのAuto Generateにチェックを入れるか、Generate Lightingボタンを押した時に作成されるRealtime Global Illumination用のライトマップです。
Baked Lightmapsタブ
Baked Lightmapsタブを見ていきます。
Baked LightmapsはSceneタブのAuto Generateにチェックを入れるか、Generate Lightingボタンを押した時に作成されるBaked Global Illumination用のライトマップです。
設定をしてベイクしてみる
Lightingウインドウについて見てきたので地面やライト等を配置し設定を施してライトマップをベイクしてみます。
サンプルのゲーム舞台の作成
地面はTerrainで作成し、木を植えます。
最初から配置されているDirectional LightのLightコンポーネントの設定を変更します。
ModeをRealtimeにし、FlareにスタンダードアセットのSunフレアを設定します。
次にSpot Lightを配置しLightコンポーネントの設定を変更します。
ModeをMixedにします。
地面として使うTerrainは最初からStaticにチェックが入っているとは思いますが、入っていなければインスペクタのStaticにチェックを入れておきます。
サンプルのLightingウインドウの設定
ゲームの舞台が出来たのでLightingウインドウで設定をしていきます。
Environment LightingをGradientにします。
Realtime LightingのRealtime Global Illuminationのチェックを外しリアルタイムの反射光を無効にします。
Lightmapping Settingsはデフォルトのままにします。
Other SettingsではFogにチェックを入れ、ModeをExponentialにし、Densityを0.1にして霧を発生させます。
Flare Strengthを0.3にし、レンズフレアの強さを少し下げます。
Spot CookieにスタンダードアセットのLightSquareCookieを設定しスポットライトのデフォルトのクッキー(光で出来る模様)を指定します。
これで設定が出来たのでAuto Generateにチェックが入っていなければGenerate Lightingボタンを押します。
ライトマップに焼くのは時間がかかるので待ちます。
出来たらスタンダードアセットのThird Person Characterを配置して確認してみましょう。
上のようになりました。