我想我有一个独特的问题。我有两个对象。一个是静态的立方体。我也有一个我想移动的球体。我的 gluLookAt 是:
float theta = (float) Math.toRadians(yRot);
float phi = (float) Math.toRadians(xRot);
glu.gluLookAt(Math.sin(phi) * Math.cos(theta) * cameraMovementRadius, Math.sin(phi) * Math.sin(theta) * cameraMovementRadius, Math.cos(phi) * cameraMovementRadius, 0, 0, 0, Math.cos(theta), Math.sin(theta), 1);
这只是将相机沿球形路径定位。现在,无论我从哪个角度看立方体,我都想始终沿视平面移动球体。例如:如果我从 phi = 30 & theta = 85 看立方体,那么球体的向前和向后运动应该垂直于视图平面而不是朝向原点(如下图所示)。我如何实现这一目标?我要做的就是改变球体的导航。
|
|
| Forward & Backward movement of sphere
|
|
---------------- View Plane
(Forward & Backward movement viewed from top)
___________ Left & Right movement of sphere
---------------- View Plane
(Forward & Backward movement viewed from top)
更新:我能够通过找到平行于视线(相机位置和原点)的方向矢量来实现向前向后移动。但是,我不能做垂直运动。我知道垂直向量的数量是无限的,但我只需要将它向左或向右、向上或向下移动。也许我没有以正确的方式看待问题!?!