2015-04-20 43 views
-1

如何在openGL中獲取x,y和z的值,是否有任何get函數可以做到這一點? 我做了很多glTranslatef命令,現在我想要窗口中某個座標的x,y值。獲取OpenGL中某個位置的座標

我有一個項目(迷宮遊戲),我想阻止主角穿過迷宮的牆壁。這個想法是通過在迷宮中建立所有有效位置的矩陣來指導角色到特定的路徑。

我試圖給牆壁一個物理屬性有一個剛體,有openGL幫助中的任何已知的庫嗎?

+0

沒有內置在OpenGL功能的鼠標,可推動在場景中的3D位置。你需要自己計算(例如光線投射)。對於牆壁,如果你想給一個剛性的身體,「勾結檢測」。你可以實現你自己的或者使用物理引擎(例如:「bullet physics」) –

回答

0

據我所知,沒有辦法從OpenGL獲取這些值。 但是你有兩種可能性:

  1. 您可以實現一些光線投射獲得位置

  2. 可以使用初始值(XYZ)(我想在你的porgram某些時候,你將有機會獲得並且跟蹤自己的位置glTranslatef,glRotatef,glScalef基本上是矩陣乘法,如果將相同的數學算法應用於CPU的頂點,則應該在3D中獲得相同的位置。對你模型和你想要什麼,這是非常昂貴的...

對於您的問題,您可以使用3D中的任何物理引擎,或者您可以實現自己的庫。對於初學者,我會說你可以創建Axis Aligned Bounding Box(AABB)或者只創建Oriented Bounding Box(OBB)並創建角色的邊框。使用方法2跟蹤CPU上的邊界框不是很昂貴。 您只需要測試玩家的BoundingBox與每個牆的BoundingBox的交集。這裏的瓶頸將是你擁有的牆壁數量。測試所需的時間越多,但您可以使用八叉樹加速測試,並且只會再次測試與您的播放器位於同一子空間中的牆。

http://en.wikipedia.org/wiki/Minimum_bounding_box http://www.euclideanspace.com/threed/animation/collisiondetect/