3D模型主要是通過材質(zhì)(Material)和貼圖(Texture)來表現(xiàn)其精美的外表,說白了就是一張“畫皮”而已。我們之前的DirectX課程中介紹過材質(zhì),它實(shí)際就是對光的反射率,這樣簡單的設(shè)置并不能展現(xiàn)3D模型的外觀,因此就引入了貼圖來展示模型物體的表面紋理。請注意,貼圖是材質(zhì)的一部分,因?yàn)椴馁|(zhì)的本質(zhì)就是顏色,圖像是展示顏色的最好方式。但是,本章節(jié)要講的是PBR材質(zhì)。PBR全稱Physically Based Rendering,譯成中文是基于物理的渲染,是目前非常流行的一種擬真渲染技術(shù)。它是利用真實(shí)世界的原理和理論,通過各種數(shù)學(xué)方法推導(dǎo)或簡化或模擬出一系列渲染方程,并依賴計算機(jī)硬件和圖形API渲染出擬真畫面的技術(shù)。
以上是電影《戰(zhàn)斗天使》的畫面。主角阿麗塔是計算機(jī)通過PBR技術(shù)渲染出來的虛擬角色。對于游戲而言,PBR材質(zhì)已經(jīng)成為了次時代游戲的標(biāo)配。Unity從5.0開始就支持PBR材質(zhì)了。Unity內(nèi)部實(shí)現(xiàn)機(jī)制遵循了PBR的基本準(zhǔn)則,支持金屬度,表面粗糙度,能量守恒,菲涅爾反射,表面陰影遮蔽等特性。
接下來,我們?nèi)匀辉凇癓ightDemo”工程中創(chuàng)建一個新的場景SampleScene2.unity。材質(zhì)也是一個資源,所以我們要在Project視圖中右鍵選擇“Create”->“Material”,然后重命名為“TestMaterial”即可,截圖如下:
我們選中“TestMaterial”材質(zhì)文件,然后查看它的Inspector檢視面板,查看它的屬性
在我們之前的很多章節(jié)中,我們已經(jīng)簡單使用過材質(zhì)了。我們基本上都是設(shè)置一個顏色值而已。修改的方式就是點(diǎn)擊“Albedo”后面的顏色框,非常的簡單。接下來,我們就系統(tǒng)性的講解一下材質(zhì)的各個屬性。
首先是Shader的分類:standard和standard(Specular setup)
兩者區(qū)別是,standard使用了金屬模擬的外觀,而standard(specular setup)使用鏡面模擬的外觀。兩者都支持PBR材質(zhì),只是對應(yīng)的參數(shù)是不一樣的。我們一般使用標(biāo)準(zhǔn)著色器standard就行了。什么是Shader?它與材質(zhì)的關(guān)系是什么?在Unity中,材質(zhì)與Shader的關(guān)系很緊密,Shader是材質(zhì)的一部分,稱之為著色器。著色器的本質(zhì)就是一小段程序,它負(fù)責(zé)將網(wǎng)格模型和貼圖或者顏色按照指定的算法進(jìn)行渲染輸出。簡單的理解,Shader的作用是告訴GPU如何去繪制模型的每一個頂點(diǎn)的顏色以及最終每一個像素點(diǎn)的顏色。另外,Shader與渲染管線也有密切的關(guān)系。我們之前在DirectX課程中講過渲染管線的一些內(nèi)容,它是非常復(fù)雜的流程,包括坐標(biāo)系轉(zhuǎn)換,光照計算,光柵化等等。固定渲染管線已經(jīng)幫我們實(shí)現(xiàn)了大部分的流程,我們能夠做的大部分操作只是對模型的控制,但是如果想要實(shí)現(xiàn)逼真的現(xiàn)實(shí)世界的畫面,我們就需要對渲染管線的內(nèi)部流程進(jìn)行定制,也就是我們所說的可編程渲染管線。在Unity中就是通用渲染管線 (URP)和高清渲染管線 (HDRP)兩種。在這個渲染流程中,我們就可以使用Shader來實(shí)現(xiàn)基于物理的著色渲染(PBR)。可以說,Shader是可編程渲染管線中非常重要的一部分,也是實(shí)現(xiàn)AAA級游戲畫面的關(guān)鍵部分。
接下來就是“Rendering Mode”渲染模式,它有如下幾項(xiàng)可以選擇:Opaque(不透明),Cutout(裁剪),F(xiàn)ade(漸變),Transparent(透明)四種,他們影響的是透明效果,解釋如下:
1. Opaque此項(xiàng)為默認(rèn)設(shè)置,適用于沒有透明區(qū)域的普通固體對象,說白了就是不透明。
2. Cutout用于創(chuàng)建在不透明區(qū)域和透明區(qū)域之間具有硬邊的透明效果(只有透明和不透明)。
3. Transparent適用于渲染逼真的透明材質(zhì)(可以設(shè)置透明度),如玻璃效果。
4. Fade - 允許透明度值完全淡出對象,可對淡入或淡出的對象進(jìn)行動畫化。
我們以一張圖片為例,來說明“Rendering Mode”渲染模式的區(qū)別。
首先,我們創(chuàng)建一個Plane,然后調(diào)整它的參數(shù),如下
?
接下來,我們將之前的一張照片(sunwukong.bmp)放置到Assets目錄下。
接下來,我們?nèi)绾螌D片添加材質(zhì)中呢?很簡單,只需要將圖片拖動到Albedo”前面的矩形框內(nèi),不是后面的顏色框哦。如下所示
同時,在Project面板中材質(zhì)文件也會發(fā)生變化,
接下來,我們?nèi)绾螌⒉馁|(zhì)賦予Plane平面上面呢?直接拖動材質(zhì)文件到Plane上或者其Inspector檢視面板中即可。這樣拖動的最終設(shè)置如下
平面Plane的Mesh Renderer組件用于渲染游戲?qū)ο?,它的第一個屬性就是Materials材質(zhì)組。我們拖動的效果就是將我們的材質(zhì)賦予了材質(zhì)組的第一個材質(zhì)元素?;氐轿覀僑cene場景中,就會發(fā)現(xiàn)Plane會顯示我們的圖片了。
可能是由于我們對平面Plane的旋轉(zhuǎn)是不對的,因此我們重新調(diào)整一下。
我們Play運(yùn)行工程,查看效果
這是“Rendering Mode”渲染模式默認(rèn)Opaque的效果(不透明)。
這是Cutout裁剪的效果。
這是Fade漸變效果(與Cutout裁剪類似)。
這是Transparent透明效果。
接下來我們重點(diǎn)說一下PBR相關(guān)的參數(shù):
Albedo:基礎(chǔ)色,可使用一個顏色值,也可用使用紋理貼圖。相當(dāng)于我們之前的漫反射顏色。
Metallic:金屬度,數(shù)值在0-1之間,也可以用金屬貼圖代替,此時Smoothness參數(shù)會消失。金屬度影響的是高光反射,數(shù)值越高,金屬感越強(qiáng)。金屬度貼圖本身是一張灰白圖,越白的地方,金屬度越強(qiáng)烈,越黑的地方金屬度越低。
Smoothness:光滑度,數(shù)值在0-1之間,表示材質(zhì)表面的粗糙程度,影響的是反射效果。
Smoothness Source:指定存儲光滑度數(shù)據(jù)的紋理通道,可選擇金屬度貼圖的Alpha通道或基礎(chǔ)色貼圖的Alpha通道。
請注意,金屬度和光滑度影響的是物體表面的反射情況,圖片可能無法看到這種效果。我們使用一個球體,并附加顏色值為(123,78,8,255)的橙黃色材質(zhì)來查看這兩個屬性的作用效果。默認(rèn)情況下,金屬度Metallic為0,且光滑度Smoothness為0.5,效果如下
我們可以清晰的看到高光部分,接下來我們調(diào)整光滑度Smoothness為0(金屬度也是0)
高光沒有了,接下來我們調(diào)整金屬度Metallic為0.5(光滑度是0)
顏色偏暗,接下來調(diào)整光滑度Smoothness為0.5(金屬度也是0.5)
現(xiàn)在就非常像一個金屬球了。
接下來介紹的是四個貼圖:Normal Map,Height Map,Occlusion和Detail Mask
1. Normal Map:法線貼圖;用于增加模型的表面細(xì)節(jié);只是改變的表面上的光照結(jié)果,并沒有真正改變表面上的形狀。通過法線貼圖使物體低模物體表面具有高度的細(xì)節(jié)效果。法線貼圖本身是一張藍(lán)色的凹凸圖。它的原理就是將模型表面的法線向量(x, y, z)存儲到一個 RGB 紋理貼圖中。法線貼圖一般都是通過高模烘焙得到的,并不是手繪的。
2. Height Map:高度圖,法線貼圖和高度貼圖都是凹凸貼圖(Bump Map)。它們都是用貼圖,去展現(xiàn)低模的表面細(xì)節(jié),但它們以不同的方式存儲數(shù)據(jù)。高度圖應(yīng)為灰度圖像,白色區(qū)域表示紋理的高區(qū)域,黑色表示低區(qū)域。與法線貼圖對比,這種技術(shù)更復(fù)雜,性能也更高。高度圖和法線貼圖可以一起搭配使用。
3. Occlusion 稱之為AO貼圖,負(fù)責(zé)環(huán)境光和環(huán)境光反射產(chǎn)生的間接光照,主要用于改善陰影,給場景(模型)更多的深度,有助于更好的表現(xiàn)模型的細(xì)節(jié)。AO 貼圖本身是一張灰白圖。
4. Detail Mask 細(xì)節(jié)遮罩貼圖,這個貼圖是配合“Secondary Maps”中的 Detail Albedo,Normal Map 兩張貼圖配合使用的,可以屏蔽模型的某些區(qū)域的細(xì)節(jié)紋理。這意味著您可以在某些區(qū)域顯示細(xì)節(jié)紋理,某些區(qū)域不顯示。這里順便說一下“Secondary Maps”,也就是細(xì)節(jié)貼圖,主要在近距離觀察時具有清晰的表面細(xì)節(jié)。
最后在介紹一個“Emission”,也就是讓模型自發(fā)光,這個比較簡單。文章來源:http://www.zghlxwxcb.cn/news/detail-563595.html
總結(jié),我們發(fā)現(xiàn)基于PBR材質(zhì)的渲染,能夠達(dá)到非常逼真的效果。但是,它需要很多的貼圖來支持,這就需要美工人員來進(jìn)行制作。現(xiàn)代游戲的研發(fā)流程:美術(shù)用建模軟件,建立高模模型,然后制作出法線貼圖。然后把這個法線貼圖,用于減面之后的低模模型上,這樣就能用普通貼圖,在低模上渲染出高模上的細(xì)節(jié)。在軟件使用上,除了我們?nèi)粘J褂玫?ds max和maya之外,推薦大家使用Substance 這款軟件。Substance是Allegorithmic公司的一套PBR美術(shù)制作工具,包括Substance Painter和Substance Designer兩款軟件。其中,Substance Painter是PBR貼圖繪制軟件,該軟件提供了大量的畫筆與材質(zhì),可以讓我們輕輕松松的導(dǎo)入自己的模型,然后繪制輸出PBR貼圖。2019年初,Adobe公司收購Substance Painter和Substance Designer的開發(fā)公司Allegorithmic。隨后,Adobe就發(fā)布了Substance 3D 全家桶,全新發(fā)布的 Adobe Substance 3D 系列應(yīng)用軟件由 Substance 套件進(jìn)化而來。例如,Substance 3D Stager是三維場景搭建軟件,Substance 3D Painter是次世代游戲貼圖繪制軟件,Substance 3D Sampler是真實(shí)材質(zhì)貼圖制作軟件,Substance 3D Designer是三維貼圖材質(zhì)制作軟件。目前使用比較多的是Adobe Substance 3D 2022版本,對應(yīng)是Substance Painter是7.4版本。文章來源地址http://www.zghlxwxcb.cn/news/detail-563595.html
到了這里,關(guān)于第二十三章 Unity 材質(zhì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!