|
|
float3x3 TBN;
TBN[0] = tangentL;
TBN[1] = binormalL;
TBN[2] = normalL;
// Matrix transforms from object space to tangent space.
float3x3 toTangentSpace = transpose(TBN); //为什么要转置TNB 的3x3矩阵?
// Transform eye position to local space.
float3 eyePosL = mul(float4(gEyePosW, 1.0f), gWorldInv); //然后这里变换视线向量到切线空间
// Transform to-eye vector to tangent space.
float3 toEyeL = eyePosL - posL;
outVS.toEyeT = mul(toEyeL, toTangentSpace);
。。。
线性代数学的不好,空间思维能力有限,向量和矩阵相乘把一个坐标变换到另一个空间的坐标,意义很明确
可为什么要转置?想了一上午,对它的几何意义始终没想明白
望过来人指点一二。
|
|