2014-09-13 75 views
0

我用vecmath.lookatMatrix(eye, center, up)设置了这台相机。
运动正常,向前,向后,向右,向左,这些工作正常。 什么似乎没有工作很好是旋转。带矢量的自由飞行相机 - 如何正确旋转?

我不是在数学真的很好,所以我想我可以在这里失去了一些逻辑,但我想旋转就这样工作的:
周围的Y轴旋转我加/减的值到中心向量的X值
围绕X轴的旋转I向中心向量的的的值添加/ sub值。
例如这里是向右转:center = center.add(vecmath.vector(turnSpeed, 0, 0))

这实际上有效,但有一些奇怪的行为。看起来中心矢量值的x/y越高,旋转越慢。我想这是因为通过添加/减去中心向量它移动太远或类似的东西,我真的想知道实际发生了什么。

其实在写这个,我才意识到这不能这样工作,因为一旦我搬来搬去和旋转了一下,例如我在“半空中”,旋转将是错误的.. ..

我真的希望有人能帮助我在这里。

回答

1

旋转装置,用于OpenGL的载体应该使用matrices完成。线性运动可以通过简单地将矢量相加在一起来执行,但是对于旋转来说,仅仅改变其中一个坐标是不够的......如果是这种情况,您是如何从(X,0,0)方向到( 0,X,0)?
Here是另一个教程,这是C++,但也有Java示例太。
背后有一点数学 - 你似乎熟悉矢量,可能对它们有'感觉',这有助于。
编辑 - 如果你是在OpenGL中正确使用矩阵,你需要熟悉MVP concepts。你有什么东西可以显示(模型),它放置在你的世界(视图)中你正在通过相机(投影)看的地方。

+0

嗯,坦克你的第一篇文章,似乎有趣。 从我的理解我需要乘旋转矩阵的眼睛和中心之间的向量? 只是为了清楚我的意思:http://2.bp.blogspot.com/_ltmZpULxXtI/TSZll_0SASI/AAAAAAAAAeY/nal05L9OOm4/s320/gluLookAt_camera.png 我刚试过,但我觉得我失败了.... – 2014-09-13 22:33:32

+1

我已经添加了一个链接到我的答案,检查出来。 – sfThomas 2014-09-15 07:21:10

+0

我试着用这些矩阵工作,它种工作中途,它只是工作绕Y轴但不THEX轴,我不知道这是否是从我不好动,但我张贴“新“问题是一个新问题。但有人帮助我,所以我会在这里发布一个链接来回答这个问题。 我希望这对你有好处,我很高兴你试图帮助我,我会upvote你的答案。 – 2014-09-15 14:53:08