Unity Lighting -- 配置平行光源和天空盒
識別不同種類的光源
? ? ? ? 在游戲或?qū)崟r(shí)應(yīng)用程序中,我們可能會創(chuàng)建多種不同種類的場景,比如室內(nèi)場景、室外場景、真實(shí)的場景或完全想象的場景。即便項(xiàng)目是一個(gè)完全的想象的或是科幻的故事,燈光也是非常重要的一環(huán),它能極大提升沉浸感。
? ? ? ? 在光照設(shè)計(jì)和實(shí)現(xiàn)中,識別出一個(gè)場景所需要的光照是關(guān)鍵的初始步驟:
? ? ? ? 自然光(Natrual lighting):通常是日光或月光
? ? ? ? 模擬光(Motivated lighting):場景中模擬特定種類的真實(shí)光源,比如路燈或車燈
? ? ? ? 色調(diào)光(Key lighting):場景中照明焦點(diǎn)物體的燈光
? ? ? ? 環(huán)境光(Ambient lighting):在Uinty中也叫漫反射環(huán)境光(diffuse enviromental light),環(huán)境光是存在于場景中但沒有特定來源的光。
? ? ? ? 注意:還有更多種類的燈光,不在此展開
配置平行光
? ? ? ? 對于室外場景,常見的自然光源是太陽或月亮。在Unity中,當(dāng)我們創(chuàng)建了一個(gè)場景后,默認(rèn)會有一個(gè)Direcitonal Light的游戲物體,這個(gè)游戲物體的功能就是太陽或月亮。
? ? ? ? 平行光源會朝著設(shè)定好的方向(在gizmo中可以打開或關(guān)閉方向顯示)發(fā)出平行光:

? ? ? ? ?對于平行光來說,我們可以認(rèn)為它離場景非常遠(yuǎn)。因此它發(fā)出的平行光可以認(rèn)為不是發(fā)散的,它發(fā)出的光不受到光源的大小和位置影響,而只和其方向有關(guān)。
? ? ? ? 在場景中測試一下平行光:
? ? ? ? 首先,確保天空盒會起效果,在下圖紅框處記得勾選Skybox選項(xiàng)

? ? ? ? ?然后找到場景中的Directional Light,嘗試調(diào)整其大小和位置,我們會發(fā)現(xiàn)場景沒有發(fā)生變化


? ? ? ?通過調(diào)整平行光的方向,可以看到場景發(fā)生了明顯變化

? ? ? ? ?在Direcitonal Light的Inspector中,嘗試調(diào)整一下燈光的顏色

天空盒基礎(chǔ)知識
? ? ? ? 了解了平行光之后,我們來看另一個(gè)重要的東西:天空盒。
? ? ? ? 在Unity中,天空背景是通過使用一種稱為skybox的特殊材質(zhì)來創(chuàng)建的。天空盒是立方體,每一面上有不同的紋理。當(dāng)我們使用天空盒來渲染天空的時(shí)候,Unity會將場景放到天空盒立方體內(nèi),Unity會先渲染這個(gè)立方體。
? ? ? ? 天空盒也能夠包含遠(yuǎn)距離的環(huán)境信息。這些信息會對場景的空間和深度感造成影響,包括:
? ? ? ? 景觀特性 - 例如場景遠(yuǎn)處有高山背景
? ? ? ? 建筑物 - 例如只能在地平線上可見的宏偉的城市
? ? ? ? 用于天空盒的材質(zhì)需要使用Skybox shader,有兩類Skybox shader:
? ? ? ? Textured(紋理化的):使用材質(zhì)紋理來生成天空盒的shader
? ? ? ? Procedural(程序化的):使用材質(zhì)屬性來生成天空盒的shader
創(chuàng)建一個(gè)程序化的(Procedural)天空盒
? ? ? ? 接下來我們創(chuàng)建一個(gè)自定義的程序化天空盒:
? ? ? ? 1. 新建材質(zhì),取名為MySkyBox
? ? ? ? 2. 選擇MySkyBox,在Inspector面板中,將Shader選擇為Skybox -> Procedural

? ? ? ? ?3. 在配置天空盒之前,我們最好能夠能讓場景使用這個(gè)自定義的材質(zhì)來渲染天空,以便修改參數(shù)的時(shí)候能夠直觀地看到效果。我們在Window -> Rendering -> Lighting選項(xiàng)窗口中,選擇Enviroment,將Skybox Material選擇為我們剛剛創(chuàng)建的材質(zhì)(也可以直接拖拽)

? ? ? ? ?4. 回到MySkyBox的Inspector面板,我們來看看它都有些屬性:

? ? ? ? ? ? ? ? ?Sun: 表示太陽的樣子,選擇High Quality的話,太陽會帶光暈效果

? ? ? ? ? ? ? ? ? ? ? ? ?選擇Simple的話,太陽只是簡單顯示一個(gè)圓盤

? ? ? ? ? ? ? ? Sun Size: 太陽的大小,這個(gè)沒有太多必要細(xì)說,值越大場景中太陽看起來就越大
? ? ? ? ? ? ? ? ?Atomsphere Thickness:大氣層厚度,大氣層厚度越厚,它吸收的光線就越多

? ? ? ? ? ? ? ? ?Sky Tint:天空的色調(diào),比如我們調(diào)整它為藍(lán)色

? ? ? ? ? ? ? ? ?Ground:地平線下的區(qū)域顏色(地面),比如我們調(diào)整它為紅色

? ? ? ? ? ? ? ? ?Exposure:曝光度,調(diào)整天空的曝光度。我們可以簡單地用亮度來理解就行了。
