【发布时间】:2012-12-12 19:30:25
【问题描述】:
在下面查看我的编辑。
我在原点绘制了一个球体。我的相机正在观察半径为 3 个单位的球体。我正在尝试使用 2D 操纵杆使相机绕球体运行。我目前正在使用下面的代码来环绕球体,但我不确定如何让操纵杆控制操纵杆指向的方向的旋转。我的操纵杆提供 0 度向上的角度,当您逆时针移动时,度数上升到 360。操纵杆离中心起点越远,旋转速度就会增加。我只是不知道该怎么做。
PIOVER180 = Math.PI/180;
rho = 3;
theta = (theta+1)%360;
phi = (theta+1)%360;
camera.position.x = (float) (rho * Math.sin(theta * PIOVER180) * Math.cos(phi * PIOVER180));
camera.position.y = (float) (rho * Math.cos(theta * PIOVER180));
camera.position.z = (float) (rho * Math.sin(theta * PIOVER180) * Math.sin(phi * PIOVER180));
camera.normalizeUp();
libGDX 提供了一个不错的 PerspectiveCamera 类,我希望将其扩展为 SphericalCamera,并在需要时使用它来调用我的轮换。
编辑:
我想如果我能弄清楚如何让 2D 操纵杆正确操纵 theta 和 phi 变量,那么它应该可以正常工作。 theta 是正 x 轴与球体上的点之间的角度,phi 是该点在 z 轴上的位置(正或负),rho 是到中心点的距离(0, 0, 0) 到球体上的点(基本上是半径)
【问题讨论】:
-
在场景中使用
glRotate(sensitivity,joystickMovementY,joystickMovementX,0.0f)通常比移动相机更好 -
我正在考虑这样做,但我也会有一堆模型用子弹环绕我的球体。我想改变相机的视角会更容易吗?
-
这样移动相机没有任何问题。只是你最终会实现一堆数学方法,它们完全可以做
glRotate()、glTranslate()等已经做的事情。 -
是的,我想我明白你的意思了哈哈...我希望一旦我设置好它,它会很容易。我实际上已经决定走使用四元数进行旋转的路线,此刻我试图将我的头包裹在它们周围。
-
查看cprogramming.com/tutorial/3d/quaternions.html 和content.gpwiki.org/index.php/… 以获取四元数。第二个链接也有代码示例
标签: java android opengl-es libgdx