2

我正在尝试在 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. 原点相机 在此处输入图像描述

  2. 在某种程度上右转在此处输入图像描述

  3. 前进 在此处输入图像描述

4

2 回答 2

4

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

您的头部位于前 3 个参数中的坐标处。

您在阅读本文时正在查看的对象是屏幕,第二个 3 个参数

对于您目前阅读的向上向量的文本,最后一个参数接近 (0, 1, 0) 现在阅读以下内容:

在此处输入图像描述

于 2013-02-13T12:05:05.753 回答
3

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

于 2013-02-13T06:43:07.980 回答