一种基于虚拟球的包围盒碰撞检测方法技术

技术编号:14174080 阅读:92 留言:0更新日期:2016-12-13 02:19
本发明专利技术提供了一种基于虚拟球的包围盒碰撞检测方法,包括步骤:(1)提供两个待检测是否发生碰撞的物体;(2)以其中物体A顶端建立半径为R0的虚拟球,遍历物体B的几何元素,建立虚拟球所包含物体B部分的包围盒树和物体A的包围盒树;(3)对层次包围盒结构进行精确碰撞检测;(4)对层次包围盒结构的连续检测。本发明专利技术在于克服现有技术的不足,通过虚拟球的结构在连续检测时,加速了层次包围盒的建立或更新以及包围盒重叠测试的过程,提高了碰撞检测的效率。

Bounding box collision detection method based on virtual sphere

The invention provides a method comprising the steps of bounding box collision detection method based on virtual ball: (1) two to detect the occurrence of collision objects; (2) in which the object A radius of the top to establish virtual ball R0, geometric element traversal object B, bounding box tree to build the virtual ball contained the object B part of the bounding box tree and object A; (3) the hierarchical bounding box structure for accurate collision detection; (4) surrounded by a continuous detection box structure of level. The present invention is to overcome the defects of the prior art, the structure through the virtual ball in the continuous detection, accelerate the hierarchical bounding box to create or update and surrounded by the process of the box overlap test, improve the efficiency of collision detection.

【技术实现步骤摘要】

