这与另一个问题中描述的问题有关(图片在此):Opengl shader problems - weird light reflection artifacts
我有一个.obj导入程序,它创建了一个数据结构并计算切线和副切线。这是我的对象中第一个三角形的数据:
我对切线空间的理解是,法线从顶点向外指向,切线垂直(正交?)于法向量,并朝着纹理中S轴的正方向指向,而副切线则垂直于两者。但我不确定应该如何称呼它,我认为这3个向量形成了旋转或变换后的x、y、z轴,它们不会是3个随意定向的向量,对吧?
此外,我的理解是:法线贴图中的法线提供一个新的法向量。但在切线空间纹理映射中,RGB编码的法向量与每个顶点的法向量之间没有内置的方向。因此,您需要使用TBN矩阵来弥合差距并将它们放在相同的空间中(或以正确的空间获得光照)。
但后来我看到了对象数据...我的结构有270个顶点,它们都有0的切向量Y值。这对于切向数据来说正确吗?它们是在像顶点法线空间之类的空间中吗?还是它们看起来完全错误?或者我对其工作原理的理解有误,我的数据是正确的?
要更接近解决我在其他问题中的问题,我需要确保我的数据正确,并了解切线空间光照数学的工作原理。
![Data Structure](https://istack.dev59.com/A2bey.webp)
此外,我的理解是:法线贴图中的法线提供一个新的法向量。但在切线空间纹理映射中,RGB编码的法向量与每个顶点的法向量之间没有内置的方向。因此,您需要使用TBN矩阵来弥合差距并将它们放在相同的空间中(或以正确的空间获得光照)。
但后来我看到了对象数据...我的结构有270个顶点,它们都有0的切向量Y值。这对于切向数据来说正确吗?它们是在像顶点法线空间之类的空间中吗?还是它们看起来完全错误?或者我对其工作原理的理解有误,我的数据是正确的?
要更接近解决我在其他问题中的问题,我需要确保我的数据正确,并了解切线空间光照数学的工作原理。