有没有一种简单的方法来检测2个GL对象之间的碰撞?例如,glutSolidCylinder& glutSolidTorus

时间:2012-05-02 10:24:55

标签: opengl collision-detection

有没有一种简单的方法来检测2个GL对象之间的碰撞?例如,glutSolidCylinder& glutSolidTorus

如果没有简单的方法,我如何将这些对象引用到它们的位置?

如果我有他们的位置,应该考虑的数学考虑因素是什么?

2 个答案:

答案 0 :(得分:7)

不,没有简单的方法。这些不是GL对象,因为 OpenGL不知道任何对象,因为它不是场景图或几何库。它只是在屏幕上绘制简单的形状,如三角形或点,这正是glutSolidTorus和朋友所做的。它们不构造具有诸如位置等属性的一些抽象对象。他们在屏幕上绘制一堆三角形,使用当前的变换矩阵变换顶点。

当您即将进行碰撞检测甚至只是简单的对象和场景管理之类的事情时,您将无法管理对象,完成位置和几何以及诸如此类的东西,再次仅限OpenGL绘制三角形而没有任何可能构成的抽象对象的概念

一旦您完全控制了对象几何体(由它们组成的三角形和顶点),您就可以自己绘制它们和/或将它们提供给任何碰撞检测算法/库。对于这样的数学上可描述的对象,如球体,圆柱体,甚至是圆环体,您也可以找到专门的算法。但请记住。由你来管理那些具有你喜欢的任何抽象属性的对象,OpenGL只是绘制它们而那些glutSolid...函数只是包含除了简单glBegin/glEnd块之外的其他函数。 / p>

答案 1 :(得分:1)

您需要一些检查和管理碰撞的系统,如果您想坚持使用过剩对象,那么您需要将它们包含在其他类/几何表示中以检查交叉点。

关于物理/碰撞检测的一些有趣的读/链接:

www.realtimerendering.com/intersections.html

http://www.wildbunny.co.uk/blog/2011/04/20/collision-detection-for-dummies/<他还有其他文章,2D的原则可以很容易地扩展到3维

http://www.dtecta.com/files/GDC2012_vandenBergen_Gino_Physics_Tut.pdf

编辑,这本书很好imo:http://www.amazon.co.uk/gp/product/1558607323/ref=wms_ohs_product