我正在尝试让用户在OpenGL ES中向上/向下平移和左/右对象。我正在使用GLKit进行所有绘图和移动。我已启用触摸事件来跟踪用户想要移动对象的方式。我正在使用GLKMatrix4Translate来滑动对象的平移,但由于某种原因它也有一个旋转组件。
我从用户的触摸中收集翻译点并将它们存储在CGPoint中:
CGPoint center;
我使用center.x和center.y作为我要翻译的X和Y位置。我用这一行执行翻译:
GLKMatrix4 modelViewMatrix = GLKMatrix4Translate(GLKMatrix4Identity, center.x, center.y, 0.0f);
有什么想法吗?
答案 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);