我可以将当前渲染位置设置为任意值,而不是仅仅从当前位置给它一个偏移量吗?
这就是我目前正在做的事情:
gl.glTranslatef(3.0f, 0.0f, 2.0f);
它允许我说“我想向左移动”而不是“我想移动到点(2,1,2)”。有没有办法做后者?
我正在使用带有JOGL的OpenGL。
更新:
@Bahbar建议如下:
gl.glLoadIdentity();
gl.glTranslatef(...);
当我这样做时,除了六行之外的所有内容都会消失。我不知道为什么。我遇到的问题是远剪裁平面太近了,所以也许他们离得太远而无法渲染。
答案 0 :(得分:5)
是。从身份矩阵开始。
gl.glLoadIdentity();
gl.glTranslatef(...);
答案 1 :(得分:0)
是的,您可以使用gluLookAt
命令设置视图位置。如果您查看OpenGL常见问题解答,则会出现与您的问题最相关的问题:8.060 How do I make the camera "orbit" around a point in my scene?
您可以通过模拟轨道 平移/旋转场景/对象 并保持相机相同 地点。例如,绕物体运行 放在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)上。
这个问题很可能与您尝试做的事情有关:GLU.gluLookAt in Java OpenGL bindings seems to do nothing。