(转)计算切线空间
切線空間:
因為顯卡一般是以三角形作為最小渲染單位的,我們假設三角形的三點為p1, p2, p3,設該三角形所對應的一個空間為(T,B,N), 其中T和B構成的平面就是三角形所在平面, 而T和B分別對應U和V方向,此空間
的作用是讓任何向量從tangent space變換到world space(實際上我們最終要求的是反過來的,先這樣好作說明,最后求逆即可)
那么P2-P1的向量p必定在T及B所構成的平面上,由此推出:
P2-P1 = (U2-U1)*T+(V2-V1)*B
P3-P1 = (U3-U1)*T+(V3-V1)*B
設v1=P2-P1; v2=P3-P1; s1=U2-U1; s2=U3-U1; t1=V2-V1; t2=V3-V1
整理得出如下矩陣:
|v1|???? |s1? t1?|???? |T|
|?? | =? |????? ? ? | *? |? |
|v2|?? ? |s2? t2?|???? |B|
v1 v2 s1 s2 t1 t2都是已知的,這樣即可求得T和B,而N我們就用T和B的叉乘即可得到。
最后要T和B和N反過來作用向量從world space變換到tangent space, 我們只要對其求逆即可。
好了,有了這個,我們在作Normal map等處理時就可讓光線變到切線空間中再乘上Noraml圖中的法線即可。
總結
- 上一篇: postfix+postfixadmin
- 下一篇: rhel5下samba的配置