Unity3D 中的燈光與渲染


最近仔細研究了Unity3D中的燈光以及渲染,有了全新的認識,在這里整理記錄下來。博主所使用的是Unity3D 2017.3.1f1這個版本。

一、Unity3D中的燈光

  1. Directional Light:平行光,用來模擬太陽發射的光。

  2. Point Light:點光源,用於模擬場景中的燈和其他本地光源。

  3. Spot Light:聚光燈,通常用於人造光源,如手電筒,汽車前燈和探照燈。

  4. Area Light:區域光,只能用於烘焙中。

  5. Reflection Group:反射探針,用於准確反射周圍環境。

  6. Light Probe Group:燈光探針組,用於記錄場景中光照信息,實時影響物體。

  7. Environment Lighting:環境光。場景的整體外觀和亮度的主要依靠於環境光,環境光是從各個方面來影響對象的。

  8. Emissive Materials:自發光材質,類似於區域光,只能使用在靜態物體中,並且只能照明靜態物。

二、Unity3D中虛擬環境的組成

Unity3D中虛擬環境由天空盒、環境光、環境反射以及場景中的光源共同構成。我們按照下面的步驟,可以將場景還原到最原始的狀態:

  1、關閉場景中的所有燈光。

  2、進入Window->Lighting->Setting->Scene窗口。

  3、設置Environment->Skybox Material參數為None,取消天空盒。

  4、設置Environment->Environment Lighting->Ambient Color為黑色,將環境光設置為黑色。這里需要注意的是,當我們將天空盒取消后,環境光的來源將會變為顏色,如果我們設置了天空盒,並將環境光的來源設置為天空盒(Environment -> Environment Lighting -> Source -> Skybox),Ambient Color參數將會變為Intensity Multiplier(環境光強度),如果我們將強度調為0,會發現場景明顯變暗。

  5、設置Environment->Environment Reflections->Intensity Multiplier0,將環境反射強度設置為0。環境反射也受來源的影響,當天空盒為空時,反射來源也為空,這時我們調這個參數其實是看不到效果的。如果我們設置一個天空盒,將環境光關閉,打開場景中的光源,我們在調節這個參數,會發現場景中的模型,接受不到光照的地方將會顯示純黑色。

 

按照上面的步驟做完,我們將會得到一個純黑的場景,什么也看不到,如果我們反向操作,場景又會慢慢亮起來,這也就證明了Unity3D中虛擬環境由天空盒、環境光、環境反射以及場景中的光源共同構成這一結論。

三、Unity3D中打光與渲染必備知識

  1、Unity3D中的光分為直接光照和間接光照,間接光照就是反射光。 

  2、Unity3D中光的渲染模式有三種:

    ① Realtime:實時渲染。每幀都會計算光照,實時光照是不會反射的,所以它的光影顯得單調。

    ② Mixed:混合渲染。提供烘焙和實時功能的混合模式,例如對燈光的間接照明進行烘焙,同時對直接照明進行實時計算。

    ③ Baked:烘焙渲染。過烘培光照貼圖的方式獲得很好的光照效果,無法實時的改變光照

  3、Unity3D中的陰影類型:

    ① No Shadows:沒有陰影。無性能損耗。

    ② Hard Shadows:硬陰影。陰影邊緣清晰,效果一般,性能損耗一般。

    ③ Soft Shadow:軟陰影。陰影邊緣柔和,有過渡效果,效果最好,性能損耗最嚴重。

  4、Unity3D中分全局設置和局部設置。例如我們對場景中某一盞燈光的參數進行修改,只會影響這一盞燈,如果對全局參數進行修改,將會影響所有的燈光效果。

  5、Unity3D中的物體分為動態物體和靜態物體。烘焙技術、自發光材質、預先全局光照技術等只對靜態物體生效。

四、效果優化常用全局參數介紹

