2014-03-12 36 views
0

我在OpenGL中是全新的。我有这个问题:我有一个相当复杂的场景,我从前面看(默认相机位置)。我已经看到移动相机的方式是使用gluLookAt()函数设置要查看的点,并使用glTranslate3f()移动相机位置。我需要用不同的数据移动摄像机 - 我的数据不是我想要看的点 - 相反,我有投影平面的数据 - 由观看矢量和平面上的点确定。有没有办法使用这些数据来设置摄像机而不是“看”点?如何在openGL中设置投影平面?

我使用的是直接投影(glOrtho()),所以一切都投影到投影平面上。

更新: 更确切地说:我拥有的点是飞机上的一个点,我想投影到这个点上。事实上,我不仅有飞机,而且还有我需要投射的广场。所以我有一个空间的场景,和一个远离那个场景的地方。我想将场景投影到该广场并在屏幕上显示投影。我希望能够让我的表现更清晰一些......虽然gluLookAt在场景中定义了一个点,以及眼睛的位置。虽然眼睛是空间中的一个点,投影提供了透视,但是使用直接投影投影,您没有一点,您有整个正方形投影到哪里,那么我该如何定义?

更新2: 为了更容易理解我试图实现的目标。这里是什么glOrtho照常图像: glOrtho normal

这里是什么,我想实现的图像: glOrtho question

+0

我忘了提:我使用的是ortographic投影,glOrtho() – neuromouse

+0

仅供参考:有在OpenGL – datenwolf

回答

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); 
+0

由于没有摄像头。我添加了一个更新的问题,我可能不是很清楚......因为我使用glOrtho,因此没有一点“眼睛”,而是一个方形投影到哪里,还有其他的glLookAt实现类似功能的方式? – neuromouse