頂點法向量從物體坐標系變換到世界坐標系


 3維網格模型的頂點的法向量一開始是定義在模型坐標系中的,在將模型布置在場景中后,根據光照模型計算顏色時需要用到頂點法向量,由於光照都是在世界坐標系中進行計算,這時用到的法向量也應該是定義在世界坐標系中。所以我們需要設法將頂點法向量從模型坐標系中轉換到世界坐標系中。

我們已經知道通過縮放、旋轉、平移三種基本操作合成的model矩陣可以將網格頂點坐標從模型坐標系中轉換到世界坐標系中。那么這個model矩陣是否也可以將頂點法向量轉換到世界坐標系呢?如果不行,那么需要找到一個可以完成這個任務的矩陣。

1.model矩陣是否可以用於轉換法向量

答案:不行

 

如圖所示:圖中的線段AB經過了縮放變換。上圖中點A=(0,1) B=(1,0),法向量N=(1,1);下圖中經過y坐標值放大兩倍的變換后,法向量N=1,2),而向量T=A-B=(-1,2),法向量N’不再與線段AB垂直。

 

注:平移和選擇變換並不會改變法向量與線段的垂直關系。

 

2.尋找用於變換法向量的通用矩陣

2.1 證明一個多邊形的切向量經過model矩陣的變換后也是變換后的平面的切向量

 

如圖:多邊形的其中三個頂點是A,B,C,則多變形的任意一個切向量可以表示為:

T=a*(B-A)+b*(C-A) 

a,b不同時為零

model矩陣為M

所以經過變化后

T=M*T=a*(M*B-M*A)+b*(M*C-M*A)=a*(B’-A’)+b*(C’-A’)

所以經過model矩陣變化的切向量也是變換后的多邊形的切向量

 

2.2 求解

設:在模型空間中,網格的某個三角面的切向量為t,法向量為n.

經過模型矩陣M的變換后,t’=Mtt’仍是變換后的三角面的切向量。假定存在矩陣N,使用N變換法向量n,得到n’=Nn,使得n’是正確的世界坐標系中的法向量。N即是我們所要尋求的矩陣。

法向量垂直於切向量,所以有:

 

所以N是模型矩陣的逆矩陣的轉置。

 

參考資料:《計算機圖形學》第二版 Peter Shirley著 第六章第二節


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM