我想我有一个独特的问题。我有两个对象。一个是静态的立方体。我也有一个想要移动的球体。我的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)
更新:通过找到平行于视线的方向矢量(摄像机位置和原点),我能够实现向前向后移动。但是,我不能做垂直运动。我知道有无数个垂直向量,但我只需向左或向右,向上或向下移动它。也许我没有以正确的方式看问题!?!