3
我是使用GLSL和openGL的新手。目前我使用webgl并修改着色器(vs.glsls和fs.glsl)以了解GLSL和图形编程。我有一个模型,我想缩放,旋转和翻译。缩放和旋转工作正常,但是当我乘上翻译矩阵时,结果很奇怪。我知道这是一个非常基本的问题,但我错过了一些东西,我需要找出答案。 我的模型通过y轴无限延伸。任何帮助将不胜感激。GLSL中的矩阵转换无限延伸
mat4 rX = mat4 (
1.0, 0.0, 0.0, 0.0,
0.0, 0.0, -1.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 0.0, 1.0
);
mat4 rZ = mat4 (
0.0, 1.0, 0.0, 0.0,
-1.0, 0.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0
);
mat4 eyeScale = mat4 (
.50,0.0,0.0,0.0,
0.0,.50,0.0,0.0,
0.0,0.0,.50,0.0,
0.0,0.0,0.0,1.0
);
mat4 eyeTrans = mat4(
1.0,0.0,0.0,0.0,
0.0,1.0,0.0,4.0,
0.0,0.0,1.0,0.0,
0.0,0.0,0.0,1.0
);
mat4 iR = eyeTrans*rZ*rX*eyeScale;
gl_Position = projectionMatrix * modelViewMatrix *iR* vec4(position, 1.0);
}
这是什么意思“结果很奇怪”?请注意,矩阵乘法不可交换。试试'mat4 iR = eyeScale * rX * rZ * eyeTrans;'。也许[旋转多部分对象](https://stackoverflow.com/questions/46720166/rotating-a-multipart-object/46722875#46722875)或[OpenGL移动对象并保持转换](https://stackoverflow.com/问题/ 46720166/rotate-a-multipart-object/46722875#46722875)也可以提供帮助。 – Rabbid76
@ Rabbid76我再次尝试,结果相同。不是翻译模型,而是延伸模型。我会在问题中添加一张图片,以便您可以看到结果。 – femchi