1、顏色空間(Color Space

參數設置位置:Edit -> Project Setting -> Player -> Player Settings -> Other Settings -> Rendering -> Color Space

兩種模式:GammaLinearLinear效果更好,同時也對性能消耗比較大。下面是兩種模式在不同光照強度下效果對比圖:

 

2、最終聚集(Final Gather)

參數設置位置:Window -> Lighting -> Setting -> Scene -> Lightmapping Settings -> Final Gather

作用:一種模擬全局照明的計算技術。反向搜集物體表面特定點的受光照強度來模擬現實照明效果,來使場景更貼近於自然。由於該計算技術計算量很大,建議在場景最后出效果時勾選,並進行烘焙,平時不要開啟。

五、沒有陰影的原因

1、光源沒有開陰影。

2、全局設置中關閉了陰影。(Edit -> Project Setting -> Quality -> QualitySettings -> Shadows -> Shadows

 

3、模型。Mesh Renderer組件中的Cast Shadows屬性為關。

 

4、Shader問題,Shader本身不接受陰影。

六、燈光常用參數介紹

Type:燈光類型

Color:燈光顏色

Mode:渲染模式

  Realtime:實時

  Mixed:混合

  Baked:烘焙

Intensity:燈光強度

Indirect Multiplier:間接照明強度

Shadow Type:陰影類型。No Shadows(無陰影)、Hard Shadows(硬陰影)、Soft Shadows(軟陰影)

  Baked Shadow Angle:這個設置用來改變間接光的亮度。間接光是指從一個物體反射到另一個物體的光線。Indirect Multiplier定義了GI系統計算的反射光亮度。Indirect Multiplier小於1時,光線每次反射后會變暗。大於1時光線每次反射后會變 亮。 這個功能可以用來調亮陰影中的表面(比如洞穴內部)以清晰地觀察細節。或者在使用Realtime Global Illumination時,想讓某個real-time光源只有直接光時,可以將Indirect Multiplier設置為0。

  Realtime Shadows:實時陰影

    Strength:陰影濃度,即陰影的黑暗程度。

    Resolution:陰影分辨率,即質量。

    Bias:通過滾動條控制陰影被推離光線的距離,范圍為0到2,默認值為0.5。用來避免人工物體自陰影的錯誤。

    Normal Bias:通過滾動條控制投射陰影的表面相對於周圍正常表面的下沉效果,范圍為0到3,默認值為0.4。用來避免人工物體自陰影的錯誤。

    Near Plane:通過滾動條控制渲染陰影時的最近裁切面。范圍為0.1到10,默認值時0.2。這個值會從0.1 units和光線的Range的1%中取最小值。

Cookie:為投射的陰影指定一個紋理(替換真實的灰色陰影)。比如制造剪影,或者照明圖案。

Cookie Size:陰影紋理尺寸

Draw Halo:繪制光暈

Flare:光斑

Render Mode:渲染優先級。這會影響光照的保真度和渲染性能。

  Auto:渲染方式在運行時根據周圍光照的亮度和當前Quality Settings來決定。

  Important:光照總是按照逐像素的質量渲染。一般只對最醒目的視覺效果使用Important模式,比如玩家車輛的車燈。

  Not Important:光照總是以更快的頂點/角色光照模式渲染。

Culling Mask:光照剔除

 

各種燈光的參數都大致一致,我這里就不一一介紹了,就以平行光為例介紹。

 

 

七、Lighting窗口參數介紹

Unity3D 中渲染效果肯定是離不開 Lighting 窗口的參數設置的。Lighting 窗口的參數看着很多,其實只要理解了,也沒多少。而且Realtime、Mixed、Baked這三種渲染模式是分別與 Lighting 窗口中的 Realtime Lighting、Mixed Lighting、Lightmapping Settings 三大塊一一對應的,只要理解了這個,整個 Lighting 窗口的參數就好理解很多了。

1、Environment(環境設置)

  Skybox Material:天空盒

  Sun Source:當使用程序天空盒時,使用它來指定帶有方向光的游戲對象,如果設置為none,場景中最亮的方向光則被指定為太陽光。

  Environment Lighting:環境光

    Source:來源

      Skybox:天空盒

      Gradient:梯度

      Color:顏色

    Intensity Multipl:環境光強度

    Ambient Mode:環境渲染模式

      Realtime:實時渲染

      Baked:烘焙

  Environment Reflections:環境反射

    Source:來源

    Resolution:反射成像的分辨率

    Compression:壓縮

    Intensity Multipl:反射強度

    Bounces:彈跳;反射

2、Realtime Lighting(實時燈光)

  Realtime Global Illumination:實時全局光照

3、Mixed Lighting(混合燈光)

  Baked Global Illumination:烘焙全局光照

  Lighting Mode:只在光源模式為 Mixed 時生效。

    Baked Indirect:只烘焙間接光。使用此模式,光影效果最好,並且靜態物體和動態物體的光影可以混合,但是很消耗性能。該模式受Shadow DistanceQualitySettings -> Shadows -> Shadowmask Mode ->Shadow Distance)參數的影響,當視野距離超過這個值時,不顯示影 子。

    Shadowmask:效果比Subtractive效果要好,缺點就是動態物體無法接受靜態物體已經烘焙好的陰影。如果我們想動態物體能夠和烘焙好的光影 信息進行混合,我們可以將模式改為Distance Shadowmask,這樣就可以實現在一定視野范圍內進行混合,但是相對來說會損耗性能。Distance Shadowmask模式受Shadow DistanceQualitySettings -> Shadows -> Shadowmask Mode ->Shadow Distance)參數的影響,這個距離 指的是視野距離,即物體距離相機的距離。Distance Shadowmask模式是在質量設置里面進行設置的(QualitySettings -> Shadows -> Shadowmask Mode -> Distance Shadowmask)。

    Subtractive:效果最差,性能最好。只允許有一個主光源,當動態物體,被兩個光源照射時,只會產生一個陰影,靜態物體依然會有兩個陰影。

4.Lightmapping Settings

  Lightmapper:光線映射器。

  Indirect Resolution:間接光質量。

  Lightmap Resolution:光照貼圖質量。

  Lightmap Padding:光照貼圖間距。防止光照信息貼錯位置。

  Lightmap Size:光照貼圖尺寸。

  Compress Lightmaps:是否壓縮。

  Ambient Occlusion:環境剔除。可以優化牆角等地方光影效果。環境光遮蔽是一種光照模型,它會計算像素亮度與場景中附近物體之間的關 系。它將確定何時阻止特定像素接收附近的幾何光的環境光,這樣使其亮度便會降低。當兩個均勻明亮的物體相互靠近時,它會產生基本的 變光效果。

    MaxDistance:設置一個值控制射線的射程,以確定對象是否被遮擋。

    Indirect Contribution:控制間接光在lightmap的強度。

    DirectContribution:控制直接光在lightmap的強度。

  Final Gather:最終聚焦。

    RayCount每個最終聚焦的點發出的射線的數目。默認是256。

    Denoising:是否在最后的聚焦輸出應用去噪過濾。

  Directional Mode:是否生成光照方向貼圖來輔助計算。

  IndirectIntensity:間接光強度。

  Albedo Boost:反照率增強。可以用來處理曝光現象。將模型材質的Albedo貼圖顏色調暗,將反照率加大。

  Lightmap Parameters:光照貼圖參數。質量設置。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM