2

我需要计算一个法线模型矩阵以在 GLSL 着色器中进行法线映射。我想确保我是对的:当我将视图(相机模型)矩阵与几何模型矩阵相乘时,视图矩阵是否应该已经倒置?从此处此处找到的在线示例中不清楚。此外,我看到在某些情况下人们也会转置结果矩阵。为什么?那么在 OpenGL 中构建法线模型矩阵的正确方法是什么?

目前我这样做:

glm::mat4 view = inverse(GetCameraModel());
glm::mat3 normalModelMatr= glm::mat3(view * mesh.GetModel());

这是要走的路吗?

4

1 回答 1

5

正确的法线矩阵是模型视图矩阵的逆转置。如果您不进行任何非均匀缩放,即按不同量缩放轴,则矩阵的逆矩阵等于它的转置,因为它是正交的。因此,这两个操作抵消了,它只是原始矩阵。

如果你做非均匀比例,矩阵不是正交的,你必须做逆转置。

你取顶部的 3x3 矩阵,因为你只需要旋转和缩放法线,而不是平移。

因此,只要您不采用非均匀缩放,您的法线矩阵就是正确的。

于 2012-12-11T18:42:54.553 回答