【发布时间】:2012-04-27 02:11:13
【问题描述】:
所以我可以更好地理解事情,我试图摆脱调用 gl 转换函数(glTranslatef / glRotatef 等),而是创建自己的矩阵并使用 glMultMatrixf()。
我为 x/y/z 旋转创建的矩阵似乎完美无缺,但我的平移矩阵似乎将我的网格的所有顶点折叠成一个轴。
我认为传递矩阵是否偏离了基础:
{ 1.0f,0.0f,0.0f,x
0.0f,1.0f,0.0f,y,
0.0f,0.0f,1.0f,z,
0.0f,0.0f,0.0f,1.0f };
到 glMultMatrixf 和做 glTranslatef(x,y,z) 一样吗? (我是专栏专业的。为了确保我没有完全倒退,我转置了上面的矩阵,但它仍然没有工作。只是似乎把所有东西都压平到不同的轴上。)
我是否在某处缺少规范化步骤?何时对矩阵进行归一化是个好主意。
提前感谢您向我提供一些知识!
这些是我的旋转矩阵: X轴
{ 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, (float) Math.cos(x), (float) -Math.sin(x), 0.0f,
0.0f, (float) Math.sin(x), (float) Math.cos(x), 0.0f,
0.0f, 0.0f, 0.0f, 1.0f };
Y轴
{ (float) Math.cos(y),0.0f,(float) Math.sin(y),0.0f,
0.0f,1.0f,0.0f,0.0f,
(float) -Math.sin(y),0.0f,(float) Math.cos(y),0.0f,
0.0f,0.0f,0.0f,1.0f };
Z轴
{ (float) Math.cos(z),(float) -Math.sin(z),0,0,
(float) Math.sin(z),(float) Math.cos(z),0,0,
0.0f,0.0f,1.0f,0.0f,
0.0f,0.0f,0.0f,1.0f };
【问题讨论】:
标签: android opengl opengl-es-2.0 3d