Nicholas談UE4高級渲染:動態光照迭代快

據報道/6月5日,2015年第三期據開放日‧虛幻引擎專場活動在上海正式舉行,此次活動由Epic Games與據聯合主辦。

如何用好UE4引擎,發揮其強大的畫面表現力,一直是遊戲開發者們的困惑和需求。本次活動上,Epic Games引擎開發經理Nicholas William Penwarden分享瞭UE4引擎的高級渲染功能是如何使用的。

Nicholas William Penwarden

Nicholas介紹瞭UE4為瞭創建高真實性的物件,對全動態的光的渲染效果和後處理效果以及景觀、植被過程都提供瞭優秀的工具支持。並舉例介紹瞭這一制作過程,“我們通過上百張實地場景照片的拍攝,輸入電腦制作高清模型,並去除原有光影效果。然後根據UE4提供的動態光照數據,來制作各種逼真的物件”。

以下是演講實錄:

Nicholas William Penwarden:大傢好!很高興今天來到這裡,和大傢分享Unreal渲染部分的功能。我是Unreal 4的引擎開發經理,也是渲染Team的老大。



上百張、多角度的圖片轉化為高精度模型

UE4

這個Demo剛才Ray Davis已經展示過,我們來看一下它的技術細節。這是一個256平方公裡的開放大世界,伴隨很多真實照片級的物件以及全動態的光影。還有一些非常高精度的植被和石頭之類的效果。

UE4

當我們想要做這樣一個Demo,挑選瞭蘇格蘭的Scotland。因為我們想要做一個看起來真實的室外場景,為瞭實現這個效果,最好的辦法就是去到實地采集數據。

UE4

然後我們使用瞭一個工具從很多不同角度拍攝,每張照片都會有一些重疊的部分,一般是30%。然後通過軟件把這些照片轉化為高精度的模型和貼圖。

UE4

這裡是我們去實景采集的時候用的一些設備。我們先拍一個參考圖,比如說一個比較大的巖石,先拍一張整體的照片來做參考,然後看看最終還原做出來的效果是否與這個一樣。

這是我們用來參考的一些物件,比如說有一個顏色盤,兩個金屬球。顏色盤是最終參考顏色值的,兩個金屬球是用來參考光的強度、方向以及鏡面反射光的效果。

UE4

這裡是從照片開始掃描並重組出模型的過程,大傢可以看到每一塊石頭都是非常高精度,有100—2000萬面,貼圖精度非常高,都是16K的貼圖。

在模型中去除原有的光影效果

UE4

這張照片因為是拍攝出來的,我們可以看到這上面的光影效果。太陽光從上照下來的,上面比較亮,下面是陰影面,然後有間接光照反映到下面部分。因為要在引擎中實時渲染,所以要把這些光影效果從模型上抹除掉。

就像剛看到的一樣,我們會在3D MAX中通過兩個金屬球重建當時的角度和環境,並對我們做出的高模進行一個模擬,計算出光影貼圖,在原始照片中減去它,獲得一張不帶光影的。

UE4

因為UE4的渲染器是基於物理的渲染器,為瞭表現真實效果,要做一些額外的貼圖。比如說粗糙度貼圖和鏡面度反向貼圖。對於不同材質的參數,我們已經積累一些經驗,大傢可以參考。

刪除掉光影信息以後,將這些重組出來的模型放入到引擎中,因為我們的引擎有很強大的工具,實現瞭旋轉瀏覽物件視圖的功能,大傢可以看到調整光源效果、換模型和換背景對它產生的影響。

再舉例說下我們重建出來的樹和巖石的效果。剛剛那個背景是Epic本部辦公室的外景。大傢可以看到通過這個過程做出來的模型有些細節非常令人吃驚。除瞭模型外我們也拍瞭一些地面的貼圖,用來展示這些地表。

動態光照適合處理大場景 迭代速度快

接下來我們看看動態的光影。為什麼挑瞭一個全動態的光影效果?一個是需要渲染一個巨大的室外場景,如果是靜態的話,Light Map的數據會非常大,內存太小受不瞭。

並且我們希望加入日月變換的系統,如果采用靜態光照,Back的時間會非常長。一旦美術調整一些東西重新back一次非常麻煩,所以如果是純動態的光影效果,迭代速度會非常快,這也是一個很大的優勢。

全動態的光照主要分為三個部分,一個是直接被太陽光照亮的表面,一個是被天光照亮的表面,還有一個是不受直接光照,但是被地面或者是其他的反射光所照耀的,我們認為是間接光照或全局光照的地方。

UE4

