馮碩
摘要:法線貼圖(Normal Mapping)是三維設(shè)計(jì)中最常用的工具之一,被廣泛使用在動畫、影視和游戲等多個領(lǐng)域之中,是增加材質(zhì)表面細(xì)節(jié)的重要方法。美術(shù)人員只需針對同一個模型制作一個高模和一個低模,烘焙出一張法線貼圖,在游戲中使用低模+法線貼圖即可。
關(guān)鍵詞:渲染、三維、法線、貼圖、Normal、Mapping
法線貼圖(Normal Mapping)是三維設(shè)計(jì)中最常用的工具之一,被廣泛使用在動畫、影視和游戲等多個領(lǐng)域之中,是增加材質(zhì)表面細(xì)節(jié)的重要方法。法線貼圖是在原物體的凹凸表面的每個點(diǎn)上均作法線,通過RGB顏色通道來標(biāo)記法線的方向,你可以把它理解成與原凹凸表面平行的另一個不同的表面,但實(shí)際上它又只是一個光滑的平面。對于視覺效果而言,它的效率比原有的凹凸表面更高,若在特定位置上應(yīng)用光源,可以讓細(xì)節(jié)程度較低的表面生成高細(xì)節(jié)程度的精確光照方向和反射效果。
在三維計(jì)算機(jī)圖形學(xué)中,法線貼圖(英語:Normal mapping)是一種模擬凹凸處光照效果的技術(shù),是凸凹貼圖的一種實(shí)現(xiàn)。法線貼圖可以在不添加多邊形的前提下,為模型添加細(xì)節(jié)。常見的使用場景是為低多邊形模型改善外觀、添加細(xì)節(jié),此時的法線貼圖一般根據(jù)高多邊形模型或高度貼圖生成。法線貼圖通常以普通RGB圖像的形式存儲,其中的R、G、B分量分別對應(yīng)法線的X、Y、Z坐標(biāo)。法線貼圖有時也稱為“Dot3(仿立體)凸凹紋理貼圖”。凸凹與紋理貼圖通常是在現(xiàn)有的模型法線添加擾動不同,法線貼圖要完全更新法線。與凸凹貼圖類似的是,它也是用來在不增加多邊形的情況下在濃淡效果中添加細(xì)節(jié)。但是凸凹貼圖通常根據(jù)一個單獨(dú)的灰度圖像通道進(jìn)行計(jì)算,而法線貼圖的數(shù)據(jù)源圖像通常是從更加細(xì)致版本的物體得到的多通道圖像,即紅、綠、藍(lán)通道都是作為一個單獨(dú)的顏色對待。法線貼圖通常有兩個變體,即物體空間與tangent-space法線貼圖,它們的不同之處在于法線測量與儲存所用坐標(biāo)系統(tǒng)。
這項(xiàng)技術(shù)的一個有趣的應(yīng)用是使用高分辨率模型的法線貼圖表大幅度地提高low poly低面模型的顯示效果。盡管這種利用該分辨率模型細(xì)節(jié)創(chuàng)建位移貼圖取代非均勻有理B樣條的方法早在1996年由Krishnamurthy與Levoy在Proc. SIGGRAPH 1996的文章“在密集多邊形網(wǎng)格上使用光滑曲面”中已經(jīng)提出,但是直到后來才開始用到更加普通的三角形網(wǎng)格。1998年另外兩篇論文提出了從高分辨率向低分辨率多邊形網(wǎng)格轉(zhuǎn)換細(xì)節(jié)作為法線貼圖的論文:Cohen et al.在SIGGRAPH 1998的“保留外觀的簡化”以及Cignoni et al. IEEE Visualization 98在“在簡化的網(wǎng)格上恢復(fù)屬性值的通用方法”。第一篇論文提出了一個特殊的約束簡化算法,在化簡過程中跟蹤如何將丟失的細(xì)節(jié)映射到簡化的網(wǎng)格。第二篇論文提出了分離高低精度多邊形網(wǎng)格的簡單方法,以及不受低精度模型構(gòu)建方法影響的丟失細(xì)節(jié)恢復(fù)方法。后一種方法及其變體目前仍然是目前大多數(shù)可用工具使用的方法之一。
在制作3D游戲時,我們常常遇到這樣一個問題:一個平面,這個平面在現(xiàn)實(shí)中并不是一 個“平”面,例如磚墻的表面帶有石質(zhì)浮雕等等。這種情況下如果只是簡單的做一個平面,則讓人感覺嚴(yán)重失真。而如果用很密集的三角形去表示這類略有凹凸的表面,則性能上大大下降。研究人員發(fā)現(xiàn),人眼對物體的凹凸感覺,很大程度上取決于表面的光照明暗變化,如果能通過一張貼圖在一個平面上表現(xiàn)出由凹凸造成的明暗變化,則可以讓人眼感覺這個平面是凹凸不平的(雖然這個平面還是平的)。法線貼圖正是為了這個目的而產(chǎn)生的。準(zhǔn)確的說,法線貼圖是Bump Mapping(凹凸貼圖)的其中一種。第一個Bump Mapping由Blinn在1978年提出,目的是以低代價(jià)給予計(jì)算機(jī)幾何體以更豐富的表面信息。30年來,這項(xiàng)技術(shù)不斷延展,尤其是計(jì)算機(jī)圖形學(xué)成熟以后,相繼出現(xiàn)了不少算法變體,法線貼圖就是其中很重要的一種。法線貼圖中存儲的法線最初是定義在世界空間中,但在實(shí)際中,這種方式很少見,因?yàn)橹灰矬w移動,法線貼圖則不再有效。另一種方式就是將法線存儲在物體的局部空間中,物體可以進(jìn)行剛體變換(平移,旋轉(zhuǎn),縮放),法線貼圖依舊有效,但是這種方法并不能應(yīng)對任何方式的變換,并且法線貼圖不能在不同物體進(jìn)行復(fù)用,增加了美工的負(fù)擔(dān)。所以,現(xiàn)在現(xiàn)在普遍采用的解決方案是將法線存儲在切線空間中。
簡單的來說,切線空間可以理解為紋理空間的u,v方向和法向量n,這3個方向構(gòu)成了切線空間,一般使用T、B和N表示。
在三維設(shè)計(jì)的制作流程中,法線貼圖經(jīng)常由高低模的烘焙產(chǎn)生。通過對比高模和低模的差異,生成法線貼圖,在運(yùn)行時使用法線貼圖+低模即可表現(xiàn)出接近高模的效果,但是大大降低了顯卡的負(fù)擔(dān)。計(jì)算法線貼圖的算法在常見的三維軟件已經(jīng)普及,美術(shù)人員只需針對同一個模型制作一個高模和一個低模,烘焙出一張法線貼圖,在游戲中使用低模+法線貼圖即可。當(dāng)然法線貼圖也不是萬能的,它也有它的缺點(diǎn)。因?yàn)樗皇歉淖兞宋矬w表面的光照計(jì)算方式,所以它不適合用在凹凸起伏較大的物體上,這些物體會有遮擋的效果,這是法線貼圖無法實(shí)現(xiàn)的。這種情況我們通??梢酝ㄟ^置換貼圖去實(shí)現(xiàn)。
綜上所述,在三維制作流程中,法線貼圖(Normal Mapping)在節(jié)約計(jì)算資源的前提下,為我們提供了一種增加材質(zhì)細(xì)節(jié)的方法,可以在使用低模時模擬高模的渲染效果,在次世代游戲和影視動畫的渲染中都有廣泛的應(yīng)用領(lǐng)域,值得我們深入研究和使用。
參考文獻(xiàn):
[1] Krishnamurthy V , Levoy M . Fitting smooth surfaces to dense polygon meshes[C]. Proceedings of the 23rd annual conference on Computer graphics and interactive techniques,1996.