前言
不管是在Unity 還是Unreal裡面Lighting都是讓渲染更精美不可缺少的一塊,雖然我們已經在Unity掌握了大部分對於Lighting的技巧,但不同的引擎對於Lighting的用法當然也會有所不同,本篇就是跟著大家一起了解如何在Unreal裡面建立光源以及設定。
Light Object
雖然一個預設場景通常會建立出幾個基本的Light物件,但因為我們在Unreal裡面學習Lighting,所以一開始的時候我們可以試著把所有的 Light物件 刪除並試著自己建立Light物件才會更加理解在Unreal是如何使用的。
這時候我們需要在場景裡面新增幾個比較重要常用的光源設定。
Directional Light將模擬從無限遠的源頭處發出的光線。這意味著此光源投射出的陰影均為平行,因此適用於模擬太陽光。
Sky Light採集Level的遠處部分並將其作為光源應用於場景。這意味著,即使天空來自大氣層、天空盒頂部的雲層或者遠山, 天空的外觀及其光照/反射也會匹配。你還可以手動指定要使用的立方體貼圖。
Sky atmosphere天空大氣 組件是一種基於物理的天空和大氣渲染技術。它相當靈活,可以創造類似地球的大氣層,同時提供包括日出和日落的一天時間,還可以創造奇特的外星大氣層。它還提供空氣透視,從中可利用相關行星曲率來模擬從地面到天空再到外太空的過渡。
Sky Light
新增了SkyLight後一樣在右下方的Detail視窗裡面找到Mobility並將Movable打勾讓物件變成可動,接著將Real Time Capture打勾讓Sky Light的部分保持在Real time的狀態。
Directional Light
加入Directional Light後可以在Detail視窗找到Atmosphere and cloud的Atmoshaphere Sun Light並勾選起來,這時候就可以看到整個天空包含天上的雲都亮了起來。
這時候我們試著將 Directional Light上下轉向,可以發現根據光源的不同整個場景的白天黑夜隨之改變。
雖然我們現在可以看到陰影的變化,但是目前的陰影是不太自然的,這時候我們一樣在 Directional Light 的Detail找到Distance Field Shadows並打勾,就會發現有很大的改變。
可以從下圖看到在草地的陰影細節部分改變了很多。
Post Process
如果常使用Unity的朋友一定對於Post Process不陌生,而Unreal引擎也是有自己的一套Post Proscess,我們可以直接加入Post Prcoess並先在Detail的部分找到Post Process Vloume Settings並將Infinit Extent 打勾。
勾選以後我們可以看到Unreal的PostProcess呈現是一個方塊的形狀,這邊我依照在Unity的經驗進行Bloom、Exposure等等調整,可以看到進行調整後畫面看起來有更加精美了。
關於Unreal的Post Process細節我會再另外寫一篇跟大家分享。
Exponential Height Fog
Fog在Unity也是很重要的環境一環,而在Unreal裡面我們可以使用Exponential Height Fog來讓環境充滿Fog,讓場景的真實度看起來更高。
Exponential Height Fog指數高度霧 在地圖上較低位置處密度較大,而在較高位置處密度較小。其過渡十分平滑,隨著海拔升高,也不會出現明顯切換。指數高度霧提供兩個霧色,一個用於面朝主定向光源(如不存在,則為直上光源)的半球體,另一個用於相反方向的半球體。
剛加入以後可以發現目前的霧氣實在太重了,所以需要做些調整。
其實要解決這個問題的方法很簡單,我們可以在 Exponential Height Fog 的Detail找到Fog Inscattering Color,點選以後可以看到調整顏色的視窗,這邊我們將顏色調黑就可以讓霧氣變淡了。
但是單調整一個 Fog Inscattering Color而已,會發現遠處的霧氣還是相當的重,那我們就需要找到 Directional Inscattering Color 一樣調整顏色至黑色,可以發現遠處的霧氣已經變得自然許多。
最後我們依照自己的需求進行微調就可以看看成果了,不得不說Unreal的光源Render出來真的還蠻漂亮的。
小結
在戶外的光源目前就以這三個Light物件來製作,在Unreal裡面目前看起來就蠻夠用了,當然Lighting的部分應該也沒有這麼簡單,未來會再精進在Unreal的Lighting設定讓場景看起來更加精美。
參考資料:https://docs.unrealengine.com/zh-CN/BuildingWorlds/FogEffects/HeightFog/index.html