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