本专利技术涉及一种碰撞检测方法,更具体地说,本专利技术涉及一种基于虚拟球的包围盒碰撞检测方法
技术介绍
近些年来,碰撞检测已是计算机图形学中比较热门的问题,在虚拟环境的许多领域如计算机仿真、物理模拟、实体建模及机器人运动规划中碰撞检测问题十分重要。碰撞检测问题均基于这样一个事实两个不可穿透的对象不能共享相同的空间区域,碰撞检测的目的是发现碰撞并进行报告,为进一步的碰撞响应提供信息。目前,对于刚性和柔性物体,除了需要考虑包围盒的紧凑性外,包围盒整理和重构的效率也至关重要。对于简单的包围盒如Sphere、AABB,其构造和更新十分快速,但紧凑性较差;对于复杂的包围盒如OBB,虽然较为紧凑,但整理和构造的计算量较大;作为折中选择,在一个虚拟场景中,刚性物体采用Sphere或AABB包围盒,柔性物体采用OBB包围盒,并且分别构建包围盒层次结构。同时,刚体之间的碰撞研究己经比较成熟,但是现存的动态碰撞检测方法还存在一些问题,比如检测过程中发生刺穿和遗漏现象等。另外尽管有些采用层次包围盒结构来加速无题场景中的碰撞检测,但是一般的包围盒的方法把包围盒方法视为一个整体方法,并且一般的层次包围盒结构的方法是把整个物体全部包围,构建和更新层次结构比较费时,检测精度比较低,而且效率不是非常突出,近期的一些方法主要侧重于变形对象的碰撞检测研究,变形对象间的高效碰撞检测是一个非常值得研究的领域,有着广泛的应用前景。
技术实现思路
本专利技术提供了一种基于虚拟球的包围盒碰撞检测方法,目的在于克服现有技术的不足,通过虚拟球的结构在连续检测时,加速了层次包围盒的建立或更新以及包围盒重叠测试的过程,提高了碰撞检测的效率。为了实现上述技术目的,提供了一种基于虚拟球的包围盒碰撞检测方法,包括如下步骤:步骤a:提供两个待检测是否发生碰撞的物体A和B;步骤b:以其中物体A顶端建立半径为R0的虚拟球,遍历物体B的几何元素,建立虚拟球所包含物体B部分的包围盒树和物体A的包围盒树;该步骤b具体包含:步骤b1:建立物体A的包围盒,该包围盒作为该物体的包围盒树的根节点;步骤b2:建立虚拟球所包含物体B部分的包围盒,该包围盒作为该物体的包围盒树的根节点;步骤b3:利用与局部坐标轴垂直的平面将上述包围盒划分成两个子包围盒以形成根节点的两个子节点,当所有子节点包含的基本几何元素个数少于预先给定的叶节点所包含几何元素个数的最小值时,转向步骤c,否则转向步骤b4 ;步骤b4:对步骤b3中得到的两个子节点分别递归地执行上述包围盒的分割过程,当递归深度超过了预先给定的最大树深度时,转向步骤c,否则转向步骤b3;步骤c :取所述两个物体的包围盒树的当前结点两两之间进行检测,判断是否发生碰撞,若发生碰撞,转向步骤d,若没碰撞,转向步骤e;步骤d :判断当前结点是否为叶子结点,若是,进行精确检测确定是否真的发生碰撞,并根据检测结果更新包含“结点序号”,“三角面片序号”,“是否碰撞”在内的节点信息,记下该结点,返回;若不是叶子结点,则取它所有子结点作为该树的当前结点,递归执行步骤c;步骤e :如果当前结点没有未检测的兄弟结点,表明没发生碰撞,则记下当前结点信息后,返回;如果还有未检测的兄弟结点,则依次将下兄弟结点作为该树的当前结点,递归执行步骤c。进一步地,所述的步骤b中,当构建虚拟球同时,在虚拟球的内部建立两个半径R1、R2(R1<R2)。进一步地,所述的步骤c、d的两个物体的相互检测是在物体A顶端的运动范围不超过半径R1和R2时;当物体A顶端的运动范围超过半径R1,但不超过R2时,计算顶端通过半径R1时的位置,在这个位置上,以其中物体A顶端建立半径为r0的虚拟球,遍历物体B的几何元素,在这些几何元素上建立层次包围盒结构用以备用。进一步地,所述的步骤c、d的两个物体的相互检测,当物体A顶端的运动范围超过半径R2时,应用新生成的层次包围盒结构进行两个物体的相互检测。进一步地,所述的步骤c 中,当进行第n 次碰撞检测时,包围盒层次结构是根据第n 次碰撞检测时刻每个三角形的空间位置,对上一次碰撞检测过程中的包围盒层次结构中最底层的包围盒进行重构,进而自底向上对上一次碰撞检测过程中的包围盒层次结构进行整理更新而成的,其中n 为大于1的自然数。进一步地,所述的包围盒为AABB 包围盒或者OBB包围盒。本专利技术的有益技术效果是:通过引入虚拟球的方法对要被检测的柔性物体遍历划定范围,并对这部分几何元素构建层次包围盒结构,减少了要检测的几何元素,加快了检测的速度和时间;在连续检测时,更新虚拟球的的位置和层次包围盒的结构,加速了层次包围盒的建立或更新以及包围盒重叠测试的过程,提高了碰撞检测的效率。附图说明附图1是本专利技术方法的流程图。附图2是虚拟球的构建和更新的流程图。具体实施方式为了更为具体地描述本专利技术,下面结合附图及具体实施方式对本专利技术的碰撞检测方法进行详细说明。如图1 和图2所示,一种基于虚拟球的包围盒碰撞检测方法,包括如下步骤:一种基于虚拟球的包围盒碰撞检测方法,其特征在于,包括如下步骤。(1) 提供两个待检测是否发生碰撞的物体。(2) 以其中物体A顶端建立半径为R0的虚拟球,遍历物体B的几何元素,建立虚拟球所包含物体B部分的包围盒树和物体A的包围盒树。在场景中的建立物体A的包围盒,该包围盒作为该物体的包围盒树的根节点;同时建立虚拟球所包含物体B部分的包围盒,该包围盒作为该物体的包围盒树的根节点;利用与局部坐标轴垂直的平面将上述包围盒划分成两个子包围盒以形成根节点的两个子节点,得到的两个子节点,分别递归地执行上述包围盒的分割过程,当所有子节点包含的基本几何元素个数少于预先给定的叶节点所包含几何元素个数的最小值时或者当递归深度超过了预先给定的最大树深度时,终止递归过程。(3) 对层次包围盒结构进行精确碰撞检测。取所述两个物体的包围盒树的当前结点两两之间进行检测,判断是否发生碰撞,若发生碰撞,判断当前结点是否为叶子结点,若是,进行精确检测确定是否真的发生碰撞,并根据检测结果更新包含“结点序号”,“三角面片序号”,“是否碰撞”在内的节点信息,记下该结点,返回;若不是叶子结点,则取它所有子结点作为该树的当前结点递归检测是否发生碰撞。如果当前结点没有未检测的兄弟结点,表明没发生碰撞,则记下当前结点信息后,返回;如果还有未检测的兄弟结点,则依次将下兄弟结点作为该树的当前结点,递归执行。(4) 对层次包围盒结构的连续检测。当物体A顶端的运动范围不超过半径R1和R2时,进行第n 次碰撞检测时,包围盒层次结构是根据第n 次碰撞检测时刻每个三角形的空间位置,对上一次碰撞检测过程中的包围盒层次结构中最底层的包围盒进行重构,进而自底向上对上一次碰撞检测过程中的包围盒层次结构进行整理更新而成的,其中n 为大于1的自然数;当物体A顶端的运动范围超过半径R1,但不超过R2时,计算顶端通过半径R1时的位置,在这个位置上,以其中物体A顶端建立半径为r0的虚拟球,遍历物体B的几何元素,在这些几何元素上建立层次包围盒结构用以备用;当物体A顶端的运动范围超过半径R2时,应用新生成的层次包围盒结构进行两个物体的相互检测。以上所述,仅为本专利技术较佳的具体实施方式,但本专利技术的保护范围并不局限于此,任何熟悉本
的技术人员本文档来自技高网
...
一种基于虚拟球的包围盒碰撞检测方法

