是的,您可以使用gluLookAt
命令设置视图位置。如果您查看 OpenGL 常见问题解答,有一个问题与您的问题最相关:8.060 如何使相机围绕场景中的某个点“运行”?
您可以通过平移/旋转场景/对象并将相机留在同一位置来模拟轨道。例如,要围绕放置在 Y 轴某处的物体进行轨道运行,同时不断查看原点,您可以这样做:
gluLookAt(camera[0], camera[1], camera[2], /* look from camera XYZ */
0, 0, 0, /* look at the origin */
0, 1, 0); /* positive Y up vector */
glRotatef(orbitDegrees, 0.f, 1.f, 0.f); /* orbit the Y axis */
/* ...where orbitDegrees is derived from mouse motion */
glCallList(SCENE); /* draw the scene */
如果您坚持物理环绕摄像机位置,则需要先转换当前摄像机位置矢量,然后再将其用于查看转换。
无论哪种情况,我都建议您调查 gluLookAt()(如果您还没有使用此例程)。
请注意 gluLookAt 调用:作者将相机位置存储在 3 值数组中。如果您这样做,您将能够完全按照您的需要在绝对坐标中指定您的视点。
注意:如果您移动眼睛位置,您可能还需要指定视图方向。在此示例中,作者决定将视线集中在点 (0, 0, 0) 上。
这个问题很有可能与您尝试做的事情有关:Java OpenGL bindings 中的 GLU.gluLookAt 似乎什么都不做。