法線貼圖怎么用 法線貼圖原理( 二 )


法線是一個方向 , 我們需要三個不同的變量來讀取三維空間中的方向 , 也就是XYZ 。比如我們在XYZ三個軸上都移動一個單位 。如果我們繪制出新的向量 , 我們就有了一個三維的向量坐標 。當然我們可以有很多不同的值 。不同的值對應了向量中不同的點 。
法線貼圖的RGB通道可以包含X、Y、Z通道的向量數據 。紅通道控制光線的左右方向X軸 , 綠通道控制光線的上下方向Y軸 。藍通道模擬模型的深淺Z軸 。我們把向量數據值存儲在像素的RGB顏色通道上 。所以法線貼圖表達的是一種方向信息 , 只存放方向數據 。光線可以通過它表面的方向進行計算 。
向量
向量(也稱矢量)是指具有大小(magnitude)和方向的量 。在游戲中3D向量既可以表示一個方向 , 也可以表示一個點 。

法線貼圖怎么用 法線貼圖原理

文章插圖
法線貼圖怎么用 法線貼圖原理

文章插圖
5三個空間坐標系
坐標系有很多種 , 一般在使用法線貼圖的時候會有幾個選項 , 最常用的就是切線空間法線和模型空間法線 , 當然還有一個比較少用到的世界空間法線 。這三個又可以被理解為世界空間坐標系 , 模型空間坐標系和切線空間坐標系 。
模型空間法線
模型空間保存的是模型空間坐標系中的高模方向 。模型空間是模型的局部3D空間 。向上總是向上 , 向左總是向左 。模型可以被旋轉和位移 , 但模型不能有變形 。
世界空間法線
世界空間保存的是世界坐標系中的高模法線方向 。因此低模取出該點法線就可以直接使用 , 前提是低模的世界坐標系與高模一致 , 不能有旋轉這樣會導致法線方向改變 。
切線空間法線
在一個不同的坐標空間中進行光照 , 法線貼圖向量總是指向這個坐標空間的正Z軸方向 , 所有的光照向量都相對于這個正Z軸方向進行變換 , 而不管最終變換的方向如何 。這樣我們就能始終使用同樣的法線貼圖 。
6烘焙法線概念
【法線貼圖怎么用 法線貼圖原理】基本上來說法線烘焙的好與壞最主要需要考慮三個大的方面 。
軟硬邊(平滑組)
從上面的內容可以知道 , 軟件基本上是使用的點法線 。比如相鄰的兩個點共用了一個法線 , 通過算法就會變成軟邊的效果 。如果法線沒有互相共用 , 單獨的點都有單獨的法線 。這樣就會有多根法線 , 就會變成硬邊的效果 。
法線貼圖怎么用 法線貼圖原理

文章插圖
法線貼圖怎么用 法線貼圖原理

文章插圖
左側的圖像是具有硬邊的模型 。這將導致一些嚴重的問題 , 可以在黃色和藍色星星上看到 。藍色區域計算兩次常規細節 , 黃色區域根本不計算 。右側的圖像是一個具有平滑法線的模型 。這將允許在烘焙法線貼圖時更接近細節 。所以調整低模的軟硬邊會改變烘焙的結果 。
法線貼圖怎么用 法線貼圖原理

文章插圖
法線貼圖怎么用 法線貼圖原理

文章插圖
UV
盡可能把UV的排列方式做到橫平豎直 , 尤其是在烘焙分辨率比較低的法線貼圖時 , 可能會有鋸齒 。一般來說可以倒角解決 。但如果能從源頭規避掉潛在的問題肯定更好 。
同時硬邊需要斷開分離 , 我們知道法線貼圖表達方向是一種方向信息 。兩個不同方向的信息相交重疊到了一個點上 , 就會出現法線貼圖有一到縫 。如果我們把硬邊模型的低模邊緣分離的話 , 通過隔開一定距離(edge padding)就可以解決這個問題 。簡單來說就是給兩個uv shell更多的像素 。
法線貼圖怎么用 法線貼圖原理

文章插圖
法線貼圖怎么用 法線貼圖原理

文章插圖
Cage
Cage的功能就是把作用于cage上使用的平均法線把高模的信息去映射到低模上使用的正常法線 ??梢钥吹饺绻褂密涍吅姹悍ň€方向是會根據模型的大小發生變化 , 也就意味著烘焙是基于法線方向的 , 結果也會發生變化 。而用作cage的平均法線方向沒有發生變化 。因為平均法線是根據兩個面之間的角度去計算 。

推薦閱讀