GLSL中法线贴图的正态模型矩阵计算

Mic*_* IV 2 opengl glsl matrix

我需要计算一个普通的模型矩阵,用于在GLSL着色器中进行法线贴图.我想确保我是对的:当我将视图(相机模型)矩阵与几何模型矩阵相乘时,视图矩阵应该已经被反转了吗?从这里这里找到的在线示例中不清楚.此外,我发现在某些情况下,人们也会转换结果矩阵.为什么?那么在OpenGL中构建普通模型矩阵的正确方法是什么?

目前我是这样做的:

glm::mat4 view = inverse(GetCameraModel());
glm::mat3 normalModelMatr= glm::mat3(view * mesh.GetModel());
Run Code Online (Sandbox Code Playgroud)

这是要走的路吗?

Ste*_*vel 5

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

如果确实进行了非均匀缩放,则矩阵不是正交的,您必须进行逆转置.

您采用顶部3x3矩阵,因为您只需要旋转和缩放法线,而不是平移.

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