C4D材質(zhì)和貼圖學(xué)習(xí)筆記-法線貼圖及繪制

【引言】

? ? ? ?上一篇談到C4D的凹凸貼圖及其應(yīng)用。最后說(shuō)道,在現(xiàn)實(shí)使用中,尤其是在游戲引擎中,很少有使用凹凸貼圖的,基本上都支持法線貼圖。這是為什么?我在自學(xué)的時(shí)候,這個(gè)問(wèn)題也困惑很長(zhǎng)時(shí)間,看來(lái)很多CG書,基本上到關(guān)鍵的地方就沒(méi)了,非常不解渴。我想作者也許也沒(méi)有搞懂,他可能也不是太懂圖形學(xué),反正用就是了。這一篇,我就和初學(xué)者分享一下,我所理解的法線貼圖原理以及如何應(yīng)用。不一定正確,拋磚引玉吧


(我的磚可沒(méi)少扔,但沒(méi)得到一塊玉?。。?/p>

凸凹效果只能獲得一種紋理細(xì)節(jié),而法線貼圖則可以改變幾何體的光照模型,盡管模型的幾何外形不會(huì)改變。

【研究】

一、法線貼圖的的原理:

法線貼圖(Normal map)

首先研究基于世界坐標(biāo)的法線貼圖(world space normal map),雖不常用,但是基礎(chǔ)。法線貼圖是用來(lái)記錄物體表面不同的入射點(diǎn)的法線矢量的圖像數(shù)據(jù)信息。它是用一個(gè)RGB彩色圖像來(lái)記錄不同點(diǎn)的法線XYZ坐標(biāo)數(shù)據(jù)的。規(guī)則是R通道記錄X軸的數(shù)據(jù),G通道記錄的是Y軸數(shù)據(jù),B通道記錄的是Z軸的數(shù)據(jù)。

法線貼圖的出現(xiàn),是為了低面數(shù)的模型模擬出高面數(shù)的模型的"光照信息"。(前幾篇談過(guò),低模+法線貼圖增加模型表面細(xì)節(jié)的優(yōu)化方法)光照信息最重要的當(dāng)然是光入射方向與入射點(diǎn)的法線夾角,法線貼圖本質(zhì)上就是記錄了這個(gè)夾角的相關(guān)信息,光照的計(jì)算與某個(gè)面上的法線方向息息相關(guān)。

1、下圖是說(shuō):用烘焙的方法,把高模表面的光照信息(法線方向)和低模進(jìn)行“映射”計(jì)算,再通過(guò)烘焙方法把XYZ坐標(biāo)數(shù)據(jù)轉(zhuǎn)化為RGB數(shù)據(jù)儲(chǔ)存到一個(gè)圖像的過(guò)程。

2、下圖是說(shuō):渲染器從低模的材質(zhì)中讀出法線貼圖,然后把法線貼圖每點(diǎn)的RGB圖像信息轉(zhuǎn)化為XYZ法線方向,還原高模的表面信息。也就是說(shuō),有了法線貼圖,渲染器不管真實(shí)的低模是什么 樣子,它就相信法線貼圖的光照信息。這就是一個(gè)很好的視覺(jué)魔術(shù)。

■法線貼圖的分類:

1、world space normalmap:如果這個(gè)法線方向,是處于世界坐標(biāo)中的(world space),那稱為world space norma。渲染器從貼圖里解壓出來(lái)后,就可以直接用了,效率很高。但是有個(gè)缺點(diǎn),這個(gè)world space normal 是固定了,如果物體沒(méi)有保持原來(lái)的方向和位置,那原來(lái)生成的normal map就作廢了。

2、object space normamap:如果是處于物體本身局部坐標(biāo)中的,那稱為object space normal。它從貼圖里解壓,還需要乘以model-view矩陣轉(zhuǎn)換到世界坐標(biāo),或者轉(zhuǎn)換到其他坐標(biāo)取決于計(jì)算過(guò)程及需求。object space normal生成的貼圖,物體可以被旋轉(zhuǎn)和位移,基本讓人滿意。但仍有一個(gè)缺點(diǎn),就是一張貼圖只能對(duì)應(yīng)特定的一個(gè)模型,模型不能有變形(deform)。

3、tangent space normal map:

在object space的基礎(chǔ)上,高模上object space內(nèi)的某點(diǎn)法線(不會(huì)是world space的,否則旋轉(zhuǎn)就露相),乘以這個(gè)矩陣,即得到tangent space內(nèi)的法線方向,再把這個(gè)值映射到rgb空間,存為貼圖。

O-TBN =

現(xiàn)在我們可以分析為什么tangent space法線貼圖是偏藍(lán)色了,因?yàn)閷?duì)于高模上的面來(lái)說(shuō),因?yàn)榫忍?面很小,而且周圍的面相對(duì)它的方向很平滑),所以這個(gè)面渲染時(shí)計(jì)算機(jī)認(rèn)為這個(gè)面的"彎曲"程度很小,即面上各個(gè)點(diǎn)插值得來(lái)的法線相互間偏差很小,基本跟整個(gè)面的垂直方向不會(huì)差太多。因此在tangent space里,這些法線都跟z軸偏差較小,而z軸是被保存在貼圖里的B(藍(lán)色通道)里,所以貼圖顯示出來(lái)的顏色就偏藍(lán)了。

