姚 超 (南通大學 藝術學院 動畫教研室 226000)
淺談切線空間法線貼圖在三維建模中的應用
姚 超 (南通大學 藝術學院 動畫教研室 226000)
在三維制作中,性能的損耗與高細節的模型之間長期以來一直存在著難以兼顧的矛盾。隨著計算機硬件技術的發展,法線貼圖技術在三維建模領域開始為人們所重視。切線空間法線貼圖是目前應用較為廣泛的一種法線貼圖技術,其利用切線空間的數學方法將模型凹凸的高度信息存儲在了法線貼圖的RGB通道中。這一技術突破了以往凹凸貼圖的局限,使得三維模型在多邊形數量不變且性能損失較小的情況下能顯示出更多的凹凸細節。法線貼圖技術的出現極大提升了用戶在三維制作中的流暢性,在三維制作中也得到了廣泛的應用。
法線貼圖;向量;高模;低模
隨著時代科技的進步,計算機硬件和軟件技術在最近二十年間得到了突飛猛進的發展。以往,計算機硬件性能的局限使得三維制作人員為了提高制作速度和軟件運行效率不得不降低三維模型的多邊形數量,從而造成模型細節的損失。早期的三維CG作品和三維游戲的畫面的細節效果并不能夠讓人滿意。2001年初,支持微軟DirectX 8.0的GeForce3顯卡的上市,可編程的著色管線概念被引入到GPU中,新的Shader數據處理方式使得法線貼圖能夠被更好地支持和體現。今天,法線貼圖已經在次世代游戲、CG藝術作品、影視作品等領域起著不可或缺的作用,如電影《阿凡達》,游戲《古墓麗影10》《戰地4》等諸多作品中均大量使用了法線貼圖。上億多邊形的高精度模型的細節通過法線貼圖可以流暢運行于計算機上,法線貼圖對于三維制作的發展有著極為深遠的意義。
三維模型實現凹凸效果的傳統方式一般都是在對象的材質的凹凸通道中加載一張處理過的黑白圖像或直接使用一張紋理貼圖,利用圖像中的灰度信息實現模型表面起伏的效果,但是這一做法在光源位置發生變化時并不能夠讓凹凸處的陰影和高光隨著光源位置的變化而變化,作為凹凸貼圖的延伸,法線貼圖在這一方面則顯得更加優秀。
法線指的是始終垂直于面的直線,在三維制作軟件中,可以用于定義多邊形的朝向。法線貼圖是一種含有24位RGB色彩的圖片,通過計算光線與法線的角度就可以知道光線與面的角度,進而可以計算出面應得到的顏色值,也就是說,法線貼圖的RGB實際上是儲存了模型各頂點在切線空間中的法線映射值,而在獲得了對象物體的每個頂點的法線后,就能實現對這個物體進行光線照明渲染。
法線貼圖有三種:world space normal map、object space normal map和tangent space normal map,其中tangent space normal map在三維制作中最為常用。“tangent space normal map”是指切線空間法線貼圖,由一個原點和三個基向量構成,其中原點是指多邊形的頂點,三個基向量則分別是:切線、法線和副法線(T、N、B)。相比起凹凸貼圖,法線貼圖使用RGB通道來儲存法線信息,而RGB在空間中對應的是x、y、z三個坐標軸(圖1.1)。在法線貼圖技術中,像素的明暗程度依靠它們各自的法線來決定。如果在即時渲染中,把每個像素的法向量都轉換成世界空間里與光線進行角度的計算會極大地降低渲染效率,因此,法線貼圖技術則是將光向量引入法線所在的切線空間里進行計算。在切線空間中,法線可以看作高度且與z軸對應,始終垂直于頂點;而切線則對應x軸,是需要平行于法向量所在的平面(圖1.2);副法線則可以通過另外兩個向量的差乘得出,簡單地利用公式表達,就是N=T×B。二維紋理空間的坐標是以U和V來表示,切線和副法線既分別對應x和y軸,同時也對應了二維紋理空間中的U和V。

圖1.1

