標籤:

如何在影視渲染中使用PBR流程

圖片來源:神秘海域4遊戲截圖,PBR流程應用典範

在最近兩年,遊戲美術行業颳起了一股猛烈的PBR熱潮,其熱度之強不亞於當年的「次時代」。對於幾乎重新定義了遊戲美術的PBR流程來說,很多朋友有非常多的疑惑。比如說,為什麼PBR的效果為什麼看起來這麼好;從事影視行業,是否需要學習和使用PBR流程;如果需要,那麼我們又要怎麼用?

本文將從影視從業者的角度,非常細緻專業地地討論這幾個問題,讓大家明白這一切的來龍去脈。(建議在理解能量守恆,菲尼爾反射,所有物體都具有反射[4],所有反射都是菲尼爾反射[5]的基礎上閱讀本文)

如何在影視渲染中使用PBR流程(原文轉發300錄視頻教程) 微博原文轉發 會發布視頻

怎麼用影視的邏輯理解PBR?

PBR是physically based rendering的縮寫,翻譯過來是基於物理的渲染。然而這只是一個名字,只能說是一定程度上接近物理,離真正的物理還是有差距。不過PBR流程已經可以非常優秀地描述日常生活中我們遇到的大多數材質了。

對於從事影視工作的很多朋友來說,理解PBR材質的屬性有一定的困難,因為使用的辭彙跟我們用的材質球上的有些不一樣。PBR使用的屬性主要是這四個——diffuse、roughness、metallic、normal(這裡主要討論的是最流行的metal-rough模型,而不是specular-glossiness模型或者其他),其中diffuse、roughness、normal都和影視行業中使用一致,分別指代材質的漫反射顏色、反射模糊粗糙程度、以及法線。

而,最難理解,也是差異的關鍵,就在這個metallic屬性上。

Metallic翻譯過來是金屬度,按照一些文檔的說法[1],這是個很簡單的概念,就是指材質是否是金屬。這個數值原則上只接受兩個數值——或者1。Metallic為的時候,這個材質就不是金屬,就是所謂的電介質材質(dielectric);Metallic為1的時候,那麼這個材質就是金屬材質。(除了金屬以外的幾乎一切材質都是電介質)

然而,這只是一種很感性的說法。對於已經有完備知識體系的渲染藝術家來說,這個參數是不可理喻的,幾乎找不到任何既有的經驗與之對應。用影視從業者可以聽懂的語言跟大家說的話,實際上這個參數真正控制的東西是F0,也就是菲尼爾反射中,與攝像機視線垂直的面的反射率。之所以要叫F0,是因為攝像機視線與這個區域面法線的夾角為0度。

圖片來源:allegorithmic官方幫助文檔,VOLUME 1: THE THEORY OF PHYSICALLY BASED RENDERING [2]

當metallic值為0的時候,F0的值是0.04;而當metalness值位1的時候,F0的值是1;metallic是0-1的中間值的時候,F0也會在0.04和1之間進行對應的插值,估計是線性差值。在這個過程中F90不變,永遠恆定為1(也就是圖中圈出的邊緣區域,標記為100%)。

F0這個屬性,說起來好像我們平時也沒用過啊?實際上並不是,在arnold渲染器的默認材質aistandard上,有一個叫做Reflectance at Normal的屬性,從字面意思來說,是法線方向的反射率;這裡所謂的法線方向,就是前文提到過的攝像機視線與面法線的夾角為0度時的法線方向;那麼這個屬性,實際上就是F0屬性。

這樣看的話,PBR流程里輸出的貼圖,似乎和我們平時使用的渲染器,都可以一一對應上,那麼,從道理上來講,我們也可以使用PBR流程的貼圖啦。

如何在我們熟知的渲染器中使用PBR貼圖

使用的方法本身也並不很複雜。不過要分成兩種情況來討論。因為從事影視工作的朋友平時用的渲染器對於反射的處理方式有所不同,所以要使用不同的方案來對接。在這裡,我就例舉兩個代表性的渲染器arnold和vray。

1)在arnold中使用PBR貼圖

首先,我們要導出PBR的貼圖供arnold渲染器使用,在這裡,我使用的貼圖軟體是substance painter;由於它提供了多樣而靈活的導出方案,可以加快工作流程,所以這裡選擇了它。

導出的時候,直接就有arnold的貼圖預製可供使用。