總之,world space norma 好用,但是要求最高;object space normamap不錯(cuò),要求不能變形;tangent space normal map:最佳,旋轉(zhuǎn)、變形都可以,最常用。tangent space normal map適應(yīng)變形的這種能力,使它不僅能夠應(yīng)用在原來(lái)的模型上,甚至可以應(yīng)用在變形嚴(yán)重的不同模型上。即法線貼圖有一定的脫離原來(lái)模型使用的能力。比如你模擬出了一個(gè)高精度的粗糙花崗巖平板表面,得出的法線貼圖可以應(yīng)用到圓柱模型上邊。

二、法線貼圖的制作方法:

如何得到法線貼圖呢?有三種方法:

一是從高模到低模的烘焙,這是最準(zhǔn)確的。

二是從一張圖片轉(zhuǎn)化過(guò)來(lái),實(shí)際上就是把彩色的RGB轉(zhuǎn)化為灰度圖(凹凸貼圖),又從凹凸貼圖存儲(chǔ)的表面光照信息轉(zhuǎn)化為以RGB形式存儲(chǔ)的法線貼圖。這用方法可用,但不準(zhǔn)確。

三是繪制法線貼圖。沒(méi)有人能直接用畫筆“直接”畫出法線貼圖,必須通過(guò)軟件進(jìn)行轉(zhuǎn)化而來(lái),這種方法就是靈活自如。下面簡(jiǎn)單介紹法線貼圖的三種制作方法,供大家參考。

Ⅰ、從高模烘焙而來(lái)

我最喜歡的烘焙軟件就是xNormal。我在《一塊石頭-4》中說(shuō)明了如何做。

xNormal的使用非常簡(jiǎn)單,它要求:

一是必須有一個(gè)高模和一個(gè)低模(OBJ格式);

二是低模的模型必須分好UV。

為了加強(qiáng)認(rèn)識(shí),我再簡(jiǎn)單舉個(gè)例子。

實(shí)例:制作一個(gè)凹凸的木門

1、制作一個(gè)立方體,90、210、3 一個(gè)正常門的尺寸。起名為DOOR,按C轉(zhuǎn)化多邊形。

2、重新展開DOOR的UV。(默認(rèn):這六個(gè)面的UV是重合的)

做好以后,以DOOR_LOW.OBJ低模形式導(dǎo)出。

3、然后,選擇面模式,對(duì)一個(gè)面進(jìn)行編輯。這個(gè)很簡(jiǎn)單,不做分析了。

(注意:倒角的時(shí)候,要有一定的坡度,不要完美垂直)

