遊戲開發時不可缺的幻術師-Normal Mapping(二)

遊戲開發時不可缺的幻術師-Normal Mapping(二)

Object Space 物件空間法 v. Tangent Space 切線空間法

這星期筆者與各位讀者分享兩種產生法向量貼圖的方式:物件空間法(Object Space)與切線空間法(Tangent Space)。這兩者有何不同呢?圖一解釋了使用物件空間法所產生的法向量貼圖的特點,在圖一中, A跟B是兩片四邊形,虛線箭頭則是代表法向量,但B的法向量為了解釋物件空間法而被刻意傾斜了。

記得上星期〈遊戲開發時不可缺的幻術師-Normal Mapping(一)〉一文中提到法向量與光源的關係嗎?在圖一的左邊,雖然A與B兩片四方形在同一水平面上,但卻因為法向量的角度不同,陰影在A與B兩片四方形上產生不同的變化,因此B四方形較暗。圖一右側的B四方形朝順時針方向旋轉後,陰影的濃淡卻沒發生變化,這即是因為物件空間法的緣故。物件空間法的法向量一旦設定好就不會改變。換句話說,它們不會因為物體的變形或是移動而產生相對應的變化。

 

圖一:Object Space 物件空間法

圖片來源:pixologic.com

圖二解釋了使用切線空間法產生的法向量貼圖的特點。圖二的設定幾乎跟圖一是完全一樣的,卻因為使用切線空間法的緣故,法向量會隨著物件的變形(旋轉、縮放或是移動)做出對應的變化。圖二右側的B四方形的陰影比之圖一的右側,較為正確,較能夠反映真實世界的情況。

 

圖二:Tangent Space切線空間法

圖片來源:pixologic.com

為什麼切線空間法所產生的法向量會隨著物體的變形而發生變化呢?圖三簡單解釋了其基本原理。在圖三中我們可以發現圓球的表面有許多藍色的點,這些點在3D圖學與3D applications中稱為vertex。球的左方有一個網格所構成的平面,所謂切線空間法就是求圖三中的平面與圓球接觸的那一個點(在圖三中以紅點表示)的法向量。使用同樣的方式,我們可以求出在圓球上任何一點的法向量。切線空間法就是使用這一個原理,嘗試求得所有vertex的法向量,所以說即使物體變形了,使用切線空間法還是能夠獲得正確的照明與空間資訊。

假設一個會變型物件採用了物件空間法的法向量貼圖,可想而知其表面凹凸與陰影照明的表現,對比真實世界的陰影照明關係,絕對是有出入的。換句話說,採用切線空間法的法向量貼圖的結果會比較接近真實世界的情況。

 

圖三:切線空間法向量的計算

圖片來源: xnainfo.com

在了解了物件空間法與切線空間法的不同之後,我們不難推斷兩者的應用範疇。通常有動態表現的物件,如動畫角色,遊戲中的怪物或是關卡裡的機關動態,其模型的法向量貼圖通常是使用切線空間法產生。而遊戲或是3D電影中靜態物品的法向量貼圖,通常是採用物件空間法產生。不過根據筆者的經驗,切線空間法的法向量貼圖是目前的主流,因為其法向量會隨物體變形而變化的特點,所以很容易重複使用。同時遊戲引擎如UNreal對切線空間法的法向量貼圖支援比較完善。

如何在Maya產生切線空間與物件空間的法向量貼圖

在Maya中將模組切換至Rendering模組,如圖四

圖四:在Maya切換至Rendering模組

圖片來源:Chi-Feng

在Lighting/Shading的下拉式選單中,選擇Transfer Maps。如圖五。

圖五:在下拉式選單中選擇Transfer Map

圖片來源:Chi-Feng

在Normal 的選向中,於Map space的選項中,我們可以發現物件空間跟切線空間的兩個選項。同時我們可以在File format的選項中發現DDS的檔案類型。DirectDraw Surface graphics (DDS)是一種檔案格式,在DirectX SDK經常使用。DDS的檔案類型是針對即時成像與渲染的應用程式(電玩遊戲)所設計的。根據筆者的經驗,比之TGA或是TIFF,此檔案類型的法向量貼圖效果較好。更多關於DDS檔案類型的資訊,請參考這個連結

 圖六:兩種檔案類型可供選擇

圖片來源:Chi-Feng

所謂內行看門道,在了解法向量貼圖與兩種不同的產生方式,相信讀者對遊戲開發者的skill sets又有更多了解。法向量貼圖在遊戲開發中已經是必要的一環,下次讀者在玩遊戲時,不妨仔細觀察遊戲中的角色或是場景,不知您是否會開始懷疑您所看到的,是高解析度的模型,還是法向量貼圖創造出來的幻術呢?

«

»

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

有物推出新產品囉!

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

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

現在就前往 >> 科技島讀