如何保证切线空间矩阵正确
Posted hpugisers
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何保证切线空间矩阵正确相关的知识,希望对你有一定的参考价值。
针对复杂模型时,切线往往是经过许多顶点计算的,这样就可以得到一个平均值来获得平滑的结果,这样会造成一个问题,那就是T、B、N三个向量可能不会相互垂直了,也就是TBN矩阵不是正交的了。
针对这一问题,我们可以使用格拉姆施密特方法来重新正交化TBN矩阵,在顶点着色器中这么做:
vec3 T = normalize(vec3(model * vec4(aTangent, 0.0)));
vec3 N = normalize(vec3(model * vec4(aNormal, 0.0)));
// 使用N正交化T
T = normalize(T - dot(T, N) * N);
// 叉乘得B
vec3 B = cross(N, T);
mat3 TBN = mat3(T, B, N)
原文链接:https://www.jianshu.com/p/d9c6441585f4
以上是关于如何保证切线空间矩阵正确的主要内容,如果未能解决你的问题,请参考以下文章