1. 程式人生 > >Unity場景渲染中那些意想不到的細節(1)

Unity場景渲染中那些意想不到的細節(1)

在閱讀到此時我們首先假設讀者已經掌握了基本的燈光搭建,如果對此不是很自信的朋友,建議認真閱讀Unity的官方手冊:

https://docs.unity3d.com/Manual/LightingOverview.html

請注意不要使用某些第三方手冊,而是使用官方提供給我們的原版手冊,在確保自己已經掌握了手冊中關於lighting的大部分知識以後,我們就可以開始本教程的學習了。

首先將Playersetting中的Color space設定為linear(注意有些手機是不支援的),然後將攝像機的render path設定為deferred(同樣有些手機不支援)。搭建一個簡單的場景並新增光照(中間的白色光球代表點光源,不計入光照計算):


這裡沒有任何烘焙,四面被照亮了,但是由於只有直接光照效果,陰影看起來非常假,而且兩個自發光物體都看起來與周圍格格不入,然後嘗試一下烘焙,烘焙引數如下:


在烘焙結束後我們可以看到的效果是:


這裡陰影和牆角的環境光遮蔽看起來要真實的許多了,而且兩個自發光物體也影響到了周圍,然而卻總是感覺缺點什麼,是的,在大自然中所有的不發光的物體都是將光反射到我們眼鏡中的,顯然在遊戲裡無法使用高消耗的光線追蹤來顯示反射,那麼我們就需要使用一些操作來模擬反射,首先,Unity3D已經提供了Reflection Probe,我們還可以在github上下載到Post Processing v2 或者加QQ群146025605下載也可以,通過設定Reflection Probe與後處理的Screen Space Reflection可以提供一個看起來比較真實的光照場景,首先我們建立一個反射球,使六個面與牆面貼合併且設定為Box Projection,對於室內環境反射,我們需要選擇Box Projection以達到四壁反射的效果:


反射的效果如下所示:


我們看到Reflection Probe正確的反射了牆壁與身後的天空色,然而,兩個突出的自發光物體卻沒有被正確反射,這是因為Reflection Probe是使用6張貼圖進行模擬的,無法表現立體效果,只能表現平面效果,所以我們這裡需要加入Post Processing v2指令碼,我們這裡首先將攝像機設定為一個單獨的層(這裡暫且設定為31層並命名為camera),然後掛載指令碼:


然後新增一個profile,並且開啟profile的設定:


然後新增Screen space reflection effect,並且進行設定,設定非常簡單,可以通過調整觀看效果很輕鬆的看出設定的作用,這裡就不贅述了:


最後出來的效果:


這下表現出來的效果就非常真實了,牆壁上的反射效果也體現出來了,通過使用諸如此類的簡單操作,就可以大大提高場景的自然程度與真實程度,Unity3D作為一款業界領先的3A級引擎,在處理光照方面是可以做到遊刃有餘的。