圖1.2
使用法線貼圖的目的通常是為了在較少的多邊形模型上產生更多的凹凸細節,所以用戶在生成法線貼圖前需要準備好高精度模型(高模)和低精度模型(低模)。高模的作用是為低模提供更多的細節內容,不需要進行UV展開;低模則是承載法線貼圖的主體,在賦予法線貼圖前需要對其進行展平UV。通常用戶會先行制作低模,在確保模型外形正確后再在低模的基礎上制作擁有更多細節的高模,這樣可以保證高模與低模的外觀形態基本一致。用戶也可以利用Zbrush或Mudbox等數字雕刻軟件制作高模,然后使用Topogun一類的拓撲軟件對高模進行拓撲而得到低模,這種做法的好處在于可以根據高模合理調整低精度模型的布線從而為低模UV的展平提供便利。
以3ds Max為例,如果需要生成法線貼圖,需要按照如下的步驟:(1)先準備好低模和與之對應的高模并將兩個模型都導入進同一個場景中,高模和低模的位置要進行對齊。(2)在Rendering菜單下選擇Render To Texture,之后在Projection Mapping下按Pick按鈕選擇高模,將高模讀取。為了讓烘焙出的貼圖質量更佳,我們需要為烘焙貼圖設置“Hammersley”類型的抗鋸齒并把質量設置為“1”,同時設置其貼圖坐標為“1”。(3)在Output卷展欄下,添加“法線貼圖”。為了確保烘焙出的法線貼圖擁有足夠的分辨率,尺寸值需要設置得大一些,系統默認的256×256是遠遠不夠的。此外,在修改堆棧中的映射一欄下,設置合理的值并作適當的調整,讓映射的范圍適當地包裹住低模,以確保法線貼圖生成的正確性。(4)最后,在Render To Texture面板中點擊Render按鈕進行貼圖的渲染生成。這時,需要將生成好的法線貼圖賦予到凹凸貼圖通道中并把凹凸貼圖通道的強度值設置成“100”。在完成了以上的步驟之后,我們即可在低模上看見高模所具備的各處細節。
在三維制作過程中,常見的能實現模型凹凸效果的貼圖并不止法線貼圖一種,凹凸貼圖、置換貼圖等均能夠實現模型表面的凹凸效果。
相比起法線貼圖,傳統的凹凸貼圖出現年代較早,但它只是利用灰度信息對原始圖像進行復制、平移操作,從而實現凹凸效果,當然也可以利用Alpha通道來實現凹凸效果。這種貼圖的局限性很大,無法很好地產生鏡面高光,也不能針對光源位置的變化在凹凸處產生正確的投影和高光。法線貼圖很好地彌補這一缺陷,除了具備傳統凹凸貼圖的優點外,凹凸處的鏡面高光也能很好地體現,并且能夠根據光源的位置產生正確的投影,從而得到更逼真的凹凸效果。而置換貼圖在實現模型凹凸效果時,整體效果優秀,這是一種真正可以改變對象物體表面幾何形狀的貼圖方式。由于置換貼圖會明顯增加模型的幾何形信息,這種貼圖方式對于系統資源的損耗也非常大,而法線貼圖在不增加對象物體多邊形數量的前提下就能實現正確且效果較好的凹凸感,從而很好地在性能損耗和畫面效果之間取得了合理的平衡。
和凹凸貼圖類似,法線貼圖也只是產生模型表面凹凸的假象,實際上并不能改變模型的外形。在入視角度接近水平時,法線貼圖所起到的效果就會大幅度削弱。此外,法線貼圖不能很好地體現較大的凹凸效果,也不能實現自身內部的遮擋,這也是法線貼圖的缺點所在。盡管自身具有一定的缺陷,但由于能夠在有限的多邊形面數上實現上億多邊形的高模效果,尤其是切線空間法線貼圖具備更大的自由度并能夠實現UV動畫,法線貼圖技術在三維建模中依然是目前較為流行和科學的技術手段,配以合理的環境光遮蔽貼圖,可以讓法線貼圖的細節感得到更大的增強。另一方面,作為法線貼圖的增強技術,視差貼圖技術也已經越來越多地被使用。法線貼圖技術在追求畫面細節的今天,已被廣泛地應用于影視制作、次世代游戲開發等諸多領域,對于畫面效果的提升起著非常重要的作用,在未來的一段時期內,法線貼圖技術依然會作為三維模型制作的一種主流技術被繼續應用在各個領域。
在計算機硬件和三維制作技術飛速發展的今天,簡單地對模型進行貼圖顯然已經不能滿足觀眾的視覺需求,法線貼圖在大型三維游戲、影視作品和藝術創作等諸多領域中扮演著越來越重要的角色。法線貼圖使三維建模得到了飛躍性的發展,為創作更加優秀的三維數字畫面提供了極其重要的前提條件。在未來也會更加地為人們所重視并得到進一步地發展。
[1]尚冰. 淺談中國高校的三維動畫教學模式[J]. 科技傳播,2014(8).
[2]張云苑. 3D游戲中法線貼圖技術的數學方法[J]. 電腦知識與技術,2011(7).
[3]周飛. 法線貼圖技術在次世代游戲圖像中的原理及應用[J]. 湖北經濟學院學報,2012(9).