Tangent Space的基向量計算方法

2021-08-07 21:02:33 字數 2000 閱讀 8069

對於乙個normal texture的圖示,他裡面所有畫素上的normal vector都在u,v,n座標系上的,這也就是tangent space:

當將乙個normal texture貼到mesh上後,單考慮乙個vertex,他對應於normal texture上的乙個點(具體在哪由這個vertex的texture address u-v指定),而他的法向量就對應了tangent space中的n,經過該vertex,垂直於n可以構造出tangent space中的u-v平面,這實際上也就在object space中構造出了tangent space。如圖所示,v1為該頂點,淡藍色矩形框平面為對應的u-v平面:

在object space和tangent space兩個座標系下進行座標變換必須找到這兩個座標系之間的過渡矩陣。

根據變換等式

*t =

: 為object space中的基向量,實際上就是乙個單位矩陣

t             : 過渡矩陣

: 為tangent space的基向量

可見t = 構成的矩陣,所以這裡要求的就是這三個基向量

zt這裡就是這個vertex上的n。xt,yt分別對應於u,v兩個基向量,這是後面要求的兩個向量。

根據乙個********上面的貼圖,可以構建這個模型:

記:vertex1 : v1(x1, y1, z1), t1(u1, v1), n1(nx1, ny1, nz1)

vertex2 : v2(x2, y2, z2), t2(u2, v2), n2(nx2, ny2, nz2)

vertex3 : v3(x3, y3, z3), t3(u3, v3), n3(nx3, ny3, nz3)

記: t21 = t2-t1 = (u21, v21)

t31 = t3-t1 = (u31, v31)

v21 = v2-v1

v31 = v3-v1

則有v21_ = v21-v21*n1*n1                        v21*n1*n1是v21在u-v平面上的投影向量

v31_ = v31-v31*n1*n1

v21_和v31_分別為v21和v31在u-v平面上的投影向量

在圖中的

v21 = len(v21)*nor(v21_)

v31 = len(v31)*nor(v31_)

len()為計算對應向量的長度,nor()為單位化對應向量,

v21 和

v31 分別為將v21和v31"拉到"u-v平面上去的向量。

根據在tangent space和object space兩個空間是同構的,可以列出下面的等式:

u*u21 + 

v*v21 = 

v21u*u31 + 

v*v31 = 

v31解該方程,得到

u,v,並單位化兩個向量

通過上面的過程也就得到了--->過渡矩陣t。

得到過渡矩陣t後,就可以任意的轉化兩個座標系中的座標。

其他:1:並不一定是標準正交基,所以t的轉置矩陣並不一定等於t的逆矩陣。u,v的關係如何這要取決於上面的三個頂點的t1,t2,t3。

2:上面的計算過程是基於vertex的,可以採用基於乙個********的計算方法,過程和上面是一致的,不同點在於這個時候u,v平面和********平面重合。

3:在directx中有d3dxcomputetangent api對計算這三個基向量的支援。但是在他的描述中使用的是tangent vector(也就是u),binormal vector(也就是v)和normal vector(也就是n),且b = n cross t

計算三角形網格的tangent space

點的內容看的還不是太清楚 b。另外,目前的演算法還不能完美處理映象或者在紋理不連續處可能出現的 問題,就算在farcry中,很多問題也是通過美工來 隱藏 的,再一次應證了之前對美工重要性的結論 演算法 tangent space 在bump map中有著重要作用,通常需要把燈光轉換到tangent ...

CAMB中檢視波矢的取值範圍

角功率譜對波矢的積分是從0到無窮大的,但實際上camb中並沒有積分如此廣泛,而是有上下限的,因為 首先進入 test camb nov2016 vim power tilt.f90中,對f.90檔案增加一行命令如下圖 紅色方框表示的是建乙個字尾為123的檔案,輸出k,write的格式為 write ...

向量網路分析儀(矢網)的校準

一 誤差分析 網路分析儀測試過程中的誤差主要分為三類 系統誤差 隨機誤差 漂移誤差。1 系統誤差是由於儀表內部測試裝置的不理想引起,它是可預示和可重複出現的。由於是不隨時間變化的,從而可以定量進行描述。系統誤差可在測試過程中通過校準消除。2 隨機誤差是不可預示的,因為它以隨機形式存在,會隨時間變化,...