一次搞懂「法線貼圖」是什麼!

似懂非懂好幾年😂
ZACK3D|角色創藝學院

ZACK3D|角色創藝學院

2024年3月5日 上午 3:29

預設類別

用Blender創作時,不管是使用下載的資產或是自己創作,或多或少都會接觸到一些PBR材質相關的內容。而PBR的核心,其實就是讓模型在「質感」跟「細節」上更加擬真。(不知道什麼是PBR材質,可以到我的頻道觀看-15分鐘學會PBR材質-觀念篇

「質感」上,我們透過定義材質的金屬度、粗糙度(和其他物理參數),來實現真實物體的反射效果。

「細節」上,則會使用「法線貼圖」,來增加模型的表面細節。

我們知道,當一個模型的面數越高,表示越能做出更豐富的細節。理論上,極高的面數當然可以做出極為真實的模型。但是當我們需要在遊戲或動畫中使用這些資源的時候,過高的面數會對遊戲的容量跟效能產生極大的負荷。這就是為什麼,我們需要找到保持模型效能的同時,也能增加模型細節的解答,而這個解答就是法線貼圖,又稱Normal map

Normal map的作用

不曉得你有沒有看過肌肉衣?不知道的可以去Google一下🤣 Normal map的作用,其實就類似穿上肌肉衣…只不過肌肉衣本身是帶有真實的凹凸浮雕;而Normal Map神奇的地方,在於它不真正改變模型表面,而只是改變模型反射的光影變化,來欺騙我們的眼睛,讓我們以為模型具有這些細節(如果從側面看,就會發現模型其實還是平的,但還是足以讓我們感覺很真實。)

貼上Normal map的模型

Normal map 的原理

要理解Normal Map的原理,首先需要知道我們是如何觀察到模型的細節的。
當光照射到一個物體表面時,光線會與物體的表面結構相互作用(反射、折射或吸收)。而透過觀察光在表面上的反射情況,我們便可以間接地觀察到模型表面的結構和細節

光的反射😂

以上圖為例,男孩手拿一個3D模型的,而光反射的角度,取決於這個面的方向(也就是法向)。當光透過進到我們眼睛裡,我們即可觀察到它(一個面、一個法向、一個反射結果)

前面說到,Normal Map的作用,就像給模型穿上肌肉衣一樣。是經由貼圖的方式,將原本低面數的簡單模型上,上豐富的法線訊息,從而產生更多的細節。

換句話說,原本每一個面只能定義一個法線方向,使用Normal Map後,變成每個像素點都能自由定義任意的法線方向,而達到了保持模型低面數,又增加豐富細節的目的。

相同光源下,一個平面加上法線貼圖後,可以呈現更多細節

而貼圖紀錄法線資訊的原理,則是在每張圖片的RGB色板中,分別記錄向量空間的(X,Y,Z)向量值(好像是高中數學😂),因此每個像素顏色,都可以轉換成數值,指出不同的法向結果。最後,著色器會透過UV映射的方式,將這些法向傳送到模型本身,就完成法線貼圖的任務啦!

如何製作Normal map

最後也來了解一下,最常見的,也是我們最容易接觸到的Normal map製程,就是高低模烘培的方式。

這種製程,需要先準備兩個模型:一個是真正擁有高面數細節的模型(簡稱高模);另一個則是拆好UV的低面數模型(簡稱低模,常經由拓樸高模取得)然後,我們會將這兩個模型疊放在一起,並將高模的法線資訊轉錄到低模上。這個過程就是所謂的烘焙(Baking)。烘焙的原理其實大同小異,但每個軟體的作法不同。之後我會再做影片分享在Blender中烘培的方法😁。

總之,這樣一來,我們就得到了一張法線貼圖,我們的低模就可以透過它模仿出高模的光影效果,在渲染或遊戲引擎中使用囉!

文章標籤

# 教學分享