CN102193837A - 一种基于前线的包围盒碰撞检测方法 - Google Patents
一种基于前线的包围盒碰撞检测方法 Download PDFInfo
- Publication number
- CN102193837A CN102193837A CN 201110104154 CN201110104154A CN102193837A CN 102193837 A CN102193837 A CN 102193837A CN 201110104154 CN201110104154 CN 201110104154 CN 201110104154 A CN201110104154 A CN 201110104154A CN 102193837 A CN102193837 A CN 102193837A
- Authority
- CN
- China
- Prior art keywords
- bounding box
- bounding
- collision detection
- bounding volume
- collision
- 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.)
- Granted
Links
Images
Abstract
本发明公开了一种基于前线的包围盒碰撞检测方法,包括:(1)构建包围盒层次结构;(2)构建包围盒测试树,生成前线,对前线进行包围盒重叠测试;(3)对包围盒进行精确碰撞检测。本发明通过对包围盒重构以及对BVH整理更新,缩短了碰撞检测的时间,对于支持BVH的碰撞检测方法具有很好的扩展性;通过引入前线的链表结构在处理器间均衡计算负载,提高了处理器的负载均衡度,改善了存储访问模式的规则性,提高了碰撞检测的效率,尤其适应用于机器人运动路径规划、物理仿真、视频游戏等技术领域中。
Description
技术领域
本发明属于计算机检测技术领域,具体涉及一种基于前线的包围盒碰撞检测方法。
背景技术
快速精确的连续碰撞检测(CCD)是基于物理仿真、虚拟环境、机器人运动规划等技术领域的重要研究课题。连续碰撞检测方法通过插值物体的运动路径将碰撞检测问题转化为非线性多项式方程的求根问题,可以检测出物体在连续运动过程中发生的碰撞时刻和位置。
对于柔性模型内部以及它们与周围环境间的快速连续碰撞检测的问题,一直被广泛关注。由于这些场景中可能包含着分裂物体或正在发生形变的柔性物体,所以碰撞检测过程非常耗时,对于由几百万个三角形组成的复杂场景更是无法获得交互式的响应速度。
近年来,处理器研发的总体趋势为从单核发展为多核,再发展为众核,四核处理器已经成为目前CPU市场的主流产品。在CAD/CAM或虚拟现实应用中,高档图形工作站通常具有8-16个核心。在这种多核/众核架构的发展趋势下,如何充分利用所有核心的计算能力,如何在多核间均匀分配计算负载,以获得最优的内存和Cache利用率,已成为本领域诸多研究者的关注热点。
目前传统的包围盒碰撞检测方法都是利用BVH(包围盒层次结构)与BVTT(包围盒测试树)来加速计算,通过对BVTT中节点的重叠测试,剔除不重叠的节点。对于柔性物体,更新遍历BVH的计算量随着模型顶点位置的改变而变化,同时由于BVTT结构复杂,对其进行节点访问与重叠测试,容易造成处理器负载度的剧烈变化以及存储访问模式的不规则,严重影响了碰撞检测的效率。
发明内容
本发明提供了一种基于前线的包围盒碰撞检测方法,通过引入前线的链表结构在处理器间均衡计算负载,提高了处理器的负载均衡度,改善了存储访问模式的规则性,提高了碰撞检测的效率。
一种基于前线的包围盒碰撞检测方法,包括如下步骤:
(1)对待检测的三角形网格柔性场景模型中的每个三角形构造对应的包围盒,进而建立所述的三角形网格柔性场景模型的包围盒层次结构;
(2)根据所述的包围盒层次结构,构建包围盒测试树,通过对包围盒测试树进行包围盒重叠测试,生成前线,对前线进行包围盒重叠测试,输出存在包围盒重叠的叶节点;
(3)对输出的叶节点对应的两个包围盒内的三角形对进行精确碰撞检测。
所述的前线是一种存有包围盒测试树中节点的链表。所述的步骤(2)中,生成前线的过程为:首先,自顶向下对包围盒测试树中的非叶节点进行包围盒重叠测试,若不存在包围盒重叠,将该非叶节点存入前线;然后,排除存入前线的非叶节点所对应的若干叶节点;最后,将包围盒测试树中未排除的所有叶节点存入前线。
优选的技术方案中,所述的步骤(1)中,当进行第n次碰撞检测时,包围盒层次结构是根据第n次碰撞检测时刻每个三角形的空间位置,对上一次碰撞检测过程中的包围盒层次结构中最底层的包围盒进行重构,进而自底向上对上一次碰撞检测过程中的包围盒层次结构进行整理更新而成的,n为大于1的自然数;可相应提高了碰撞检测的速度。
优选的技术方案中,所述的步骤(2)中,当进行第m次碰撞检测时,前线是根据包围盒层次结构,对上一次碰撞检测过程中的前线进行扩展生成的,即对上一次碰撞检测过程中的前线中的非叶节点进行包围盒重叠测试,若存在包围盒重叠,将该非叶节点分解成对应的若干叶节点并存入前线,m为自然数且eN+2≤m≤e(N+1),N为自然数,e为前线重构代数,且为实际经验值;能够提高处理器的负载均衡度,改善存储访问模式的规则性,提高碰撞检测的效率。
优选的技术方案中,所述的包围盒为16-DOP包围盒,保证了碰撞检测过程的高效性。
本发明的有益技术效果是:通过对包围盒重构以及对包围盒层次结构(BVH)整理更新,缩短了碰撞检测的时间,对于支持BVH的碰撞检测方法具有很好的扩展性;通过引入前线的链表结构在处理器间均衡计算负载,提高了处理器的负载均衡度,改善了存储访问模式的规则性,提高了碰撞检测的效率。
附图说明
图1为本发明碰撞检测方法的步骤流程示意图。
图2(a)为BVH的结构示意图,图2(b)为BVTT的结构示意图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的碰撞检测方法进行详细说明。
如图1所示,一种基于前线的16-DOP包围盒碰撞检测方法,包括如下步骤:
(1)构建包围盒层次结构。
对待检测的三角形网格柔性场景模型中的每个三角形构造对应的16-DOP包围盒,进而建立三角形网格柔性场景模型的包围盒层次结构;当进行第n次碰撞检测时,包围盒层次结构是根据第n次碰撞检测时刻每个三角形的空间位置,对上一次碰撞检测过程中的包围盒层次结构中最底层的16-DOP包围盒进行重构,进而自底向上对上一次碰撞检测过程中的包围盒层次结构进行整理更新而成的,n为大于1的自然数。
为每个三角形构造对应的16-DOP包围盒:首先将被包围三角形的顶点分别在各个方向上进行投影,然后判断这些投影是否落在包围盒的外部,如果落在包围盒外部,需要对该方向上包围盒的范围进行调整,保证该投影恰好落在边界上;对于16-DOP包围盒,任何一个三角形顶点都需要做16次比较,判断这个点是否落在包围盒内部。
将每个三角形对应的16-DOP包围盒,作为BVH中最底层的16-DOP包围盒。在第一次碰撞检测时,采用自顶向下的方法构建BVH,首先计算出这些三角形的中心,将这些三角形中心投影到直角坐标系的某个坐标轴上,依据投影的正负,可以把它们分成两部分,分别为它们构造包围盒。然后采用同样的方式,对这两个包围盒进行细分,直到包围盒中只包含一个三角形。如图2(a)所示,有一个由a、b、c、d四个三角形组成的场景A1,首先计算出这些三角形的中心,将这些三角形中心投影到某个坐标轴上,依据投影的正负,可以把它们分成两部分,一部分记为B1,另一部分记为B2,分别为B1和B2构造包围盒。然后采用同样的方式,对B1、B2进行细分,直到包围盒中只包含一个三角形。
在随后的碰撞检测过程中,只需要对BVH中的非底层的包围盒大小进行重新计算。这是一个自底向上的计算过程,需要将每个非底层的两个子16-DOP包围盒合并为一个大的16-DOP包围盒。
(2)构建包围盒测试树,生成前线,对前线进行包围盒重叠测试。
根据包围盒层次结构,构建BVTT(包围盒测试树),通过对包围盒测试树进行包围盒重叠测试,生成前线,对前线进行包围盒重叠测试,输出存在包围盒重叠的叶节点。
生成前线的过程为:首先,自顶向下对包围盒测试树中的非叶节点进行包围盒重叠测试,若不存在包围盒重叠,将该非叶节点存入前线;然后,排除存入前线的非叶节点所对应的若干叶节点;最后,将包围盒测试树中未排除的所有叶节点存入前线。
当进行第m次碰撞检测时,前线是根据包围盒层次结构,对上一次碰撞检测过程中的前线进行扩展生成的,即对上一次碰撞检测过程中的前线中的非叶节点进行包围盒重叠测试,若存在包围盒重叠,将该非叶节点分解成对应的若干叶节点并存入前线,m为自然数且eN+2≤m≤e(N+1),N为自然数,e为前线重构代数,且为实际经验值,通常取e=30。
如图2所示,采用自顶向下的构建方法构造BVTT,在图2(a)中已经对整个场景构造了一个BVH;相应地,图2(b)就是针对图2(a)场景而构建的一个BVTT。
如图2(b)中所示,生成前线的过程为:首先,自顶向下对包围盒测试树中由两个包围盒构成的非叶节点(A1,A1)、(B1,B1)、(B1,B2)、(B2,B2)、(a,B2)和(b,B2)进行包围盒重叠测试,测试出其中只有(a,B2)不存在包围盒重叠,其余的非叶节点都存在包围盒重叠,因此将(a,B2)存入前线;其次,排除非叶节点(a,B2)所对应的两个叶节点(a,c)和(a,d);最后,将包围盒测试树中未排除的所有叶节点(a,c)、(a,d)、(b,c)和(b,d)存入前线。
因此本实施方式的前线即是存有节点(a,B2)、(a,c)、(a,d)、(b,c)和(b,d)的链表,如图2(b)中的链带。对该五个节点进行包围盒重叠测试,输出存在包围盒重叠的叶节点。
(3)对包围盒进行精确碰撞检测。
对输出的叶节点对应的两个16-DOP包围盒内的三角形对进行精确碰撞检测。
对两个16-DOP包围盒对应的两个三角形,使用元素测试进行精确计算,得到碰撞发生的第一碰撞时间。这个过程中,将两个三角形之间的碰撞检测问题,转化为顶点与三角形的碰撞检测以及边与边的碰撞检测。
本实施方式通过对16-DOP包围盒重构以及对BVH整理更新,缩短了碰撞检测的时间,对于支持BVH的碰撞检测方法具有很好的扩展性;通过引入前线的链表结构在处理器间均衡计算负载,提高了处理器的负载均衡度,改善了存储访问模式的规则性,提高了碰撞检测的效率。
Claims (5)
1.一种基于前线的包围盒碰撞检测方法,包括如下步骤:
(1)对待检测的三角形网格柔性场景模型中的每个三角形构造对应的包围盒,进而建立所述的三角形网格柔性场景模型的包围盒层次结构;
(2)根据所述的包围盒层次结构,构建包围盒测试树,通过对包围盒测试树进行包围盒重叠测试,生成前线,对前线进行包围盒重叠测试,输出存在包围盒重叠的叶节点;所述的前线是一种存有包围盒测试树中节点的链表;
(3)对输出的叶节点对应的两个包围盒内的三角形对进行精确碰撞检测。
2.根据权利要求1所述的基于前线的包围盒碰撞检测方法,其特征在于:所述的步骤(2)中,生成前线的过程为:首先,自顶向下对包围盒测试树中的非叶节点进行包围盒重叠测试,若不存在包围盒重叠,将该非叶节点存入前线;然后,排除存入前线的非叶节点所对应的若干叶节点;最后,将包围盒测试树中未排除的所有叶节点存入前线。
3.根据权利要求1所述的基于前线的包围盒碰撞检测方法,其特征在于:所述的步骤(1)中,当进行第n次碰撞检测时,包围盒层次结构是根据第n次碰撞检测时刻每个三角形的空间位置,对上一次碰撞检测过程中的包围盒层次结构中最底层的包围盒进行重构,进而自底向上对上一次碰撞检测过程中的包围盒层次结构进行整理更新而成的,n为大于1的自然数。
4.根据权利要求1所述的基于前线的包围盒碰撞检测方法,其特征在于:所述的步骤(2)中,当进行第m次碰撞检测时,前线是根据包围盒层次结构,对上一次碰撞检测过程中的前线进行扩展生成的,即对上一次碰撞检测过程中的前线中的非叶节点进行包围盒重叠测试,若存在包围盒重叠,将该非叶节点分解成对应的若干叶节点并存入前线,m为自然数且eN+2≤m≤e(N+1),N为自然数,e为前线重构代数,且为实际经验值。
5.根据权利要求1、2、3或4所述的基于前线的包围盒碰撞检测方法,其特征在于:所述的包围盒为16-DOP包围盒。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110104154 CN102193837B (zh) | 2011-04-26 | 2011-04-26 | 一种基于前线的包围盒碰撞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110104154 CN102193837B (zh) | 2011-04-26 | 2011-04-26 | 一种基于前线的包围盒碰撞检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102193837A true CN102193837A (zh) | 2011-09-21 |
CN102193837B CN102193837B (zh) | 2012-12-05 |
Family
ID=44601944
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110104154 Expired - Fee Related CN102193837B (zh) | 2011-04-26 | 2011-04-26 | 一种基于前线的包围盒碰撞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102193837B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102446122A (zh) * | 2011-12-21 | 2012-05-09 | 上海电机学院 | 一种基于包围盒树的碰撞检测方法 |
CN105205289A (zh) * | 2015-11-02 | 2015-12-30 | 北京航空航天大学 | 一种基于人脑变形仿真的快速连续碰撞检测方法 |
CN106197928A (zh) * | 2016-06-30 | 2016-12-07 | 哈尔滨理工大学 | 一种基于虚拟球的包围盒碰撞检测方法 |
CN106625662A (zh) * | 2016-12-09 | 2017-05-10 | 南京理工大学 | 一种基于虚拟现实带电作业机械臂防碰撞保护方法 |
CN107346527A (zh) * | 2017-06-29 | 2017-11-14 | 武汉大学 | 一种基于动态任务调度的层次包围盒构建方法 |
CN112132929A (zh) * | 2020-09-01 | 2020-12-25 | 北京布科思科技有限公司 | 一种基于深度视觉和单线激光雷达的栅格地图标记方法 |
CN112932662A (zh) * | 2021-02-01 | 2021-06-11 | 威海威高骨科手术机器人有限公司 | 一种具有患者安全保护的复位位置检测方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106096082A (zh) * | 2016-05-24 | 2016-11-09 | 国网安徽省电力公司宿州供电公司 | 一种基于数据分块及并行处理的碰撞检测方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093586A (zh) * | 2007-07-12 | 2007-12-26 | 上海交通大学 | 面向复杂场景实时交互操作的并行碰撞检测方法 |
-
2011
- 2011-04-26 CN CN 201110104154 patent/CN102193837B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093586A (zh) * | 2007-07-12 | 2007-12-26 | 上海交通大学 | 面向复杂场景实时交互操作的并行碰撞检测方法 |
Non-Patent Citations (1)
Title |
---|
《计算机学报》 20091031 唐敏 等 基于SIMD指令的柔性物体并行碰撞检测 第2042-2051页 1-3,5 第32卷, 第10期 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102446122A (zh) * | 2011-12-21 | 2012-05-09 | 上海电机学院 | 一种基于包围盒树的碰撞检测方法 |
CN105205289A (zh) * | 2015-11-02 | 2015-12-30 | 北京航空航天大学 | 一种基于人脑变形仿真的快速连续碰撞检测方法 |
CN105205289B (zh) * | 2015-11-02 | 2018-04-06 | 北京航空航天大学 | 一种基于人脑变形仿真的快速连续碰撞检测方法 |
CN106197928A (zh) * | 2016-06-30 | 2016-12-07 | 哈尔滨理工大学 | 一种基于虚拟球的包围盒碰撞检测方法 |
CN106625662A (zh) * | 2016-12-09 | 2017-05-10 | 南京理工大学 | 一种基于虚拟现实带电作业机械臂防碰撞保护方法 |
CN107346527A (zh) * | 2017-06-29 | 2017-11-14 | 武汉大学 | 一种基于动态任务调度的层次包围盒构建方法 |
CN107346527B (zh) * | 2017-06-29 | 2020-03-10 | 武汉大学 | 一种基于动态任务调度的层次包围盒构建方法 |
CN112132929A (zh) * | 2020-09-01 | 2020-12-25 | 北京布科思科技有限公司 | 一种基于深度视觉和单线激光雷达的栅格地图标记方法 |
CN112132929B (zh) * | 2020-09-01 | 2024-01-26 | 北京布科思科技有限公司 | 一种基于深度视觉和单线激光雷达的栅格地图标记方法 |
CN112932662A (zh) * | 2021-02-01 | 2021-06-11 | 威海威高骨科手术机器人有限公司 | 一种具有患者安全保护的复位位置检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102193837B (zh) | 2012-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102193837B (zh) | 一种基于前线的包围盒碰撞检测方法 | |
Frishman et al. | Multi-level graph layout on the GPU | |
Bédorf et al. | A sparse octree gravitational N-body code that runs entirely on the GPU processor | |
CN102393826B (zh) | 一种基于多核并行处理的柔性场景连续碰撞检测方法 | |
Ernst et al. | Multi bounding volume hierarchies | |
CN101398942A (zh) | 三维试衣仿真系统 | |
CN103699715A (zh) | 一种基于光滑粒子流体动力学和非线性有限元的流固耦合方法 | |
Zou et al. | Collision detection for virtual environment using particle swarm optimization with adaptive cauchy mutation | |
CN109215106A (zh) | 一种基于动态场景的实时光线追踪加速结构的方法 | |
CN103337091A (zh) | 一种基于厚度的柔性场景连续碰撞检测方法 | |
Wang et al. | A review of collision detection for deformable objects | |
CN104463934A (zh) | 一种“质点-弹簧”系统驱动的点集模型动画自动生成方法 | |
Wang et al. | Accurate self-collision detection using enhanced dual-cone method | |
CN102393827A (zh) | 一种基于连续法向锥剔除的柔性场景连续碰撞检测方法 | |
CN102393825A (zh) | 一种基于非共面剔除的柔性场景连续碰撞检测方法 | |
Nie et al. | A survey of continuous collision detection | |
Chen et al. | Ray tracing on single FPGA | |
Dang et al. | A fine-grained parallel model for the fast iterative method in solving eikonal equations | |
Peng et al. | PGN-Cloth: Physics-based graph network model for 3D cloth animation | |
Garanzha | The use of precomputed triangle clusters for accelerated ray tracing in dynamic scenes | |
Salazar et al. | Cloth simulation using AABB hierarchies and GPU parallelism | |
Favilli et al. | Geometric deep learning for statics-aware grid shells | |
Jie et al. | LOD methods of large-scale urban building models by GPU accelerating | |
Semenov et al. | Visualization of Complex Industrial Products and Processes Using Hierarchical Dynamic LODs | |
Li et al. | An object-oriented system for dynamics-based 3D cloth simulation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121205 Termination date: 20150426 |
|
EXPY | Termination of patent right or utility model |