其中,diffuse貼圖連接diffuse color通道,色彩空間為sRGB。

Specular貼圖連接specular color通道,色彩空間為sRGB。

Roughness貼圖連接specular roughness通道,色彩空間為linear。

F0貼圖連接Reflectance at Normal通道,色彩空間為linear。(這裡要勾選fresnel選項)

Normal貼圖連接Bump mapping通道,色彩空間為linear。bump 2d node設置為tangent space normals。

在這個過程中specular的weight恆定為1 。

別的貼圖的使用本篇文章暫不討論。

在貼圖都連接並且設置正確,渲染器的色彩空間也設置正確的情況下,通過arnold渲染出來的結果,會和substance painter中截圖的效果非常接近。

Substance painter中截圖的效果

Arnold渲染出的效果

當然,由於substance painter這種軟體的渲染方式有很多近似計算方式,比如說反射效果是通過將環境球的圖片模糊之後映射到模型上的方式來快速實現的,而並不是使用真實的光線追蹤演算法,所以最終的視覺效果會和渲染器渲染的有所出入。

不過,這種差異完全在接受範圍之內。並且可以通過預覽時使用iray這種GPU渲染器來彌補。

2)在vray中使用PBR貼圖

同樣,首先從substance painter中使用vray的預製,導出一套貼圖。

大部分內容都差不多,只不過reflection取代了specular,這兩個貼圖都是用來描述反射顏色的,名稱不同,意義一致。

Glossiness是Roughness的反義詞,都是對反射模糊粗糙程度的描述,只不過一個指的是清晰的程度,一個指的是模糊的程度。

而最令人費解的貼圖是一個叫做ior的玩意兒。第一次接觸的朋友絕對會懵。Ior這個詞是index of refraction的縮寫,意思是折射率。按照初中物理知識來說,折射率這個東西是透明的玻璃之類的物體才會有的,應該是透明物體的固有屬性了,怎麼會變成一張貼圖?這張貼圖又能起到什麼樣的作用?

大家跟之前arnold的輸出貼圖進行對比就會發現,這裡的ior貼圖對應的是arnold輸出的F0。那麼進行簡單的猜測,是否這兩種貼圖有內在的聯繫呢?答案也是肯定的。

我們在allegorithmic出的幫助文檔[2]上可以找到這樣一個公式:

大家不要看到公式就害怕,至少這一個就很簡單嘛。

這個公式描述的就是F0和ior之間的關係。等式左邊的當然就是F0了,而右邊的n則指代ior。那麼通過這個公式,我們可以粗略地感受到,F0和ior是有一種內在的對應關係的。

現在我們來嘗試做一個簡單的運算,當ior等於1.5的時候,可以非常容易口算出,F0是等於0.04的。咦,似乎這個0.04有點眼熟?這種既視感是怎麼回事?

事實上,前文就已經出現過0.04這個數字了。「當metallic值為0的時候,F0的值是0.04」。0.04就是PBR流程里,給所有非金屬物體的F0強制設置的值,與之對應的,ior的值為1.5。

根據影視渲染的知識體系,我們知道,ior這個屬性,也是可以用來描述反射強度的。一般我們會使用1.3到1.6之間的ior去設置非金屬材質,20以上的ior去設置金屬材質。

這裡插個小知識。認真看到這裡的朋友可能會有個疑問,就是我們平時做渲染,ior可能會給得比較多變,但是按照我前面說的內容,好像PBR里非金屬的物質,恆定使用1.5的ior不改?那豈不是反射強度都是一樣?這樣做出來的材質能對嗎?

大家可以再看看文章開篇神海4的場景,他們也是用的這套系統做的,並沒有什麼不妥。為什麼恆定用1.5的ior不會有問題?因為自然界中所有的非金屬物質F0的變化也無外乎在0.02-0.05之間變動[2],差異非常小,就算全都用0.04,也看不出來太多變化。

而某些軟體也考慮到這個問題,會在基本的PBR參數上增加一個參數來稍微控制一下F0的強度,讓藝術家有更大的操作空間。比如虛幻4遊戲引擎的材質,就有一個specular屬性,但是這個specular卻和傳統的specular完全不同。它實際上發揮的作用是讓F0能夠從0.02到0.06進行變化。大家可以點開本文後面的鏈接,虛幻4的幫助文檔上有滑條可以拖動觀察效果。[1]