做完以后,再以DOOR_HIGH.OBJ作為高模導(dǎo)出。

4、打開xNormal軟件,添加高模文件。

5、添加低模文件。

6、烘焙設(shè)置,勾選法線和環(huán)境吸收貼圖,設(shè)置好文件夾和生成貼圖的名字。

7、點(diǎn)擊標(biāo)記處,可以進(jìn)一步設(shè)置法線貼圖。該軟件默認(rèn)的“切線”法線模式。(生成的法線一定會(huì)偏藍(lán)的)

8、生成兩張貼圖如下:

9、把DOOR_LOW.OBJ合并到DOOR_HIGH.OBJ的場(chǎng)景中,在低模的材質(zhì)賦予材質(zhì),并在法線通道載入烘焙的法線貼圖。渲染看看,喲!不錯(cuò)啊。

10、可以增強(qiáng)光影效果,在漫射通道添加環(huán)境吸收貼圖,調(diào)整混合強(qiáng)度,否則邊角接縫處,太暗。

11、下載,分別在兩個(gè)模型材質(zhì)的顏色通道,載入之。

12、渲染。你能分辨嗎?

這種方式,常用在三維游戲中,增加模型表面細(xì)節(jié),同時(shí)不增加面數(shù),而欺騙眼球的一種魔術(shù)方法。

補(bǔ)充:

有朋友跟我說(shuō):C4D的烘焙紋理標(biāo)簽也能從高模向低模烘焙紋理,為什么不講呢?

這是因?yàn)镃4D本身的紋理烘焙在烘焙法線貼圖的功能上比不過(guò)xNomal (人家不僅功能強(qiáng)大,還是免費(fèi))。

C4D烘焙法線貼圖要求高模和低模UV應(yīng)該是一致的。不少人烘焙出來(lái)的法線貼圖不對(duì),就是因?yàn)镃4D有這一條的限制。它是高對(duì)低在UV統(tǒng)一下的“一對(duì)一”的映射,所以法線不一致,導(dǎo)致錯(cuò)誤。你想,如果你從事高模制作,你注重的是模型細(xì)節(jié),哪管UV?。Nomal就是這樣好,它在烘焙法線貼圖的時(shí)候,不管高模的UV,你只要把低模的UV分好就行。歸根結(jié)底,還是算法上xNomal有優(yōu)勢(shì),這也是小軟件能存活的原因:好用,管用。

Ⅱ、從圖片轉(zhuǎn)化而來(lái)

第一種方法:專用軟件轉(zhuǎn)化

我在《一張貼圖搞定》中詳細(xì)介紹過(guò)該軟件使用方法,著重談了如何把一張貼圖轉(zhuǎn)化為法線貼圖。實(shí)際上這種軟件太多了,如Substance Bitmap2Material 、Knald、xNormal。

1、原圖片

2、用CRAZYBUMP進(jìn)行轉(zhuǎn)換

3、轉(zhuǎn)化保存為法線貼圖。

4、在C4D中載入生成的法線貼圖。

5、使用克隆制作一片地磚,光影效果還是說(shuō)得過(guò)去。

第二種方法:用C4D把圖片轉(zhuǎn)為法線貼圖

C4D在法線通道內(nèi)不能直接使用上述彩色圖片,必須通過(guò)一個(gè)特殊功能的Shade進(jìn)行轉(zhuǎn)化,功能比上述專業(yè)轉(zhuǎn)化軟件差一些,要求不高可以用。

1、在顏色和法線通道載入原圖。

2、再添加紋理---效果--法線生成SHADE。

3、點(diǎn)擊進(jìn)入“法線生成”進(jìn)行設(shè)置。加大強(qiáng)度等設(shè)置。

4、渲染也湊合。

Ⅲ、 繪制方法

第一種是C4D繪制法線貼圖方法

