CN106197928A - 一种基于虚拟球的包围盒碰撞检测方法 - Google Patents
一种基于虚拟球的包围盒碰撞检测方法 Download PDFInfo
- Publication number
- CN106197928A CN106197928A CN201610497193.5A CN201610497193A CN106197928A CN 106197928 A CN106197928 A CN 106197928A CN 201610497193 A CN201610497193 A CN 201610497193A CN 106197928 A CN106197928 A CN 106197928A
- Authority
- CN
- China
- Prior art keywords
- bounding
- bounding box
- virtual ball
- node
- method based
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01M—TESTING STATIC OR DYNAMIC BALANCE OF MACHINES OR STRUCTURES; TESTING OF STRUCTURES OR APPARATUS, NOT OTHERWISE PROVIDED FOR
- G01M7/00—Vibration-testing of structures; Shock-testing of structures
- G01M7/08—Shock-testing
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供了一种基于虚拟球的包围盒碰撞检测方法,包括步骤:(1)提供两个待检测是否发生碰撞的物体;(2)以其中物体A顶端建立半径为R0的虚拟球,遍历物体B的几何元素,建立虚拟球所包含物体B部分的包围盒树和物体A的包围盒树;(3)对层次包围盒结构进行精确碰撞检测;(4)对层次包围盒结构的连续检测。本发明在于克服现有技术的不足,通过虚拟球的结构在连续检测时,加速了层次包围盒的建立或更新以及包围盒重叠测试的过程,提高了碰撞检测的效率。
Description
技术领域
本发明涉及一种碰撞检测方法,更具体地说,本发明涉及一种基于虚拟球的包围盒碰撞检测方法。
背景技术
近些年来,碰撞检测已是计算机图形学中比较热门的问题,在虚拟环境的许多领域如计算机仿真、物理模拟、实体建模及机器人运动规划中碰撞检测问题十分重要。碰撞检测问题均基于这样一个事实两个不可穿透的对象不能共享相同的空间区域,碰撞检测的目的是发现碰撞并进行报告,为进一步的碰撞响应提供信息。
目前,对于刚性和柔性物体,除了需要考虑包围盒的紧凑性外,包围盒整理和重构的效率也至关重要。对于简单的包围盒如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时,应用新生成的层次包围盒结构进行两个物体的相互检测。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (6)
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 :如果当前结点没有未检测的兄弟结点,表明没发生碰撞,则记下当前结点信息后,返回;如果还有未检测的兄弟结点,则依次将下兄弟结点作为该树的当前结点,递归执行步骤c。
2.根据权利要求1 所述的基于虚拟球的包围盒碰撞检测方法,其特征在于:所述的步骤b中,当构建虚拟球同时,在虚拟球的内部建立两个半径R1、R2(R1<R2)。
3.根据权利要求1 所述的基于虚拟球的包围盒碰撞检测方法,其特征在于:所述的步骤c、d的两个物体的相互检测是在物体A顶端的运动范围不超过半径R1和R2时;当物体A顶端的运动范围超过半径R1,但不超过R2时,计算顶端通过半径R1时的位置,在这个位置上,以其中物体A顶端建立半径为r0的虚拟球,遍历物体B的几何元素,在这些几何元素上建立层次包围盒结构用以备用。
4.根据权利要求1 和3 所述的基于虚拟球的包围盒碰撞检测方法,其特征在于:所述的步骤c、d的两个物体的相互检测,当物体A顶端的运动范围超过半径R2时,应用新生成的层次包围盒结构进行两个物体的相互检测。
5.根据权利要求1 所述的基于虚拟球的包围盒碰撞检测方法,其特征在于:所述的步骤c 中,当进行第n 次碰撞检测时,包围盒层次结构是根据第n 次碰撞检测时刻每个三角形的空间位置,对上一次碰撞检测过程中的包围盒层次结构中最底层的包围盒进行重构,进而自底向上对上一次碰撞检测过程中的包围盒层次结构进行整理更新而成的,其中n 为大于1的自然数。
6.根据权利要求1 所述的基于虚拟球的包围盒碰撞检测方法,其特征在于:所述的包围盒为AABB 包围盒或者OBB包围盒。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610497193.5A CN106197928A (zh) | 2016-06-30 | 2016-06-30 | 一种基于虚拟球的包围盒碰撞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610497193.5A CN106197928A (zh) | 2016-06-30 | 2016-06-30 | 一种基于虚拟球的包围盒碰撞检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106197928A true CN106197928A (zh) | 2016-12-07 |
Family
ID=57463267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610497193.5A Pending CN106197928A (zh) | 2016-06-30 | 2016-06-30 | 一种基于虚拟球的包围盒碰撞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106197928A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107803831A (zh) * | 2017-09-27 | 2018-03-16 | 杭州新松机器人自动化有限公司 | 一种aoaae层次包围盒碰撞检测方法 |
CN110000812A (zh) * | 2019-03-21 | 2019-07-12 | 深圳点猫科技有限公司 | 一种用于机器人的物体碰撞检测方法及其*** |
CN111062135A (zh) * | 2019-12-18 | 2020-04-24 | 哈尔滨理工大学 | 一种精确的碰撞检测方法 |
CN114012726A (zh) * | 2021-11-08 | 2022-02-08 | 南京航空航天大学 | 一种航天机械臂碰撞检测方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193837A (zh) * | 2011-04-26 | 2011-09-21 | 浙江大学 | 一种基于前线的包围盒碰撞检测方法 |
CN102446122A (zh) * | 2011-12-21 | 2012-05-09 | 上海电机学院 | 一种基于包围盒树的碰撞检测方法 |
CN104867177A (zh) * | 2014-12-23 | 2015-08-26 | 上海电机学院 | 一种基于包围盒树法的并行碰撞检测方法 |
CN105469406A (zh) * | 2015-11-30 | 2016-04-06 | 东北大学 | 一种基于包围盒与空间划分的虚拟物体碰撞检测方法 |
CN105488851A (zh) * | 2015-11-30 | 2016-04-13 | 腾讯科技(深圳)有限公司 | 实时虚拟场景中碰撞体之间碰撞探测的方法和装置 |
-
2016
- 2016-06-30 CN CN201610497193.5A patent/CN106197928A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193837A (zh) * | 2011-04-26 | 2011-09-21 | 浙江大学 | 一种基于前线的包围盒碰撞检测方法 |
CN102446122A (zh) * | 2011-12-21 | 2012-05-09 | 上海电机学院 | 一种基于包围盒树的碰撞检测方法 |
CN104867177A (zh) * | 2014-12-23 | 2015-08-26 | 上海电机学院 | 一种基于包围盒树法的并行碰撞检测方法 |
CN105469406A (zh) * | 2015-11-30 | 2016-04-06 | 东北大学 | 一种基于包围盒与空间划分的虚拟物体碰撞检测方法 |
CN105488851A (zh) * | 2015-11-30 | 2016-04-13 | 腾讯科技(深圳)有限公司 | 实时虚拟场景中碰撞体之间碰撞探测的方法和装置 |
Non-Patent Citations (3)
Title |
---|
XIONG YUMEI 等: "A Dynamic Collision detection algorithm based on Bounding box-tree", 《ADVANCED MATERIALS RESEARCH》 * |
YUMEI XIONG 等: "Research on Bounding Box-tree Algorithm for Collision Detection", 《ADVANCED MATERIALS RESEARCH》 * |
李红波: "基于混合包围盒的碰撞检测算法", 《计算机应用》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107803831A (zh) * | 2017-09-27 | 2018-03-16 | 杭州新松机器人自动化有限公司 | 一种aoaae层次包围盒碰撞检测方法 |
CN107803831B (zh) * | 2017-09-27 | 2019-12-31 | 杭州新松机器人自动化有限公司 | 一种aoaae层次包围盒碰撞检测方法 |
CN110000812A (zh) * | 2019-03-21 | 2019-07-12 | 深圳点猫科技有限公司 | 一种用于机器人的物体碰撞检测方法及其*** |
CN111062135A (zh) * | 2019-12-18 | 2020-04-24 | 哈尔滨理工大学 | 一种精确的碰撞检测方法 |
CN111062135B (zh) * | 2019-12-18 | 2024-01-02 | 哈尔滨理工大学 | 一种精确的碰撞检测方法 |
CN114012726A (zh) * | 2021-11-08 | 2022-02-08 | 南京航空航天大学 | 一种航天机械臂碰撞检测方法 |
CN114012726B (zh) * | 2021-11-08 | 2023-07-04 | 南京航空航天大学 | 一种航天机械臂碰撞检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105469406B (zh) | 一种基于包围盒与空间划分的虚拟物体碰撞检测方法 | |
CN104200031B (zh) | 一种基于距离优先和时空相关性的碰撞检测方法 | |
CN106197928A (zh) | 一种基于虚拟球的包围盒碰撞检测方法 | |
CN110097639A (zh) | 一种三维人体姿态估计方法 | |
Je et al. | PolyDepth: Real-time penetration depth computation using iterative contact-space projection | |
CN105334542B (zh) | 任意密度分布复杂地质体重力场快速、高精度正演方法 | |
CN102446122A (zh) | 一种基于包围盒树的碰撞检测方法 | |
CN101593366A (zh) | 一种基于平衡二叉树的大规模虚拟场景碰撞检测方法 | |
CN107392875A (zh) | 一种基于k近邻域划分的点云数据去噪方法 | |
CN109682336B (zh) | 用于车身精度检测的三坐标测量路径自动规划与优化方法 | |
CN102375416B (zh) | 基于快速搜索树的人型机器人踢球动作信息处理方法 | |
CN103413297A (zh) | 基于一体化三维gis模型的切割方法 | |
CN104318598B (zh) | 一种三维流固单向耦合的实现方法及*** | |
CN101866386A (zh) | 一种基于能量平衡的柔性体碰撞处理方法 | |
Kirsanov et al. | Discoman: Dataset of indoor scenes for odometry, mapping and navigation | |
CN110163964A (zh) | 基于三维数字地球的物理仿真***及其使用方法 | |
CN114012726A (zh) | 一种航天机械臂碰撞检测方法 | |
CN107689078A (zh) | 一种基于链表排序平衡二叉树的层次包围盒树构建方法 | |
CN102693350B (zh) | 面向虚拟现实牙科操作训练的多点接触力觉反馈*** | |
CN104318601B (zh) | 一种流体环境下人体运动仿真方法 | |
CN109961514A (zh) | 一种切割形变仿真方法、装置、存储介质及终端设备 | |
CN102393825B (zh) | 一种基于非共面剔除的柔性场景连续碰撞检测方法 | |
CN102393827A (zh) | 一种基于连续法向锥剔除的柔性场景连续碰撞检测方法 | |
CN102708017A (zh) | 一种基于非共线剔除的柔性场景连续碰撞检测方法 | |
Benitez et al. | Collision detection using sphere-tree construction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20161207 |
|
WD01 | Invention patent application deemed withdrawn after publication |