[图形学]切向空间(Tangent Space)
??? 這個應該算是補遺漏,去年在MSN Space上寫過一篇關于凹凸貼圖的,當時寫了半天其實寫的一點也不明白,呵呵,因為有很多細節(jié)其實我也沒搞太清楚,現(xiàn)在這里發(fā)一點關于其中一個用來完成凹凸貼圖計算中將光向量轉向頂點所在的切向量的細節(jié),這個在當時的例子中是通過API實現(xiàn)的,這里簡單描述一下原理,以下翻譯自OpenGL.org中關于Tangent Space的闡述。?
???? 為了能夠正確的完成凹凸貼圖中偏移的計算,光向量L必須轉換到切向空間中,所謂的切向空間包括3個軸:T,B和N。其中T是該點切線向量,平行于參數(shù)曲面上S方向上的增量(我理解應該就是在多邊形曲面上的切向方向吧);N是該點法線向量,垂直于局部平面;B(Binormal)是副法線,同時垂直于N和T,并且和T確定了切平面。這三個向量確定的一個空間坐標系就是傳說中的切空間,如果所處的表面是曲線,那么切空間在每一個頂點上都應該是變化的。
??? 既然光源必須轉換至表面中每一個頂點的切空間,那么下面的問題就只有一個,如何能夠正確的計算出每一個頂點的切空間呢?我們可以使用頂點的法線向量作為N;然后使用模型的局部坐標系中的S方向上的增量(模型空間中材質的S軸方向上)作為切線方向(這一塊還是不太明白他的意思,用增量的極限來表示切線沒有錯,但是怎么實現(xiàn)的好像沒說明白,可能是我還處于初級階段吧,呵呵,不過在D3D中是有可以僅通過法線向量來計算切線空間的API的);然后B可以通過N和T的叉乘計算求得,單位化后的三個向量可以組成一個旋轉矩陣:
??? ??
??? T,B,N分別作為空間內的X,Y,Z軸。它可以將向量從局部空間坐標系轉換至切空間坐標系,如果T,B,N是在觀察空間內定義的,那么就可以使用它來完成觀察空間到切空間的轉換。在非平整的表面上,每一個頂點所對應的矩陣自然也都是不同的。
??? 有了這個矩陣我們就可以將光向量變換到每個頂點自己的切空間內了,來計算光給每個頂點的漫反射和鏡反射的不同影響了。
??? 這就是在各種貼圖技術中很重要的切空間了~。
???
總結
以上是生活随笔為你收集整理的[图形学]切向空间(Tangent Space)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XML中的CDATA是什么
- 下一篇: 关于工厂模式(三)