Opengl GLSL中法线映射的法线模型矩阵计算

Opengl GLSL中法线映射的法线模型矩阵计算,opengl,matrix,glsl,Opengl,Matrix,Glsl,我需要计算一个法线模型矩阵,以便在GLSL着色器中进行法线映射。我想确保我在这一点上是正确的:当我将视图(相机模型)矩阵与几何模型矩阵相乘时,视图矩阵应该已经反转了吗?从网上的例子来看,这并不清楚,比如找到的和。此外,我看到在某些情况下,人们也会转置结果矩阵。为什么?那么,在OpenGL中构建普通模型矩阵的正确方法是什么 目前我是这样做的: glm::mat4 view = inverse(GetCameraModel()); glm::mat3 normalModelMatr= glm::ma

我需要计算一个法线模型矩阵,以便在GLSL着色器中进行法线映射。我想确保我在这一点上是正确的:当我将视图(相机模型)矩阵与几何模型矩阵相乘时,视图矩阵应该已经反转了吗?从网上的例子来看,这并不清楚,比如找到的和。此外,我看到在某些情况下,人们也会转置结果矩阵。为什么?那么,在OpenGL中构建普通模型矩阵的正确方法是什么

目前我是这样做的:

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

这是路吗

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

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

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


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

你已经低于角色限制了。在你的句子之间加一些空格。我的问题现在有什么问题?陈述和可读性。在可读性方面看不到任何问题。此外,欢迎大家使用格式。因此,从您所写的内容来看,我应该暗示,最好还是进行换位,以涵盖进行非均匀缩放的情况?@MichaelIV否。因为在不需要换位的情况下,您会受到不必要的性能影响。非均匀缩放在实践中非常罕见,但我想让你知道它的含义。你的意思是“如果你不做任何非均匀缩放,那就是按相同的量缩放所有轴…”我的措辞有点奇怪。。。我来编辑。但是基本上是的,如果你缩放并且不想做逆转置,你必须沿着每个轴缩放相同的量。你写道,你取3x3矩阵,原始矩阵还是逆转置矩阵?