2015-04-20 32 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/