一開始,我們想用的是Cascaded Shadow Maps,這是很多主流引擎都會用到的技術,UE4也支持。但這個技術還是有不少缺陷,比如說在渲染大量內容的時候效率比較低。我們有過最遠的計算距離,例如超過10公裡以外的陰影就不會計算,就像大傢看到這張圖片後面的那些效果沒有投影所以看起來比較假,缺乏層次感。

UE4

因此我們開發瞭一個基於光線中常量的投影方式,這個方式在渲染巨大量場景的時候,會比CSM的方式高效3倍,並且在很遠的距離也能保持非常好的效果。我們每一個物件都有自己的常量,裡面儲存的數據是每一個點到離它最近平面的距離,在平面內就是正值,平面外就是負值。UE4

這是兩個不同的視圖,左邊的就是普通的視圖,右邊的是我們網格物品的常量視圖。因為常量儲存瞭某一個點到平面的最近距離,所以我們做光線追蹤的時候,可以直接跳過一段距離,因為我們知道這段距離沒有東西可查,這樣非常高效,可以算出某個點是否在陰影之中。

除此之外,我們還得到瞭最近距離的數據,這樣在我們可以實現很近時非常清晰的投影,在比較遠的時候還能慢慢地淡出的效果。

剛剛我們講瞭太陽光,接下來講天光,我們有一個高度范圍的Cubemap,這個東西是預先生成好的,用來存儲不同粗糙度的貼圖。

UE4

這裡兩張圖片,一個是平面空間的遮罩做出來的,比較差。另外的是基於常量的環境光遮罩,這個是視覺空間,可以在任意一個點做幾個錐形的判斷,可以看看它是否在投影當中,然後很快地生成出比較好的陰影。

UE4

最後我們來看全局光照,就是太陽光反射出來的光亮,左邊是直接光照的效果,右邊是全局光照的效果。這裡說一下全局光照是有限制的,是基於高度場的,而且全局光照隻基於地面反射出來的光,如果光打在地面或者是草坪上,反射光的信息會反射到巖石的表面,但是光打到巖石上想讓它反射到樹上,這個效果我們現在還沒有實現。這個其實是我們對整個景觀組件創建瞭一個數據庫來存儲太陽光照的信息,並根據之前的常量,來計算出反射光的信息。

UE4

接下來我們來看部分渲染和後處理的效果。這是雙面材質的模型,一般用來處理光線通過很薄表面的效果,比如說葉子和風箏的面。這是一個景深處理效果,在處理真實物理照相的參數時,比如說光圈、焦距、焦程等可以調整效果。UE4

現在高級的景深效果可以很柔和地實現從近焦到遠焦的過渡,還有一個效果是運動模糊。高級的運動模糊的效果已經支持非常大的運動模糊的距離,基本上速度快的點可以橫跨屏幕,在Blur的上面做得非常柔和,沒有什麼硬變。

這是我們的景觀,整個大小是16×16km。因為我們的全效編輯比較強大,所以我們的美術做出瞭柔和非常漂亮的權重圖。

UE4

這裡是一個植被系統的細節展示,比如說從很近到慢慢漸遠,從高遠到低遠LOD模式層次的切換。這裡還有一個比較好的小功能是LOD到某一些層,雖然隻是一個方形的面片,但是我們通過像素深度位移這樣的參數,可以做出比較好的效果。

模擬樹木和植被的生長

還有一個功能就是模擬,因為我們的地圖場景非常大,是16公裡×16公裡,如果讓美術人工去刷地表上的東西是不可能的,我們於是做瞭一個工具讓它自己迭代,通過樹木和植被自己生長的方式。

這是一個最終的結果,我們看到通過我們的工具生成一個結果,美術還可以做簡單的調整,這個東西非常高效,在節約時間的同時,美術也可以自己手動調整局部一些效果。UE4

然後另外非常重要的功能是草坪置換,我們通過材質編輯器,在地表材質上刷瞭不同植被種類的權重,通過Camer的遠近來判斷,遠的是地表貼圖,而靠近會動態、實時地在地表材質,並根據這些參數生成草的模型。

以下為現場問答:

怎樣調整光線,把場景的光照做到比較好的效果?

答:有很多要做平衡和調整的地方,細節的參數有很多在編輯器是可以調整的。

怎樣創造出那麼大真實畫面場景?如何采景和抓那麼大的地形?

答:這個地形是通過蘇格蘭的那個高度圖生成出來,某個細節、某塊是美術自己去做的。

一共拍攝瞭不多少同的石頭和草木?

答:估計有上百種,美術會縮放、調整然後實例。

Comments are closed.