頂點的法線變換

2021-08-27 19:16:18 字數 698 閱讀 6825

在圖形學中,同樣的乙個模型檢視變換矩陣可以用來變換點、線、多邊形以及其它幾何體,也可以變換多邊形表面的切向量。比如:

poseyespace = modelviewmatrix * posmodelspace。

但是,同樣的方式通常卻不能夠用於法線的變換(注意:在有些情況下是可以的)。

一、法線和頂點座標的區別

頂點座標表示預設的,而法線向量的表示預設的。

法線向量只能保證方向的一致性,而不能保證位置的一致性。

下面我們通過乙個例子來看看問題所在。

上圖是針對乙個多邊形以及一條邊上的法線進行縮放變換:x軸上縮放為原來的0.5倍。左邊是變換前的狀態,中間是將同樣的模型變換矩陣應用在法線上的結果,顯然是錯的,法線並不垂直於切線。最右邊的圖是正確的結果。

二、法線變換:應該用變換矩陣的逆轉置矩陣

假設model space中的某條切線向量是t,法線向量是n。那麼由他們是垂直的可得到:ttn=0

假設他們變換到eye space中後分別是t'和n'。那麼他們應該仍然是相互垂直的:t』tn』=0

假設切線向量和法線的變換矩陣為m、g。則有:(mt)t(gn)=0

進一步推出:ttmtgn=0

由於ttn=0,因此我們猜想mtg=0.因此:《注:我覺得這裡該寫 mtg=e. e:為單位矩陣》

g=(m-1)t

即:應用於法線向量的變換矩陣是頂點變換矩陣的逆轉置矩陣。

頂點法線和面法線

在3d世界中每乙個頂點都有顏色,除了使用光源和物體的材質資訊之外,還需要知道每個頂點的法向量,根據光照入射方向和法向量的夾角,計算頂點的最終顏色.那麼我們來了解下頂點法線.頂點法線 每乙個頂點都有法向量,就能知道光線到達物體表面的入射角.面法線 垂直乙個平面的直線叫麵法線 一般情況下頂點法線和面法線...

自動計算頂點緩衝中所有頂點的法線

問題 當繪製自定義的結構時,你會發現光照不正確。這是因為你沒有指定正確的法線向量,顯示卡要求每個頂點都有法線資訊,這樣它才可以決定每個三角形獲得多少光照,詳細資訊可見第六章。為每個頂點計算法線向量看起來很複雜,因為大多數頂點被多個三角形共享。如果每個頂點只被乙個三角形使用,你只需找到三角形的法線向量...

自動計算頂點緩衝中所有頂點的法線

當繪製自定義的結構時,你會發現光照不正確。這是因為你沒有指定正確的法線向量,顯示卡要求每個頂點都有法線資訊,這樣它才可以決定每個三角形獲得多少光照,詳細資訊可見第六章。為每個頂點計算法線向量看起來很複雜,因為大多數頂點被多個三角形共享。如果每個頂點只被乙個三角形使用,你只需找到三角形的法線向量 換句...