開發遊戲不可或缺的幻術師 – Normal Mapping(一)

開發遊戲不可或缺的幻術師 – Normal Mapping(一)

什麼是Normal Mapping?

Normal Mapping 中文稱法向量貼圖。簡言之,法向量貼圖是透過光源與法向量的計算(光將會根據法向量在物體表面產生強弱、濃淡的表現), 取得該物體表面凹凸的高度資訊,並將此資訊儲存在一張RGB點陣圖中(bitmap)。R紅色channel儲存X 軸的資訊,G綠色channel儲存Y軸的資訊,而藍色channel則儲存Z軸的資訊。

圖一:法向量為垂直於物體表面的一垂直線,此圖展示了法向量在多邊形表面分布的情形。圖片來源: hajimenakamura.com

圖二: 法向量貼圖。來源: planetpixelemporium.com

仔細觀察圖二,可發現其確實是由三原色組成,根據其原理,此圖片帶有物體表面凹凸高度資訊,筆者在此圖特別加上了座標,方便讀者觀察,如圖三。

圖三。來源: planetpixelemporium

我們不難發現,藍色( Z軸)越深的地方,如圖怪物口腔的部分,代表其深度越明顯。綜合其顏色資訊,讀者應該不難轉換與想像此圖在 3D空間中的形態。

Bump Mapping VS Normal Mapping在遊戲開發中的運用

因為有了空間高度的凹凸資訊,我們可以把一張法向量貼圖,貼到一個低面數(low poly-count)的模型上,當然前提是你要有該模型的多面數版本(high poly-count)才能萃取出其法向量貼圖。圖四展現了一個低面數模型(左),與其apply法向量貼圖後的效果(右)。

圖四。圖片來源:3dkingdoms

觀察圖四,有了法向量貼圖後的模型,擁有了原先低面數模型未有的細節,但多邊形的量(poly-count)卻沒有增加。法向量貼圖的此一特點,在現今的遊戲開發過程中,已經成為必要利用的一環。開發者可以使用低面數的模型,來達到高面數模型的效果,同時卻不傷害遊戲執行的效率。此一技巧,筆者稱之為幻術。換言之,法向量貼圖能夠模擬高細節的效果,但揭開面紗之後,藏在其下的模型卻是如此簡單。

還有一種貼圖方法稱Bump Mapping,在遊戲開發與 3D動畫中的應用也相當廣泛。Bump Mapping 又稱凹凸貼圖,其基本原理跟法向量貼圖非常類似,不同的地方在於凹凸貼圖使用灰階(Grayscale)的圖片來儲存物體表面的凹凸高度訊息。

還有一點不同的是,法向量貼圖是preprocess的資料形態,在遊戲引擎中或是3D applications的output較快,但消耗硬體資源,需要較多空間或是記憶體來儲存(因為空間訊息儲存在 RGB中)。而凹凸貼圖則是屬於 post processing, 通常output較慢,但對硬體資源的負擔較低,因為相對法向量貼圖來說只需要儲存灰階就可以了。

圖五為凹凸貼圖的演示,讀者可以觀察到右邊的球搭配上灰階的凹凸貼圖之後,整個表面產生像磚塊般的突起。但讀者可以仔細觀察球體的邊緣,還是相當平滑,並沒有像磚塊一樣凹凸不平,這就是筆者將此類貼圖技巧稱為幻術的原因。Bump mapping與 normal mapping並不牽涉多邊形的physical change,只是在視覺上作文章而已。

圖五。圖片來源:Chi-Feng

近年因為遊戲引擎與硬體的長足進步,使normal mapping這項技術被大量運用在遊戲與 3D動畫的製作中,bump mapping反而漸漸的式微了,許多知名遊戲如:〈Half-Life2 〉、〈Far Cry2〉 、〈Call of Duty〉系列 與〈Gears of War 〉系列都大量在人物、場景與物品中運用normal mapping。圖六再次演示法向量貼圖在遊戲中的效果。

圖六。圖片來源:iphonefreakz.com

在3D圖學中,產生法向量貼圖的方法有兩種計算方式:Tangent Space與Object Space,其中的差別在如何在3D application中產生法向量貼圖。在筆者下一篇文章:《遊戲開發時不可缺的幻術師 - Normal Mapping(二)》中會繼續闡述。

«

»

科技島讀-你的未來趨勢嚮導

有物推出新產品囉!

由有物報告團隊製作的最新產品-科技島讀

透過閱讀科技島讀,你將能夠掌握科技趨勢,從更高的視角觀察科技將如何改變世界。

現在就前往 >> 科技島讀