用GLKMatrix4Translate翻译似乎是关于相机移动而不是原点

时间:2012-01-11 17:57:58

标签: opengl-es translate pan glkit

我正在尝试让用户在OpenGL ES中向上/向下平移和左/右对象。我正在使用GLKit进行所有绘图和移动。我已启用触摸事件来跟踪用户想要移动对象的方式。我正在使用GLKMatrix4Translate来滑动对象的平移,但由于某种原因它也有一个旋转组件。

我从用户的触摸中收集翻译点并将它们存储在CGPoint中:

CGPoint center;

我使用center.x和center.y作为我要翻译的X和Y位置。我用这一行执行翻译:

GLKMatrix4 modelViewMatrix = GLKMatrix4Translate(GLKMatrix4Identity, center.x, center.y, 0.0f);

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我弄清楚这里的问题是什么。我停止使用GLKMatrix4Translate并将其替换为GLKMatrix4MakeLookAt。 GLKMatrix4MakeLookAt允许您移动相机,以提供我想要的效果。

简单地使用此代码会导致我遇到的同样问题。模型在平移时旋转。

GLKMatrix4MakeLookAt(0, 0, 7,
                     center.x, center.y 0,
                     0, 1, 0);

这就是说你想让相机一直看着(0,0,7),中心位于(center.x,center.y,0),y轴朝上。眼睛的指向是问题。如果模型正在旋转(它是),则需要将眼睛指向新旋转的点。

用下面的代码替换上面的代码似乎可以解决问题。

GLKMatrix4MakeLookAt(rotation.x, rotation.y, 7,
                     center.x, center.y, 0,
                     0, 1, 0);