2014-03-12 43 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