C4D的BP 3D PAINT能否繪制法線貼圖呢?我認(rèn)為不太可能,因?yàn)榉ň€貼圖的RGB表示的是數(shù)據(jù),記錄的是每個(gè)點(diǎn)的法線矢量,我們?nèi)绾沃朗裁搭伾硎裁锤叨饶兀颗c凹凸貼圖完全不同。

1、而這個(gè)BP 3D paint,的確有法線設(shè)置。

2、 我個(gè)人認(rèn)為,它不是用來(lái)讓你繪制的,而是讓你載入一個(gè)烘焙完成的法線貼圖,用來(lái)輔助繪制紋理的。

(這種方法,在SUBSTANCE PAINTER中常用。有了法線貼圖墊底,你一筆畫下去,不僅有顏色,凹凸也出來(lái)了。這個(gè)效果就是法線貼圖在后邊做得貢獻(xiàn)。)

3、如果我們不載入現(xiàn)有的法線貼圖,而是繪制一個(gè),我們看看。

4、 隨便繪制一些圖案。

5、球體上并沒(méi)有顯示什么,渲染也沒(méi)有什么。

6、我們看材質(zhì),法線通道的確載入這個(gè)新繪制的紋理,似乎沒(méi)有效果。

7、通過(guò)上邊所講,我們知道如何把一張圖片在C4D轉(zhuǎn)化為法線貼圖。

具體做法是:為這個(gè)新繪制的紋理,再添加一個(gè)紋理---效果--法線生成SHADE。

8、 轉(zhuǎn)到BP 3D PAINT界面 并沒(méi)有什么顯示,但是,當(dāng)你按SHIFT+R 或者 CTRL+R 渲染時(shí),效果出現(xiàn)了。

總之,我個(gè)人認(rèn)為:在C4D中如果要繪制凹凸效果,最好還是使用凹凸貼圖,實(shí)時(shí)而且可控。(凹凸貼圖和法線貼圖記錄法線方式不一樣,渲染計(jì)算不一樣,在C4D內(nèi),對(duì)于普通渲染計(jì)算,個(gè)人認(rèn)為沒(méi)有什么太大區(qū)別。)

第二種是NDO插件繪制

Ndo是QUIXEL SUITE的一個(gè)功能模塊,原來(lái)是獨(dú)立的PS一個(gè)插件,專門用來(lái)繪制法線貼圖的,功能十分強(qiáng)大和好用。下面我簡(jiǎn)單地展示一下它的用法。

1、在C4D建立一個(gè)立方體(門),尺寸:90、210、3CM。

2、展開它的UV

3、烘焙它的法線貼圖,添加烘焙紋理標(biāo)簽,設(shè)置如下:

4、第二頁(yè)設(shè)置如下:(不需要高模)

5、啟動(dòng)該軟件。它自動(dòng)打開PHOTOSHOP,畢竟它是NDO的宿主??!

這個(gè)軟件支持PBR物理貼圖繪制的。

6、工具條非常小。N是NDO繪制法線;D是DDO繪制紋理;3是3DO三維觀察窗口

7、點(diǎn)擊NDO,出現(xiàn)下面窗口,讓你建立一個(gè)項(xiàng)目。

8、點(diǎn)擊它創(chuàng)建項(xiàng)目,又打開一個(gè)窗口。載入C4D創(chuàng)建的模型和法線貼圖,點(diǎn)擊下面建立項(xiàng)目。

9、點(diǎn)擊圖板上的轉(zhuǎn)化,把法線貼圖轉(zhuǎn)化一下。經(jīng)過(guò)一陣運(yùn)算后,項(xiàng)目建立好了。

再點(diǎn)擊圖標(biāo)3,打開三維顯示,看到了這個(gè)門的模型。

10、注意:NDO能把選擇區(qū)、鋼筆繪制圖案、外載入圖片等轉(zhuǎn)化為法線貼圖,厲害吧!

下面,新建一個(gè)圖層,我們用選擇工具畫一個(gè)下面的螞蟻線。(按SHIFT鍵矩形加圓形)

