2012-11-03 200 views
2

我想製作一個簡單的遊戲引擎,但當我試圖將2D鼠標座標映射到我的世界中的3D座標時,我陷入了一個困境。基礎遊戲有一架飛機作爲地面,因爲它將會是(有希望隨着時間的推移)RTS遊戲引擎。2D到3D地圖OpenGL

我的問題是,我不能真正拿出任何有用的東西。飛機位於0,-100,-300點,大小約爲1000x1000。我的相機在0,0,0,場景旋轉60度,給人一種「鳥眼」凸輪的印象。

我在想三角方程,我知道我的相機的高度和角度,可能計算距離會給我正確的座標,但這只是一個想法。

有人請給我一些建議嗎?

+0

你對飛機位於(0,-100,-300)點的確切含義是什麼?嘗試使用包含點和法線向量來指定它。但是,你說的使用三角函數是正確的。 –

+0

問題是我想移動我的建築物,這就是爲什麼我需要座標。 – SPL

+0

所以基本上你需要將鼠標座標變換爲遊戲世界的「地面」座標?標題會誤導人們:這是2D到2D的轉換。 – SoonDead

回答

0

你可以用簡單的光線投射來做到這一點。

首先,使用gluUnProject,可以獲得對應於鼠標指針的2D窗口座標的3D世界座標m

給定相機位置e = (0, 0, 0),可以計算鼠標光線方向r = m - e

現在,給定點p在飛機上和飛機正常n,你可以計算intersection of the mouse ray with the plane

+0

謝謝。你能告訴我一個更新的功能使用嗎?也許可以! – SPL

+0

我不知道任何「新」功能。如果您正在尋找更高級別的效用函數集,請查看其他(開源)場景圖,渲染引擎或遊戲引擎,例如[OGRE](http://en.wikipedia.org/wiki/OGRE )。 – mrucci