【技术保护点】
一种基于虚拟球的包围盒碰撞检测方法,其特征在于,包括如下步骤:步骤a:提供两个待检测是否发生碰撞的物体A和B;步骤b:以其中物体A顶端建立半径为R0的虚拟球,遍历物体B的几何元素,建立虚拟球所包含物体B部分的包围盒树和物体A的包围盒树;该步骤b具体包含:步骤b1:建立物体A的包围盒,该包围盒作为该物体的包围盒树的根节点;步骤b2:建立虚拟球所包含物体B部分的包围盒,该包围盒作为该物体的包围盒树的根节点;步骤b3:利用与局部坐标轴垂直的平面将上述包围盒划分成两个子包围盒以形成根节点的两个子节点,当所有子节点包含的基本几何元素个数少于预先给定的叶节点所包含几何元素个数的最小值时,转向步骤c,否则转向步骤b4 ;步骤b4:对步骤b3中得到的两个子节点分别递归地执行上述包围盒的分割过程,当递归深度超过了预先给定的最大树深度时,转向步骤c,否则转向步骤b3;步骤c :取所述两个物体的包围盒树的当前结点两两之间进行检测,判断是否发生碰撞,若发生碰撞,转向步骤d,若没碰撞,转向步骤e;步骤d :判断当前结点是否为叶子结点,若是,进行精确检测确定是否真的发生碰撞,并根据检测结果更新包含“结点序号”,“三角面片序号”,“是否碰撞”在内的节点信息,记下该结点,返回;若不是叶子结点,则取它所有子结点作为该树的当前结点,递归执行步骤c; 步骤e :如果当前结点没有未检测的兄弟结点,表明没发生碰撞,则记下当前结点信息后,返回;如果还有未检测的兄弟结点,则依次将下兄弟结点作为该树的当前结点,递归执行步骤c。...

【技术特征摘要】
1.一种基于虚拟球的包围盒碰撞检测方法,其特征在于,包括如下步骤:步骤a:提供两个待检测是否发生碰撞的物体A和B;步骤b:以其中物体A顶端建立半径为R0的虚拟球,遍历物体B的几何元素,建立虚拟球所包含物体B部分的包围盒树和物体A的包围盒树;该步骤b具体包含:步骤b1:建立物体A的包围盒,该包围盒作为该物体的包围盒树的根节点;步骤b2:建立虚拟球所包含物体B部分的包围盒,该包围盒作为该物体的包围盒树的根节点;步骤b3:利用与局部坐标轴垂直的平面将上述包围盒划分成两个子包围盒以形成根节点的两个子节点,当所有子节点包含的基本几何元素个数少于预先给定的叶节点所包含几何元素个数的最小值时,转向步骤c,否则转向步骤b4 ;步骤b4:对步骤b3中得到的两个子节点分别递归地执行上述包围盒的分割过程,当递归深度超过了预先给定的最大树深度时,转向步骤c,否则转向步骤b3;步骤c :取所述两个物体的包围盒树的当前结点两两之间进行检测,判断是否发生碰撞,若发生碰撞,转向步骤d,若没碰撞,转向步骤e;步骤d :判断当前结点是否为叶子结点,若是,进行精确检测确定是否真的发生碰撞,并根据检测结果更新包含“结点序号”,“三角面片序号”,“是否碰撞”在内的节点信息,记下该结点,返回;若不是叶子结点,则取它所有子结点作为该树的当前结点,递归执行步骤c; 步骤e :如果当前结点没有未检测的兄弟结点,表明没发生碰撞,则记下当前结点信息后,返回;如果还有未检测...

【专利技术属性】
技术研发人员:王沫楠陈少勇毛志勇李荣鹏
申请(专利权)人:哈尔滨理工大学
类型:发明
国别省市:黑龙江;23

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1