在免费相机的情况下gluLookat

时间:2013-02-13 06:23:59

标签: opengl

我正在尝试在3D空间制作免费的旅行相机。 glulookat函数如下所示:

 gluLookAt(g_eye[0],g_eye[1],g_eye[2],
           g_look[0],g_look[1],g_look[2],
           0,1.0,0    
        );

前三个坐标只是相机位置。最后三个坐标是关于相机的旋转。

似乎第二个三个坐标是关于相机的位置。

但我真的不明白为什么我们需要第二个三坐标。这将如何影响我们的观点?

例如: 如果相机从原点开始,则相机向右旋转30度,然后在-Z方向上平移10。然后我知道相机现在在哪里。但是我应该把它放到后三个坐标中呢?

  1. 原点相机 enter image description here

  2. 在某种程度上向右转enter image description here

  3. 继续前进 enter image description here

2 个答案:

答案 0 :(得分:4)

  

但我真的不明白为什么我们需要第二个三坐标。这将如何影响我们的观点?

你的头位于前3个参数的坐标处。

您在阅读时看到的对象是屏幕,第二个3参数

对于你到目前为止读到的文本向上向量,最后一个参数接近于(0,1,0)现在读到这个:

enter image description here

答案 1 :(得分:3)

eye 的位置(前三个坐标)和视点(后三个)定义视线。最后三个坐标 up 向量用于确定围绕视线的旋转角度。 OpenGL中的旋转需要轴旋转,这是前两组坐标的原因。有关在OpenGL中查看转换的详细信息,请查看here