今回はUnityのLightコンポーネントの設定について見ていきたいと思います。
Lightコンポーネントはゲームの世界を照らす光を表現するもので、太陽、懐中電灯、室内の明かり等、色々な場面で使用します。
Lightコンポーネントの細かい設定を理解すれば、より良いゲームの世界観を作れます。
ライトの作り方
ライトはヒエラルキー上で右クリックからLight→ライトの種類を選択するか(Reflection ProbeとLight Probe Groupはライトではありません)、
ゲームオブジェクトのインスペクタのAdd ComponentからRendering→Lightを選択すると追加出来ます。
ライトの種類はLightコンポーネントの設定から変更出来ます。
Lightコンポーネントの設定
ライトを作成するとLightコンポーネントがゲームオブジェクトに追加されています。
Typeでライトの種類が選択出来、Spot、Directional、Point(ポイントライト)、Area(baked only)の種類があります。
Spotはスポットライトで懐中電灯のような光源から円錐上に光が照射されます。
Rangeで光の到達距離を指定します。
Spot Angleで円錐の底面の角度を指定します。
Directionalは明確な光源を持たずにゲームオブジェクトの向いている方向に平行に光が照射されます。太陽光に使われます。
Pointはポイントライトで光源から全方向に光を照射します。
Rangeで光の到達距離を指定します。
Area(baked only)はエリアライトでライトマップで表面方向に光を照射します。エリアライトはライトマップをベイクした時だけ有効になります。
Shapeでライトの形状を変更出来、Rectangle(矩形)とDisc(円)を選択出来ます。
Rangeで光の到達距離を指定。
Radiusで半径を指定(Discのみ)。
Widthでライトの幅を指定(Rectangleのみ)。
Heightでライトの高さを指定(Rectangleのみ)。
Areaライトはライトマップにベイクする必要があります。
ライトマップのベイクについては
を参照してください。
Colorはライトの色を指定します。
Modeはライトをベイクするかどうかの設定で、
Realtimeはリアルタイムに直接光を照射します。LightingウインドウのRealtime LightingのRealtime Global Illumination(リアルタイムGI)を有効にすると直接光だけでなく間接光も考慮されます。
Mixedはリアルタイムに直接光を照射しますが、LightingウインドウのMixed LightingのMixed Global Illuminationの設定によって間接光も考慮されます。RealtimeとBakedの中間ですかね。
Bakedはあらかじめ直接光と間接光をライトマップにベイクしておくのでリアルタイムな光ではありません。動的なゲームオブジェクトに光の影響を与えたい時はライトプローブを使います。
ライトのモードによって動的なオブジェクト、静的なオブジェクトに光を照射した時の直接光と間接光の計算はモードによって変わり、
上のページのような関係があります。
LightのTypeがSpotとPointの時はModeをRealtimeにしてもリアルタイムの反射光による影は考慮されません。
Intensityは光の強度を設定出来ます。
Indirect Multiplierは間接光の強度を設定出来ます。
Shadow Typeは影の種類でNo Shadowsは光による影を表示せず、Hard Shadowsはエッジのくっきりした影を表示し、Soft Shadowsはエッジを滑らかにします。Hard Shadowsの方が軽い処理になります。
Baked Shadow Angle(TypeがDirectional、ModeがMixedかBakedでShadow TypeがSoft Shadowの時)にベイクする影のエッジの角度を指定します。数値が大きくなるとより自然な影になります。
Realtime Shadows項目を見ていきます(ModeがRealtime、Mixedの時)。
Strengthは影の強さを指定します。
Resolutionは影の解像度を指定します。Use Quality Settingsを選択するとUnityメニューのEdit→Project SettingsのQualityのShadowsでの設定が適用されます。
Biasは影が表示されなくなる光からの距離を指定します。
Normal Biasは影を落とす面が面の法線方向にどれだけ縮小されるようになる距離を指定します。
Near Planeは影の描画のNear Clip Plane(近い部分を切り取る)距離の設定です。
影については
を参照してください。
Biasの設定等について書かれています。
Cookieはライトで作られる影の模様に使用するテクスチャを設定します。
Draw Haloにチェックを入れるとライトにハロー効果(空気中の細かい粉塵)を加えます。Haloの強さはLightingウインドウのOther Settingsで設定出来ます。
Flareはカメラで光の屈折を表現する時に使用するフレアを指定します。Flareの設定はLightingウインドウのOther Settingsで設定出来ます。
Render Modeはライトの描画の優先度を指定します。
Autoは近くの照明の明るさとQualityの設定に応じて表示されます。
Importantは常にピクセル単位のクオリティで表示されます。
Not Importantは常に頂点とオブジェクトのライトモードで表示されます(高速)。
Culling Maskでは光を当てるレイヤーを選択出来ます。
例えばキャラクターにPlayerレイヤーを設定し、Directional LightのCulling MaskでPlayerのチェックを外すと、
下のようにDirectinal Lightの光がキャラクターに当たらないようになります。
LightコンポーネントはLightingウインドウでの設定と関係があるので、
も参照してください。
終わりに
光や影はゲームの世界観を作る時に非常に重要ですが、Lightコンポーネント、Lightingウインドウの設定等は素人にはなかなか難しいものですね。
リアルタイムライトとベイクしたライト。
GIを使った直接光、間接光、環境光。
さらにはLight Probe Group、動的なゲームオブジェクト(Dynamic)、静的なゲームオブジェクト(Static)。
これらが密接な関係にあるのでわけがわからなくなります。
記事中にリンクを掲載していますが、これらの関係が表にされたページがあったのでこれは非常に便利ですね。(^^)/
参考サイト
UnityマニュアルーLightインスペクタ―ー
Unityマニュアルーライトの種類ー
UnityマニュアルーLightMode-Realtimeー
UnityマニュアルーLightMode-Mixedー
UnityマニュアルーLightMode-Bakedー