將PBR的貼圖連入vray的材質,和arnold的方法幾乎一致,除了要將ior貼圖連入材質的ior通道以外。

並且這裡還有一點非常注意的事情是,這裡我們一直在說的ior貼圖,嚴格意義上說應該是1/ior貼圖。

大家可以看看輸出的這張1/ior貼圖,你可以想像一下,如果輸出的是ior貼圖,因為ior的值,非金屬是1.5,金屬也要大於20,都是大於1的值,體現在貼圖上的話,肯定就是純白的一片,不會是這樣的灰度圖。

那麼我們是不是要在三維軟體中,再對這個1/ior貼圖進行一個反轉,得到真正的ior數值以後,再插入ior通道呢?如果你使用的是vray渲染器的話,就沒有這個必要,因為vray會自動識別插入ior通道的數值,小於1的話,就自動當做1/ior處理。

以上,就通過講解在arnold和vray這兩款渲染器中使用PBR貼圖的方法來梳理了F0貼圖和ior貼圖的使用方法,其他各種渲染器也無外乎就是使用這兩種方法之一。

有意思的一件事情是,redshift這款渲染器,因為借鑒了大量其他渲染器,所以,材質球上同時繼承了F0和ior的介面。同時,在新版本的rsMaterial材質(即開源的alsurface材質升級版)當中,居然還做了metalness這個屬性,可以直接像遊戲引擎一樣和PBR流程進行對接,也是蠻潮的。[3]

PBR材質真實感的來源

很多朋友一直疑惑,為什麼使用PBR流程以後,遊戲的畫面會有那麼大的提升,甚至已經開始超越影視級別的效果。是不是影視里用的流程比不過PBR流程?

通過本文前面的闡述,大家會發現,PBR流程里輸出的貼圖,我們在各種渲染器里也是照用,渲染出來的效果接近甚至更好。也就是說,遊戲PBR流程出來的效果,用影視的製作方法是完全可以復刻甚至超越的,但是反過來不行。

PBR流程只是對電介質和金屬這兩大類材質進行了很好的定義,但是對於透明材質3s材質之類的,有很大缺失。

那麼,為什麼PBR流程還是給大眾留下了好像比影視流程更真實的印象呢?

通過前文的敘述,大家是否發覺一件事情,PBR流程對於反射參數的修改,就只有兩個——F0和Roughness。看起來似乎非常局限,很扼殺藝術家的創作空間,相比之下,我們平時用的材質,對於反射有無限的修改權利,不光可以調F0的強度,還可以調F90的強度,還可以調整體強度,還可以調F0到F90的過渡曲線。

這使得我們的工作看起來更加的自由,更加具有創造性,而實際上,

正是軟體給我們的自由過了火,才使我們犯了錯。如果說我們的目的是為了創造真實,那麼這種自由讓我們背道而馳。在PBR流程里,連調節反射強度的機會都不給你,不管你怎麼調節,永遠無法打破能量守恆,無法消除菲涅爾反射,無法創造出自然界中不存在的材質。正是這種看似強硬的限制,反而提升了PBR流程的準確度,更符合絕大多數情況下的行業需求。

很多時候,並不是說現在遊戲的美術人員水平更高,而是說他們犯錯的機會幾乎沒有。而從事影視行業的渲染藝術家,想要做到同樣的質量,卻需要更高的學習成本。你只有理解到背後所有的這些知識,才會控制住自己不犯錯,不會出現「那裡有那麼一個屬性存在,所以我就要去調一下」的情況。

參考資料:

[1] Unreal Engine 4 官方幫助文檔,Physically Based Materials

docs.unrealengine.com/l

[2]allegorithmic 官方幫助文檔,VOLUME 1: THE THEORY OF PHYSICALLY BASED RENDERING

allegorithmic.com/syste

[3]redshift 官方幫助文檔,rsMaterial

docs.redshift3d.com/#

[4]everything is shinny

filmicgames.com/archive

[5]everything has fresnel

filmicgames.com/archive


推薦閱讀:

需要用Thea Render做室內效果圖,但是相關的詳細教程卻沒有找到,在哪裡可以發現?
TSDF方法的重建和Poisson重建相比較有什麼優點和缺點?
出圖表現對於建築設計有多大的作用?
SU的VRay3.4,怎麼調添加了點陣圖的材質顏色?
正在學習建模渲染,望各位大神指明方向?

TAG:渲染 | 3D渲染 |