如何在openGL中设置投影平面?

时间:2014-03-12 19:31:19

标签: opengl 3d

我是OpenGL的新手。我有这个问题:我有一个非常复杂的场景,我从前面看(默认摄像头位置)。我看到移动相机的方法是使用gluLookAt()函数设置您想要查看的点,并使用glTranslate3f()来移动相机位置。我需要用不同的数据移动相机 - 我的数据不是我想要看的点 - 相反,我有投影平面的数据 - 用观察向量和平面中的点确定。有没有办法使用这些数据设置相机而不是“看”点?

我正在使用ortographic投影(glOrtho()),因此所有内容都投影到投影平面上。

更新: 更确切地说:我所拥有的是飞机上的一个点,我想投射到该点。事实上,我不仅仅是飞机,而是我需要投射的广场。所以我在一个空间的某个地方有一个场景,在某个地方远离那个场景。我想将场景投影到该正方形并在屏幕上显示投影。我希望能让我更清楚地了解我需要实现的东西......而gluLookAt定义了场景中要观察的点以及眼睛的位置。虽然眼睛是空间中的一个点而投影提供透视,但是使用ortographic投影,你没有一个点,你有一个整个正方形可以投影到,所以我该如何定义呢?

更新2: 为了更容易理解我想要实现的目标。这是glOrtho通常做的图像: glOrtho normal

这是我想要实现的目标的图像: glOrtho question

1 个答案:

答案 0 :(得分:0)

首先,OpenGL中没有摄像头。只有变形,像相机一样假货。

  

用观察向量和平面上的点确定。

让平面中的点为L(如看点),观察向量为D(如方向),则摄像机的位置为L-D。这给出了lookAt:

的参数
lookAt(L.x - D.x,
       L.y - D.y,
       L.z - D.z,
       L.x,
       L.y,
       L.z,
       0, 1, 0);