Unity中的Light燈光

weigang發表於2024-05-21

轉載自:

https://www.cnblogs.com/xiaoyulong/p/11549922.html

一、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 Multiplier為0,將環境反射強度設定為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
兩種模式:Gamma和Linear。Linear效果更好,同時也對效能消耗比較大。下面是兩種模式在不同光照強度下效果對比圖:
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 Distance(QualitySettings -> Shadows -> Shadowmask Mode ->Shadow Distance)引數的影響,當視野距離超過這個值時,不顯示影 子。
    Shadowmask:效果比Subtractive效果要好,缺點就是動態物體無法接受靜態物體已經烘焙好的陰影。如果我們想動態物體能夠和烘焙好的光影 資訊進行混合,我們可以將模式改為Distance Shadowmask,這樣就可以實現在一定視野範圍內進行混合,但是相對來說會損耗效能。Distance Shadowmask模式受Shadow Distance(QualitySettings -> 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:光照貼圖引數。質量設定。

相關文章