首页 > 编程之美 > Ogre中精确到三角面的碰撞检测(使用射线查询)
2014
04-04

Ogre中精确到三角面的碰撞检测(使用射线查询)

Ogre中的射线查询一般只能侦测到边界盒(AABB),就像你在下面图片看到的,使用下面的代码就能避免这些。

Ogre中精确到三角面的碰撞检测(使用射线查询) - 第1张  | Jianchihu

初始化射线查询:

射线投射:

得到网格信息:

如果要考虑对处于运动状态物体做碰撞检测,可使用如下的得到网格信息代码(如果运动物体使用硬件蒙皮下面代码会出问题):

总的原理是进行射线查询,然后获取模型mesh顶点与索引信息,将每三个顶点构成一个三角面,将定义好的射线与这些三角面进行相交,得到距离最近的交点,射线发射点与该交点距离即为最近距离,最后返回该最近距离。

具体代码使用大家可以参考MOC这个轻量级的碰撞检测库,官网上有示例,可以很容易的掌握。

最后编辑:
作者:Jianchihu
管理员——低调做事,低调做人

留下一个回复

你的email不会被公开。

This site uses Akismet to reduce spam. Learn how your comment data is processed.