我是OpenGL的新手。我有这个问题:我有一个非常复杂的场景,我从前面看(默认摄像头位置)。我看到移动相机的方法是使用gluLookAt()函数设置您想要查看的点,并使用glTranslate3f()来移动相机位置。我需要用不同的数据移动相机 - 我的数据不是我想要看的点 - 相反,我有投影平面的数据 - 用观察向量和平面中的点确定。有没有办法使用这些数据设置相机而不是“看”点?
我正在使用ortographic投影(glOrtho()),因此所有内容都投影到投影平面上。
更新: 更确切地说:我所拥有的是飞机上的一个点,我想投射到该点。事实上,我不仅仅是飞机,而是我需要投射的广场。所以我在一个空间的某个地方有一个场景,在某个地方远离那个场景。我想将场景投影到该正方形并在屏幕上显示投影。我希望能让我更清楚地了解我需要实现的东西......而gluLookAt定义了场景中要观察的点以及眼睛的位置。虽然眼睛是空间中的一个点而投影提供透视,但是使用ortographic投影,你没有一个点,你有一个整个正方形可以投影到,所以我该如何定义呢?
更新2: 为了更容易理解我想要实现的目标。这是glOrtho通常做的图像:
这是我想要实现的目标的图像:
答案 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);