Unity实时全局光照和烘焙全局光照 Unity2019
上一篇我們了解了,直接光照、間接光照和全局光照,也知道全局光照會帶來的計算量的問題。這一篇我們就要來看看Unity提供的解決方法。
?
Unity的全局光照模式
我們可以首選打開Uinty的照明設置面板,Window->rendering->lighting setting,這個面板是Unity全局照明(GI)功能的主要控制面板。通過Lighting窗口,你可以調整GI進程中的各個方面,根據需要來自定義場景或優化質量,性能和存儲空間。 這個窗口還包括環境光,霧效、光暈等設置。這里我們先只關注紅色框內的部分。
Unity提供了兩種全局光照模式,實時全局光照和烘焙全局光照。看到這兒的小伙伴可能要罵人了,不是說計算量大,不能實時計算的嗎?其實這里的實時只是部分實時,后面會詳細講到。
?
物體的動靜和light組件的模式
在講兩種全局光照模式之間,我們先講一下物體的動靜和light組件的模式,這二者是和光照模式相互配合的。
在Unity中,物體是可以區分靜態和動態的,你需要明確指出哪些物體是靜止的,并且在游戲中永遠不會移動、旋轉和縮放。
注意:燈光也是要區分動態和靜態的,因為燈光在Unity中可能會發生移動,旋轉等
?
混合光照——烘焙全局光照(Baked?Gloabl lllumination)
控制“混合”和“烘焙”光照是否使用烘焙全局照明。如果啟用,“混合”光照將使用指定的“照明模式”進行烘焙,“烘焙”光照將完全烘焙,且在運行時無法調整。
1、這里說的“混合”和“烘焙”光照就是上面說的light組件的mixed和baked模式
2、如果light組件是baked模式,則該組件產生的直接光照、間接光照和陰影都烘焙成全局光照貼圖,運行時是無法調整的。這就要求光照要是靜態的,光照下的物體也要是靜態的。
我們烘焙之后,把場景中的燈光關掉,發現場景中的光照信息都還是在的
3、如果light組件是“混合”模式,將使用指定的“照明模式”進行烘焙。這里提到了照明模式,我們將對照明模式做解釋
?
照明模式lighting mode
Unity提供了三種照明模式,對三種模式的解釋
我們將場景中的cubeA立方體改動動態物體,其他仍然保持靜態,等華燈落下,我們來看看它們的正面目
1、subtractive 減性
混合燈光為靜態物體提供烘焙直接照明和間接照明。動態對象接受實時直接光照,并使用場景中的主方向光在靜態對象上投射陰影
- 關閉燈光,靜態物體的燈光沒有變化,說明靜態物體的直接照明和間接照明都是烘焙成貼圖了
- 關閉燈光,cubeA全黑的,說明動態物體的直接光照是實時的,沒有間接光照
2、ShadowMask
混合燈光提供實時直接照明。間接照明會被烘焙到光照貼圖和光照探測器中。會為烘焙陰影生產Shadowmasks和光照探測器遮擋。運行時使用的“Shadowmask模式”可以在“質量設置”面板中設置
- 關閉燈光,靜態物體的的直接光照沒有了,說明靜態物體的直接照明是實時的,間接照明是烘焙的
- 關閉燈光,cubeA全黑的,說明動態物體的直接光照是實時的,沒有間接光照
3、baked indirect 間接烘焙
混合燈光提供實時直接照明,而間接照明則會被烘焙到光照貼圖和光照探測器中。
- 關閉燈光,靜態物體的的直接光照沒有了,說明靜態物體的直接照明是實時的,間接照明是烘焙的
- 關閉燈光,cubeA全黑的,說明動態物體的直接光照是實時的,沒有間接光照(這和ShadowMask是一致的)
baked indirect最高配的光照模式,同時也最耗性能
?
三種照明模式總結:
三種模式有一個共同點,對于靜態物體的間接光照,一定都是烘焙的,這就導致
1、如果光源改變位置或方向的話,靜態物體的間接光照是不變的
2、對于動態物體壓根不支持間接光照
3、在shadowMask和baked indirect模式下,無論光源變化,至少靜態和動態物體的直接光照一直都是正確的
?
實時全局光照(Realtime Gloabl lllumination)
所謂的實時并非真的完全實時的,準確的說應該是預計算Precomputed。
啟動實時全局光照的時候,Unity僅預先計算表面到表面的信息:物體間光線可能會經過的路徑,會預先計算好了反射以及二次反射的一些條件,并把這些計算好的數據存了起來,你要計算場景中的光和影的時候,實時全局光照會把數據拿出一部分來去運用到你的計算,所以我們看到實時全局光照也是有貼圖的。
下面我們看下實時全局光照的烘焙特性,實時全局光照只對“實時”的光照組件有效
-
關閉燈光,漆黑一片。說明靜態物體的直接照明是實時的,間接照明也是實時的
- 將scene的繪制模式切換到Indirect模式,發現CubeA消失了,說明動態物體沒有間接光照
- 燈光位置變化后,靜態物體的直接光照和間接照明都發生了變化
?
?
兩種全局光照總結:
1、實時全局光照和烘焙全局光照下,都不支持動態物體的間接光照
2、如果燈光改變,需要使用實時全局光照
3、混合光照和實時光照是可以同時使用的
兩種模式都勾選上 spot是realtime模式,point是mixed模式?
?
燈光探針
由于實時全局光照和烘焙全局光照只能作用于static的物體,所以導致運動的物體和場景中的光線無法融合在一起,顯得不真實。
而Light Probes組件可以通過Probe收集光影信息,然后對運動物體附近的幾個probe進行差值運算,最后將光照作用于物體上。
?
其他:
1、Unity2019已經提示實時全局光照(已棄用)
Enlighten即將棄用。請確保您的項目在棄用日期之后不再需要Enlighten支持
Unity官方有解釋,由于Geomerics公司停止推出產品級的Enlighten,因此Unity必須移除
2023年之前都是可以用的
2、3D軟件和Unity的烘焙思路差異
烘焙既可以在具有烘焙功能的3D建模軟件中來完成,也可以在Unity3d中來烘焙
當然,在Unity3d中烘焙兼容性更好。Unity3d的烘焙是美工的一個環節,關系到Unity作品的顏值和賣相
3、Unity3d的最終作品是供受眾對3D場景進行實時操作的,就像其他3D軟件場景編輯狀態的操作,而一般的3D軟件最終作品是將場景渲染成圖片或圖片序列呈現給受眾的,兩者的最終作品有本質的區別,簡單地說,前者呈現給受眾的是3D場景,后者呈現給受眾的是圖片或圖片序列(動畫)。盡管如此,兩者都必須有較強的立體感和較好的光影視覺效果,否則是不被受眾所接受的。
?
遺留問題:
預計算的實時GI模型?
?
燈光設置成mixed,就能同時滿足動態和靜態物體的需求
注意:環境光沒有mixed模式
?
參考:
unity3d 為什么要烘焙/unity3d 烘焙作用是為了什么【2020】
寫給美術看的Unity全局光照詳解(參數篇)
總結
以上是生活随笔為你收集整理的Unity实时全局光照和烘焙全局光照 Unity2019的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DB2错误码sqlcode对应表
- 下一篇: 刷重庆高校网课的方法