對Unity3D的PBR的初步研究

demo視頻
demo視頻2

最近經常聽到PBR(Physically Based Rendering)技術的討論,我一開始其實比較抗拒的。畢竟對於畫面和運行效率,我一直偏向於後者。不過最近玩了一些比較優秀的遊戲作品,比如《鎮魔曲》等,發現好的畫面還是非常吸引人的,於是開始研究一下PBR技術的用法。
傳統的貼圖渲染技術,一般是使用3張貼圖來表現模型的效果:漫反射貼圖、法線貼圖和高光貼圖。物體能讓肉眼看到的基本顏色,都是通過漫反射貼圖來表現的,然後通過法線貼圖讓模型在細節上產生有凹凸的感覺。最後通過高光貼圖控制模型不同部分的高光顯示不一樣,讓人感覺到同一個模型上有不同的質感。由於光照模型產生高光的銳度不一樣,還需要通過一個參數去調節高光的整體銳度。
由於傳統的渲染技術是基於貼圖的,所以使用同一張法線貼圖和高光貼圖的模型實際上產生高光的整體是一樣的,只是通過法線貼圖細節上的不一樣,讓不同部位的高光方向稍微不同,然後高光貼圖等於是一張過濾圖,讓某些部位的高光顯示強弱發生一點變化。
PBR的渲染使用了4張基本貼圖:漫反射貼圖、金屬度(高光度)貼圖、法線貼圖和環境貼圖。
漫反射貼圖和法線貼圖和傳統貼圖渲染使用的差別不大,區別是漫反射貼圖最好把上面的光照信息(比如一些畫上去或者烘焙的假光影)去掉,把這些光影的效果交給渲染本身來實現。
區別最大的是金屬度貼圖。金屬度貼圖的rgb通道代表了金屬感的強弱,alpha通道代表了高光的銳度。和傳統的高光貼圖不一樣,它使用了金屬感和高光銳度兩個概念,讓物體的質感更豐富。高光貼圖只是過濾的功能,但金屬度貼圖是一種物體表面的屬性,你可以控制物體上面某一個部位的反光程度和高光產生的強度,讓渲染的過程自動生成它該有的效果。
環境貼圖,是控制物體受影響的基本環境,一般是純黑色的,也就是完全受周圍真實環境的影響。但你可以在某些部位的貼圖上繪製一些固定的顏色,讓貼圖顏色和真實環境同時對模型產生影響。比如你要讓某個部位一直髮光,不受外部光線的影響,可以在環境貼圖上控制。
下面做了一個例子:
我拿了一個漫威的冬兵(WinterSoldier)的模型,在完全沒有貼圖的情況下,他是這樣的:
這裏寫圖片描述

然後我給他賦予了漫反射貼圖:
這裏寫圖片描述

按照傳統的貼圖渲染做法,我給他賦予了法線貼圖和高光貼圖,效果如下:
這裏寫圖片描述

可以看得出,法線貼圖和高光貼圖讓模型產生了質感,在手臂和腰帶扣子上,產生了類似金屬的質感。但也可以看出,模型計算的高光是整體的,也就是說雖然有不同的部位,但產生的高光是以整個角色一起算的,只是某些部位把高光隱藏了而已。

接下來我把材質換成默認的Standard,默認會賦予了漫反射貼圖和法線貼圖
這裏寫圖片描述

這時候的效果是這樣的:
這裏寫圖片描述

效果視頻
由於我現在沒有設置金屬度貼圖,所以整個角色的金屬度和高光度是一樣的,看起來就像一個金屬的雕像。

接下來我使用他原來的高光貼圖做了一些修改,變成了金屬度貼圖,效果會變成這樣:
這裏寫圖片描述

效果視頻
現在整個角色的形象變得鮮明,不同部位的質感差別很明顯,而且高光的感覺是單獨的,手臂上面有單獨的高光,衣服上的配飾的高光也是單獨的,看起來比較細膩和豐富。

這時候4張貼圖都已經使用了,由於冬兵的手臂雖然是金屬,但顏色會比較白,如果金屬度調得高了,會變黑。所以我在環境貼圖裏面對手臂部分稍微做了些調整。
這裏寫圖片描述

這是一個比較簡單粗暴的製作過程,我感覺製作高光貼圖和製作金屬感貼圖最大的不一樣,是pbr的質感是以部位來做的,你可以感覺整個部位劃爲一塊那樣做金屬感貼圖,也可以通過紋理細節來做一些部位的特殊效果,比如鏽跡等。做法很多,效果很豐富,但需要慢慢的調節才能看到正確的效果,中間的難度比只是單純做一張過濾用的高光貼圖要難。

發佈了69 篇原創文章 · 獲贊 79 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章