Unity3D灯光与渲染学习之(二):全局、烘焙以及混合光照
生活随笔
收集整理的這篇文章主要介紹了
Unity3D灯光与渲染学习之(二):全局、烘焙以及混合光照
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本篇博客主要對(duì)實(shí)時(shí)、烘焙和混合光照進(jìn)行介紹。傳送門(mén):Unity3D燈光與渲染學(xué)習(xí)之(一):天空盒、燈光以及色彩空間Unity3D燈光與渲染學(xué)習(xí)之(二):全局、烘焙以及混合光照Unity3D燈光與渲染學(xué)習(xí)之(三):探針使用、后處理與批處理
作為靜態(tài)物體,這么做是可以的,但是如果場(chǎng)景中新增了一個(gè)動(dòng)態(tài)物體,就應(yīng)該要使用混合型燈光了。
接下來(lái)考慮在混合光照下的燈光模式(只有在混合燈光情況下才有效),三種:
先從subtractive說(shuō)起,在這種模式下的光照對(duì)于動(dòng)態(tài)物體只顯示一個(gè)燈光陰影效果(下圖左立方體,右邊立方體為靜態(tài),有兩個(gè)陰影)。
第二個(gè)燈光模式ShaderMask,對(duì)于動(dòng)態(tài)和靜態(tài)物體能都能顯示完整的陰影效果。
,并且在Edit>Projection Setting>Quality之中,將Shadow Mask設(shè)置為Distance Shadowmask即可使物體受其他物體的陰影影響。效果如下。
當(dāng)然可以用更高級(jí)的辦法,動(dòng)態(tài)物體在與靜態(tài)物體陰影區(qū)域發(fā)生碰撞的時(shí)候,可以通過(guò)代碼動(dòng)態(tài)修改Shadow Mask,實(shí)現(xiàn)調(diào)整。通過(guò)簡(jiǎn)單的代碼實(shí)現(xiàn) void OnTriggerEnter(Collider other){if(QualitySettings.shadowmaskMode == ShadowmaskMode.Shadowmask){ QualitySettings.shadowmaskMode = ShadowmaskMode.DistanceShadowmask;}else{ QualitySettings.shadowmaskMode = ShadowmaskMode.Shadowmask;} }第三種Baked Indirect,只烘焙間接光,其余情況均為RealTime,是最高級(jí)的模式,但當(dāng)場(chǎng)景中距離大于Quality界面中的Shadow Distance時(shí),所有陰影都不予顯示。
4.全局和烘焙關(guān)照
全局光照,簡(jiǎn)稱GI,是一個(gè)用來(lái)模擬光的互動(dòng)和反彈等復(fù)雜行為的算法,要精確的仿真全局光照非常有挑戰(zhàn)性,付出的代價(jià)也高,正因?yàn)槿绱?#xff0c;現(xiàn)代游戲會(huì)先一定程度的預(yù)先處理這些計(jì)算,而非游戲執(zhí)行時(shí)實(shí)時(shí)運(yùn)算。沒(méi)有照明(左)、只有直接光源(中)、 有間接光源的全局光照(右)以烘焙光照為例,物體在經(jīng)過(guò)光照之后,還會(huì)對(duì)其它物體產(chǎn)生光照影響。當(dāng)烘焙全局光照打開(kāi)后(下圖左),暗的部分也會(huì)因?yàn)閯e的物體的反射而變亮。將場(chǎng)景中的物體設(shè)置為靜態(tài)(勾選Static),將燈光模式改為烘培(Baked)即可看到效果(下右圖)。?改變模式為Baked,當(dāng)烘焙完成后,燈光就可以刪除了,已經(jīng)將光照貼圖賦給了游戲物體,燈光的作用已經(jīng)消失了。作為靜態(tài)物體,這么做是可以的,但是如果場(chǎng)景中新增了一個(gè)動(dòng)態(tài)物體,就應(yīng)該要使用混合型燈光了。
5.混合光照模式(Mixed Lighting)
Unity里每盞燈光默認(rèn)的烘焙模式都是”Realtime”,這代表這些燈光仍然會(huì)照亮你的場(chǎng)景,Unity的realtime GI系統(tǒng)會(huì)處理間接光。但如果默認(rèn)的烘焙模式是”Baked”,那么這些燈光將會(huì)透過(guò)Unity的烘焙GI系統(tǒng)處理直接光源和間接光源,產(chǎn)生出來(lái)的光照貼圖一旦貼到場(chǎng)景上在執(zhí)行期間是不能改變的。選擇烘焙模式為”Mixed”的話,場(chǎng)景內(nèi)的靜態(tài)對(duì)象會(huì)被烘焙GI拿去做計(jì)算,然而,不像”Baked”模式,混合模式的燈光仍會(huì)繼續(xù)運(yùn)算即時(shí)光源到非靜態(tài)對(duì)象上,這對(duì)于你想把靜態(tài)環(huán)境烘成光照貼圖,但同時(shí)又希望同樣一盞燈能為會(huì)動(dòng)的角色計(jì)算陰影很有幫助。接下來(lái)考慮在混合光照下的燈光模式(只有在混合燈光情況下才有效),三種:
先從subtractive說(shuō)起,在這種模式下的光照對(duì)于動(dòng)態(tài)物體只顯示一個(gè)燈光陰影效果(下圖左立方體,右邊立方體為靜態(tài),有兩個(gè)陰影)。
第二個(gè)燈光模式ShaderMask,對(duì)于動(dòng)態(tài)和靜態(tài)物體能都能顯示完整的陰影效果。
,并且在Edit>Projection Setting>Quality之中,將Shadow Mask設(shè)置為Distance Shadowmask即可使物體受其他物體的陰影影響。效果如下。
當(dāng)然可以用更高級(jí)的辦法,動(dòng)態(tài)物體在與靜態(tài)物體陰影區(qū)域發(fā)生碰撞的時(shí)候,可以通過(guò)代碼動(dòng)態(tài)修改Shadow Mask,實(shí)現(xiàn)調(diào)整。通過(guò)簡(jiǎn)單的代碼實(shí)現(xiàn) void OnTriggerEnter(Collider other){if(QualitySettings.shadowmaskMode == ShadowmaskMode.Shadowmask){ QualitySettings.shadowmaskMode = ShadowmaskMode.DistanceShadowmask;}else{ QualitySettings.shadowmaskMode = ShadowmaskMode.Shadowmask;} }第三種Baked Indirect,只烘焙間接光,其余情況均為RealTime,是最高級(jí)的模式,但當(dāng)場(chǎng)景中距離大于Quality界面中的Shadow Distance時(shí),所有陰影都不予顯示。
6.烘焙光照的參數(shù)詳解
這部分主要介紹Lighting界面中的Lightmapping Setting,即下圖中的參數(shù)信息- Lightingmap:分為Enlighten和Progressive兩種,視頻中介紹是差距不大,不過(guò)Progressive的烘焙速度會(huì)快一些。
- Indirect Resolution:間接光照的精度,間接光即物體之間反射形成的光照。
- Lightmap Resolution:一個(gè)單位烘多少個(gè)像素點(diǎn),會(huì)影響燈光貼圖的大小。例如默認(rèn)40時(shí)貼圖大小是8M,如果改成20,僅為2M.值越小,烘焙速度越快,但烘焙效果也會(huì)越低。
- Lightingmap Padding:最終生成的uv信息圖間距,一般不需要修改,只有在光照貼圖的陰影部分出現(xiàn)問(wèn)題時(shí)才需要進(jìn)行調(diào)整。
- Lightmap Size:光照貼圖的大小,如果改成256,則Global Map中會(huì)出現(xiàn)多張光照貼圖。
- Ambient Occlusion:環(huán)境光遮蔽,開(kāi)啟時(shí)場(chǎng)景中的邊角處會(huì)更貼近實(shí)際。
- Find Gather:即物體之間的光線影響。靠近紅色墻壁的白球會(huì)顯示出一部分紅色,使場(chǎng)景更加真實(shí),一般在場(chǎng)景制作完畢后勾選。
- Indirect Intensity:間接光強(qiáng)度
- Albedo Boost:控制光線對(duì)物體材質(zhì)的影響,一般要與物體的Material結(jié)合使用。
總結(jié)
以上是生活随笔為你收集整理的Unity3D灯光与渲染学习之(二):全局、烘焙以及混合光照的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Podfile、Podfile.lock
- 下一篇: Qt5.14.2安装、配置及测试(Win