一、法線的空間變換原理(源於Shader入門精要中介紹:)
由此得到三個重要公式:
1、如果要對法線做空間轉換,需要法線向量右乘矩陣的逆轉置矩陣。
2、如果是正交矩陣,則直接右乘轉換矩陣:NB=MA->BNA
(注:正交矩陣M定義是MTM=I,即M的各行向量爲相互垂直的單位向量,各列向量也是互相垂直的單位向量)
3、如果不是正交矩陣,但是統一縮放矩陣,則可以直接右乘轉換矩陣和縮放係數的倒數:NB=(MA->BNA)/k
二、關於利用切線空間TBN進行法線轉換:
假設已知切線空間TBN,切線空間的法線Nt,計算世界空間下的法線Nw?
由於TBN是正交矩陣,所以Nw * TBN = Nt;
兩邊左乘TBN-1,Nw=TBN-1 * Nt=NtT * (TBN-1)T;
因爲正交矩陣的逆轉置矩陣等於自身,所以Nw=Ntt * TBN;