本文參考 introduction to 3d game programming with directx 11
在計算機圖形學中法向量的變化跟一般頂點的變化有一定的區別,假設我們有乙個切向量u=v
1−v0
u=v_1-v_0
u=v1−
v0,u
uu與法向量n
nn垂直。如果我們使用乙個矩陣a
aa來進行非均勻縮放,我們可以在下圖中看到由圖(a)到圖(b),變換後的切向量ua=
v1a−
v0aua=v_1a-v_0a
ua=v1
a−v0
a與變換後的法向量nana
na並不垂直。
所以我們的問題就是,給乙個變換矩陣a,這個矩陣用來變換頂點和法向量,我們將找到乙個變換矩陣b,使得用b變換後的法向量能夠與變換後的切向量垂直,(ua
⋅nb=
0)(ua\cdot nb=0)
(ua⋅nb
=0)。我們將使用下面的方法推導出轉換公式:
這裡b=(a
−1)t
b=(a^)^t
b=(a−1
)t(a
aa的逆反矩陣)能夠讓法向量垂直於變換後的切向量uaua
ua。而a
aa的逆矩陣a−1
=1de
t(a)
a∗a^=\fraca^*
a−1=de
t(a)
1a∗
使用directx實現**如下:
頂點法向量的計算
在opengl程式設計中,三維模型頂點法向量的計算很重要,它直接影響著顯示的效果 本人接觸opengl時間不長,很長一段時間一直困惑於法向量計算的問題,後經仔細研究並找了些資料才基本實現了法向量的計算演算法,現總結如下,希望對初學者能有些幫助。大家知道,在opengl中頂點 三角形模型對光照的反射取...
計算三角網格的頂點法向量
原文 前段時間基本上完成了場景編輯器的大部分工作,現在已經可以用它生成自己需要的網格模型了。目前,在編輯器中對生成的網格是指定面的法向量,這對於用場景生成bsp等相關操作已經足夠了。不過為了測試bsp的健壯性,準備實現一下基於bsp的光線跟蹤演算法來看看效果,於是只是指定面的法向量就顯得不太夠用,因...
變換 向量和矩陣
主要使用了 示例程式繪製了乙個在螢幕中間旋轉的線框花托。modelviewprojection.cpp opengl superbible demonstrates opengl the modelviewprojection matrix program by richard s.wright j...