11、NDO面板自動(dòng)識(shí)別,選取轉(zhuǎn)化法線,在中間點(diǎn)擊它。

12、經(jīng)過(guò)一陣運(yùn)算,生成法線貼圖。在3DO窗口看看。

13、NDO生成法線貼圖以后,轉(zhuǎn)換成新的面板,讓你調(diào)試更改。比如是凹還是凸等,以后再細(xì)談吧。

14、用圓角矩形工具繪制,點(diǎn)擊轉(zhuǎn)化按鈕。

15、SLANT選擇凹下,CURVE選擇曲線。

16、再?gòu)耐廨d入一個(gè)圖片文件,清除外邊,保留圓形部分,點(diǎn)擊轉(zhuǎn)化。

17、在繪制一個(gè)矩形選取,填充漸變,然后向下一次復(fù)制。點(diǎn)擊轉(zhuǎn)化。

18、打開3DO看看效果。然后,點(diǎn)擊PS 文件導(dǎo)出NORMAL.PSD輸出貼圖文件。

19、在C4D中,建立一個(gè)材質(zhì),在材質(zhì)的法線通道載入這個(gè)法線貼圖文件。

20、在材質(zhì)顏色通道載入一張木紋紋理。渲染一下,效果還可以。

(如果你認(rèn)為不太好,不是軟件的事情,是我的技術(shù)太差,做得匆忙的原因)

【后記】

? ? ? 每次不忙的時(shí)候,就用電腦趕緊打開三倆個(gè)軟件,然后截圖,編寫,保存。有事的時(shí)候,就又忙別的去了,所以每次編寫的時(shí)候,都十分匆忙,錯(cuò)字不少。退休就好了,心靜不下來(lái)??!

【感悟】

? ? ? ? 每一個(gè)熱愛(ài)CG的人,剛剛?cè)腴T的時(shí)候,就是憑著有一股熱情,義無(wú)反顧地堅(jiān)持學(xué)習(xí)。其實(shí),在自學(xué)的時(shí)候,幾乎都是一邊學(xué)習(xí)軟件的,一邊學(xué)習(xí)涉及的相關(guān)理論知識(shí)。比如當(dāng)時(shí)學(xué)習(xí)法線貼圖和凹凸貼圖的時(shí)候,總是不懂,為什么要用它們,在模型制作的時(shí)候,多加一些面,制作出細(xì)節(jié)不就可以了嗎?后來(lái),看了很多書,詢問(wèn)很多人,都沒(méi)有解釋,稀里糊涂就這么使用了2年,后來(lái)涉及游戲領(lǐng)域,才明白這是為了節(jié)約計(jì)算資源,即保證顯示效果,又要提高渲染速度而想出來(lái)的一個(gè)解決辦法而已。后來(lái)又想既然法線貼圖和凹凸貼圖效果如此相似,為什么要有兩個(gè)???慢慢學(xué)才知道原來(lái)它們都是記錄模型表面法線方向的,只是不同的記錄算法。但為什么在游戲引擎中一般都支持法線貼圖?這是因?yàn)榉ň€貼圖在使用的時(shí)候,比凹凸貼圖效率更高,占用內(nèi)存小,而且解算得更快,(這個(gè)以后有機(jī)會(huì)再詳談)所以,如果渲染靜幀圖片的時(shí)候,用法線和凹凸貼圖,哪個(gè)都無(wú)所謂。如果在游戲中,強(qiáng)調(diào)的是渲染速度,要求對(duì)項(xiàng)目進(jìn)行徹底的優(yōu)化,當(dāng)然選擇效率更高的法線貼圖了。

? ? ? ?隨著你深入學(xué)習(xí),你的問(wèn)題應(yīng)該越來(lái)越多,推動(dòng)你不斷地走向深入。當(dāng)然,興趣是源動(dòng)力。否則,你會(huì)停留在會(huì)用就行了的層次上。是不是這個(gè)道理呢?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容