一种基于包围盒树法的并行碰撞检测方法

文档序号:8544373阅读:981来源:国知局
一种基于包围盒树法的并行碰撞检测方法
【技术领域】
[0001 ] 本发明涉及一种碰撞检测方法,更具体地说,本发明涉及一种基于包围盒树法的并行碰撞检测方法。
【背景技术】
[0002]在虚拟现实中,用户感觉虚拟对象应该是“真实”存在的,例如飞机不可能穿过一座山飞过去,用户用虚拟手敲打石头时,虚拟手不应穿过石头等。这要求虚拟现实系统必须实时、准确判断虚拟物体之间是否发生了碰撞。碰撞问题涉及碰撞检测与碰撞响应两个方面,其中碰撞检测用来检测不同对象之间是否发生了碰撞。精确的碰撞检测对提高仿真的真实性、可信性,增强虚拟环境的沉浸感有着至关重要的作用,而虚拟环境自身的复杂性和实时性也对碰撞检测提出了更高的要求。碰撞检测算法总体上可分为空间分解法和分层包围盒方法两大类,前者是将整个虚拟空间划分为相等体积的小的单元格,只对占居了同一单元格或相邻单元格的几何对象进行相交计算。比较典型的例子有:八叉树、k-d树、BSP树等。这类方法的特点为:方法复杂、精度高。并行碰撞检测方法就属于这一类。分层包围盒的核心思想是用体积略大而几何特性简单的包围盒来近似地描述复杂的几何对象,从而通过判断包围盒是否重叠来粗略估计两检测对象是否碰撞,此外可以通过构造树状分层结构一步步逼近几何模型,提高检测精度。分层包围盒由于其方法简单、效率相对高,也是一种广泛应用的碰撞检测方法。
[0003]上述的碰撞检测方法自身还存在一些问题:如检测中刺穿现象和遗漏情况等。传统的多物体间的碰撞检测方法一般较为复杂,不能满足实时性的要求,不利于碰撞检测快速实现。基于空间分割技术的空间分解方法,影响该方法效率的一个重要因素是分区的多少,而分区的数目又较难把握。八叉树和其它几何模型在解决碰撞检测的框架之间的几何干涉问题时,不会大幅度提高方法效率。采用分层包围盒技术来加速多面体场景的碰撞检测,但一般的包围盒方法作为一个整体的方法,检测精度低,效率提高并不明显。因此有必要提出一种将两类检测方法的优点能够加以综合,检测精度与效率都有显著提高的碰撞检测方法。

【发明内容】

[0004]本发明所要解决的技术问题是基于这两类碰撞检测方法,综合两类碰撞检测方法的优点,得出改进的结合包围盒的并行碰撞检测方法。
[0005]为了实现上述技术目的,提供了一种基于包围盒树法的并行碰撞检测方法,包括如下步骤:
[0006]步骤S1:提供两个待检测是否发生碰撞的物体;
[0007]步骤S2:建立每个所述物体整体的包围盒,所述包围盒作为所述物体的包围盒树的根节点;
[0008]步骤S3:利用与局部坐标轴垂直的平面将所述包围盒划分成两个子包围盒,即左包围盒和右包围盒,以形成根节点的两个子节点,即左子节点和右子节点;
[0009]步骤S4:对上述步骤得到的所述两个子节点分别递归地执行所述包围盒的分割过程,以得到最终的包围盒树,并且给定最大树深度和叶子节点所包含的几何元素的个数;
[0010]步骤S5:将上述步骤得到的两个物体的所述包围盒树的当前节点两两之间进行检测,判断是否发生碰撞,若发生碰撞,转向步骤S6,否则转向步骤S7 ;
[0011]步骤S6:若所述当前结点为叶子结点,记下该结点,返回,并检测是否发生碰撞;若所述当前结点不是叶子结点,则取所述当前结点的所有子结点作为所述包围盒树的当前结点,递归执行步骤S5 ;
[0012]步骤S7:若所述当前结点无未检测的兄弟结点,表明未发生碰撞,记下所述当前结点后,返回;若仍有未检测的兄弟结点,则依次将下所述兄弟结点作为所述包围盒树的当前结点;递归执行步骤S5。
[0013]作为优选,所述两个待测物体为可以划分成多个四面体,所述四面体之间具有相关性。
[0014]作为优选,所述步骤S6中检测是否发生碰撞的检测方法为空间分解法。
[0015]作为优选,所述空间分解法为八叉树算法或者k-d(k-dimens1nal)树算法或者BSP (Binary Space Part1ning trees,二维空间分割)树算法。
[0016]作为优选,所述包围盒为AABB包围盒(Axis Aligned Bounding Box,矩形盒)或者方向包围盒或者固定方向凸包围盒或者包围球。
[0017]作为优选,设计所述步骤S4的出口为递归深度超过了所述给定的最大树深度。
[0018]作为优选,设计所述步骤S4的出口为所述子节点所包含的基本几何元素个数少于所述给定的叶子节点所包含几何元素个数的最小值。
[0019]作为优选,设计所述步骤S4的出口为所述左、右子节点至少有一个包含的几何元素个数与其父节点所包含几何元素个数相差在10以下。
[0020]作为优选,所述包围盒树的每一个节点包含两个子对象,分别为多面体子对象和包围盒子对象。
[0021]与现有技术相比,本发明的有益效果是:本发明在对两个物体做碰撞检测时,先增加包围盒的方法进行碰撞检测,如不发生碰撞,就无需做下一步检测,如果发生碰撞,则做两个物体精确碰撞检测。在对两个物体做精确碰撞检测时,引入并行的思想,实现了并行碰撞检测。由此将两个物体间的碰撞检测转化为系列四面体间的并行碰撞检测,在保证高精度的前提条件下,有效的满足了碰撞检测的实时要求,提高了检测效率,同时也解决了一般碰撞检测算法只适用于凸多面体的不足。
【具体实施方式】
[0022]为了使本发明的内容更加清楚和易懂,下面结合具体实施例对本发明的内容进行详细描述。
[0023]本发明提供一种基于包围盒树法的并行碰撞检测方法,包括如下步骤:
[0024]步骤1:提供两个待检测是否发生碰撞的物体,所述物体为复杂的多面体;
[0025]步骤2:建立每个所述物体整体的包围盒,所述包围盒作为所述物体的包围盒树的根节点;
[0026]步骤3:利用与局部坐标轴垂直的平面将所述包围盒划分成两个子包围盒,即左包围盒和右包围盒,以形成根节点的两个子节点,即左子节点和右子节点;
[0027]步骤4:对上述步骤得到的所述两个子节点分别递归地执行所述包围盒的分割过程,以得到最终的包围盒
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1