由於須要的論文,最近開始學習OpenGL。因爲剛入門的初學者有這麼總會遇到不少問題,。學習
這些天,好不容易纔OpenGL個問題弄明確了。spa
幾點迷惑:.net
怎樣經過若是方法推斷平面法向量的方向(這裏是指三角面片):code
首先,固然要有數據,就是原始數據中每個面片是由那三個頂點組成。比方現在空間中有一個三角形平面由三個頂點A,B,C組成。blog
接着。就會存在如下兩種狀況,例如如下圖:ip
所以,咱們在程序中僅僅要反着試一次,就會獲得咱們的結果了。get
如下我給出個人部分代碼已經效果圖(斯坦福大學著名的bunny模型):入門
當中,A和B是後面要進行叉乘的兩個向量,point1,point2,point3就是三角面片的三個頂點。class
狀況1:百度
A[X] = point2[X] - point1[X]; A[Y] = point2[Y] - point1[Y]; A[Z] = point2[Z] - point1[Z]; B[X] = point1[X] - point3[X]; B[Y] = point1[Y] - point3[Y]; B[Z] = point1[Z] - point3[Z];
狀況2:
<span style="color:#000000;">A[X] = point3[X] - point1[X]; A[Y] = point3[Y] - point1[Y]; A[Z] = point3[Z] - point1[Z]; B[X] = point1[X] - point2[X]; B[Y] = point1[Y] - point2[Y]; B[Z] = point1[Z] - point2[Z];</span>
從上面兩種狀況可以看出。它們確實是相反的。
本身再實際操做的時候可以去嘗試一下。
計算頂點法向量的過程記錄:
首先,咱們要了解幾個概念,平面法向量(平面上兩個不平行。不共線的向量叉乘獲得),頂點法向量(以這個點爲頂點的所有三角形的法向量之和)。
接着,咱們就可以經過三個頂點求得兩個向量,兩個向量叉乘獲得平面法向量。(平面法向量進行歸一化)
而後,統計每個頂點的所有平面法向量之和。(頂點法向量進行歸一化)
計算,咱們能夠本身用頂點數據頂點的法線,在頂點的法線進行比較,而後,和文件,寫你本身的計算,驗證頂點正常的程序是正確與否。