CN104637087B - 一种提高连续碰撞检测效率的方法 - Google Patents
一种提高连续碰撞检测效率的方法 Download PDFInfo
- Publication number
- CN104637087B CN104637087B CN201510079338.5A CN201510079338A CN104637087B CN 104637087 B CN104637087 B CN 104637087B CN 201510079338 A CN201510079338 A CN 201510079338A CN 104637087 B CN104637087 B CN 104637087B
- Authority
- CN
- China
- Prior art keywords
- collision
- msub
- edge
- collision detection
- cubic function
- 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.)
- Expired - Fee Related
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 61
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000012888 cubic function Methods 0.000 claims abstract description 17
- 238000004364 calculation method Methods 0.000 claims description 5
- 239000013598 vector Substances 0.000 claims description 4
- 238000004422 calculation algorithm Methods 0.000 abstract description 13
- 238000001914 filtration Methods 0.000 description 20
- 238000012360 testing method Methods 0.000 description 6
- 238000004088 simulation Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 3
- 238000013142 basic testing Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000149 penetrating effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 241000282320 Panthera leo Species 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Image Analysis (AREA)
Abstract
本发明提供了一种提高连续碰撞检测的方法,包括:获取空间中需要进行碰撞检测的两个三角形的顶点坐标,以及向量共面性得到碰撞的三次方程,然后根据斯图姆序列的定义求得三次函数的斯图姆序列,把指定区间的边界值代入序列,分别得到两个边界值序列的符号变量值,最后根据斯图姆定理,由两个符号变量值的差值确定方程在指定区间根的存在情况,将不存在根的三次方程过滤掉,表明该碰撞不会发生。本发明其能够有效的过滤掉大部分不会发生碰撞的检测对,过滤率最高达到90%,能够显著提高连续碰撞检测算法的效率。
Description
技术领域
本发明涉及一种能够提高连续碰撞检测效率的方法,尤其涉及一种基于斯图姆(Sturm)定理的CCD过滤计算方法。
背景技术
在基于物理的模拟、机器人动作规划、触觉渲染、虚拟原型的容忍度验证等应用中,非穿透性约束被广泛应用到可移动或可形变的物体上,用来实现碰撞的结果。连续碰撞检测是维持非穿透性约束并较好处理碰撞反馈的一项主要技术。
物体之间之所以需要进行碰撞检测,是因为现实世界中同一空间区域内不能存在两个或者多个不可穿透的物体。随着虚拟现实、计算机动画等技术的兴起,人们迫切希望可以对真实环境、以及所构想的客观不存在的环境进行模拟,实时的碰撞检测越发重要。三十年来,许多学者对碰撞检测问题进行了大量研究,并形成了三类主要的检测方法:静态碰撞检测算法、离散碰撞检测算法和连续碰撞检测算法(Continuous Collision Detection,CCD)。
其中,连续碰撞检测算法定义为在一个时间参数区间[t0,t1]内检测所有物体和其它物体之间有无碰撞,其最大缺陷在于:无法排除相邻接、但是没有发生自碰撞的图元对,即使是很平坦的没有发生自碰撞的可变形三角形网格也同样无法排除,因此产生很多误报(False Positives),剔除率很低,而每一个误报都要执行一个点-面基本测试或边-边基本测试,即需要进行一次三次方程求解,因此,使得大部分碰撞检测的时间花费在误报上,导致计算量大,检测速度慢,在一些复杂的模拟环境中不能保证测试的实时性。
对于可移动或可形变的物体,目前主要有两种过滤技术被用来加速连续碰撞检测:一种是宽阔空间的动态边界体层次方法(BVHs);另一种是狭小空间的非穿透性过滤方法。由于对边界体的过度约束,对于快速移动或者剧烈形变的物体,BVHs方法的过滤效率会显著降低。因此,大量可能发生碰撞的三角形在宽阔空间没有被过滤出来,并保留到狭窄空间,最终导致几十万甚至几百万的碰撞测试。由于巨大的计算开销,跟离散的碰撞检测相比,连续碰撞检测的效果也有一定的限制。
在最近的研究工作中,出现了许多过滤算法,其中效果较好的有DNPF过滤算法和Exact ccd算法。但是这两个算法的计算时间均较长,过滤算法本身具有较大的计算花销。
发明内容
为了减少狭窄空间的基本碰撞测试次数,提高连续碰撞检测效率,本发明提供了一种提高连续碰撞检测效率的方法,能够快速并低开销的过滤伪碰撞对,最终减少狭窄空间基本碰撞检测次数,显著提高连续碰撞检测算法的效率。
本发明所提供的提高连续碰撞检测效率的方法,步骤包括:
获取三维空间中由三角形组成的检测对(图元对)的点-面碰撞或边-边碰撞所涉及的四个顶点坐标;
采用所获得的顶点坐标,根据向量共面性建立共面方程,得到该检测对所对应的三次函数;
根据斯图姆序列的定义,求得所述三次函数的斯图姆序列,并将指定区间的边界值代入该斯图姆序列,得到两个边界值序列的符号变量值;
根据斯图姆定理,计算所述两个符号变量值的差值,如果差值为0,则剔除原三次函数所对应的检测对;如果差值不为0,则将原三次函数所对应的检测对纳入连续碰撞检测计算。
其中,所述三次函数的建立方法优选为:根据三角形顶点在时间间隔t内恒速移动的速度,得到点-面距离或者边-边距离f(t)的三次函数公式。
其中,所述指定区间优选为时间间隔t的区间。
其中,更有优选为:三角形顶点在时间间隔t∈[t0,t1]中恒速移动,四个顶点的移动速度为则得到点-面距离或者边-边距离f(t)的三次函数公式(1):
f(t)=a3t3+a2t2+a1t+a0 (1)
其中:
发生碰撞时:f(t)=0。
其中,在一种优选实施例中,所述时间间隔t∈[0,1]。
其中,公式(1)的斯图姆序列为:
其中,
其中,本发明上述三角形可以是移动的三角形、形变的三角形中的任意一种或几种。
本发明所述的提高连续碰撞检测效率的方法,旨在过滤待计算检测对中不可能发生碰撞的检测对,以此减少连续碰撞检测的计算量。该方法能够有效的过滤掉大部分不会发生碰撞的检测对,过滤率最高达90%,能够显著提高连续碰撞检测算法的效率。
附图说明
图1为本发明提高连续碰撞检测效率的方法流程示意图;
图2为本发明三角形检测对示意图,其中,A为点-面碰撞检测示意图,B为边-边碰撞检测示意图。
具体实施方式
参照图1和图2,本发明提高连续碰撞检测效率的方法如下:
步骤1:获取坐标
对于一对移动或形变的三角形,假设他们的顶点在时间间隔t∈[0,1]中以恒定的速度移动,两个移动或形变的三角形的连续碰撞检测包含六个点-面测试(图2A)和九个边-边测试(图2B)。每一个点-面碰撞或者边-边碰撞均涉及到四个顶点,设定四个顶点
步骤2,获取三次函数
设定四个顶点的恒定速度则点-面的距离或者边-边的距离f(t)则可以被表示为:
因此最终可以得到一个三次代数式:
f(t)=a3t3+a2t2+a1t+a0 (1-2)
其中:
该三次代数式等于0就是一个碰撞发生的必要条件。根据这个条件我们可以得到如下方程:
f(t)=0 (1-3)
步骤3,获取斯图姆序列
符号变量VAR的定义:
如果函数f(t)的表达式按照变量t降幂排列,那么对于相邻两项的系数,如果符号相反,则称发生了一次符号变化,对于这个函数表达式总的系数符号变化次数,称为符号变量值,记做VAR(f(t))。
斯图姆序列:
对于函数f(t),斯图姆序列是公式(2-1)递归定义的:
fn=qnfn-1-fn-2 (2-1)
且f0=f(t),f1=f'(t),qn是一个多项式分数,定义为:
函数f(t)的斯图姆序列就是:
f0,f1,…,fn (2-3)
序列的终止条件为fn为常数。
斯图姆定理:
利用斯图姆序列判断函数根的存在情况,对于函数指定的区间,将该区间的两个边界值代入斯图姆序列的表达式中,得到两个实数序列,这两个实数序列的符号变量值之差就是该区间内函数的根的个数。
根据斯图姆序列的定义,我们计算出公式(1-2)的斯图姆序列具体表达式:
其中
碰撞检测过程中,0和1为两个边界值,将其代入表达式(2-4)得到两个数值序列(符号变量值VAR)。
步骤4,计算所述两个符号变量值的差值
根据两各数值序列的符号变量差值确定方程在[0,1]区间根的个数。如果差值等于0,则表示方程(1-3)不存在根,则表明该三次方程所代表的碰撞不会发生,可以把这一个检测对过滤掉。
如果差值不为0,则表示方程(1-3)在该区间内有根,将原始方程所对应的检测对纳入连续碰撞检测。
下面结合图2,通过具体实施例对本发明所述提高连续碰撞检测效率的方法进行更为详细的介绍。
如图2所示两个三角形组成的一个检测对,需要进行6次点-面碰撞检测和9次边-边碰撞检测。参照图2B,举例其中的一次边-边碰撞测试,边和边需要进行一次碰撞检测。将这四个点的坐标进行运算,得到三个向量,令f(t)等于三个向量的混合积,则可以得到函数:
f(t)=0.2566t3+0.4388t2-0.4446t+0.2215 (3)
根据公式(2-4)的斯图姆序列表达式,把[0,1]分别代入,得到两个数值序列,表1给出了两个序列及其所对应的VAR。
表1
t | d0 | d1 | d2 | d3 | VAR |
0 | 0.2215 | -0.4446 | -0.3060 | -0.4712 | 1 |
1 | 0.4723 | 1.2027 | 0.1572 | -0.4712 | 1 |
计算得到VAR(0)和VAR(1)均为1,二者的差值为0,这表示原始方程(3)在[0,1]区间内没有根,即表示该方程所对应的检测对不存在碰撞,过滤剔除该检测对。
本发明上述实验在PC机上Windows 7操作系统下进行,其硬件配置是:3.30GHzIntel Core(TM)i5-4590 CPU、4GB RAM。一次基于斯图姆定理的过滤判断运行时间大概为0.087610-6秒。
过滤率统计方法
令不使用斯图姆过滤方法时需要进行碰撞检测次数为S0,使用斯图姆过滤方法过滤后需要进行的碰撞检测次数为S1,实验的过滤率可用(S0-S1)/S0计算得到。我们采用两种方法来统计过滤率。
方法1
随机生成15000对三角形进行实验,三角形坐标均为随机生成,实验的S0值为225000,使用我们的斯图姆过滤方法后,S1为21230,所以过滤率为(S0-S1)/S0=(225000-21230)/225000≈90.6%。
方法2
通过读取三维仿真实验(比如石狮子仿真)三维模型文件,我们得到如下结果:S0为975486240,S1为22455992。因此使用斯图姆过滤方法后,统计得到的过滤率为(S0-S1)/S0=(975486240-22455992)/975486240≈97.7%。
可见本发明能够过滤掉大约90%的不会发生碰撞的检测对,节省了大量“误报”的三次方程求解和检测时间,而且过滤判断时间很短,因此能够显著提高连续碰撞检测算法的效率。
以上对本发明的具体实施例进行了详细描述,但其只是作为范例,本发明并不限制于以上描述的具体实施例。对于本领域技术人员而言,任何对本发明进行的等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和修改,都应涵盖在本发明的范围内。
Claims (7)
1.一种提高连续碰撞检测效率的方法,其特征在于,步骤包括:
获取三维空间中由三角形组成的每一检测对的点-面碰撞或边-边碰撞所涉及的四个顶点坐标;
采用所获得的顶点坐标,根据向量共面性建立共面方程,得到三次函数;
根据斯图姆序列的定义,求得所述三次函数的斯图姆序列,并将指定区间的边界值代入该斯图姆序列,得到两个边界值序列的符号变量值;其中,如果函数f(t)的表达式按照变量t降幂排列,那么对于相邻两项的系数,如果符号相反,则称发生了一次符号变化,对于这个函数表达式总的系数符号变化次数,称为符号变量值;
根据斯图姆定理,计算所述两个边界值序列的符号变量值的差值,如果差值为0,则剔除原三次函数所对应的检测对;如果差值不为0,则将原三次函数所对应的检测对纳入连续碰撞检测计算。
2.根据权利要求1所述的方法,其特征在于,所述三次函数的建立方法为:根据三角形顶点在时间间隔t内恒速移动的速度,得到点-面距离或者边-边距离f(t)的三次函数。
3.根据权利要求2所述的方法,其特征在于,所述指定区间为时间间隔t的区间。
4.根据权利要求2所述的方法,其特征在于,所述三次函数的建立方法为:三角形顶点在时间间隔t∈[t0,t1]中恒速移动,每一个点-面碰撞或者边-边碰撞均涉及到四个顶点四个顶点的移动速度为则得到公式(1)所示点-面距离或者边-边距离f(t)的三次函数:
f(t)=a3t3+a2t2+a1t+a0 (1);
其中:
5.根据权利要求4所述的方法,其特征在于,公式(1)的斯图姆序列为:
f0=a3t3+a2t2+a1t+a0
f1=3a3t2+2a2t+a1
f2=At+B
<mrow>
<msub>
<mi>f</mi>
<mn>3</mn>
</msub>
<mo>=</mo>
<mrow>
<mo>(</mo>
<mn>2</mn>
<msub>
<mi>a</mi>
<mn>2</mn>
</msub>
<mo>-</mo>
<mn>3</mn>
<msub>
<mi>a</mi>
<mn>3</mn>
</msub>
<mfrac>
<mi>B</mi>
<mi>A</mi>
</mfrac>
<mo>)</mo>
</mrow>
<mfrac>
<mi>B</mi>
<mi>A</mi>
</mfrac>
<mo>-</mo>
<msub>
<mi>a</mi>
<mn>1</mn>
</msub>
</mrow>
其中,
6.根据权利要求2-5中任意一项所述的方法,其特征在于,所述时间间隔t∈[0,1]。
7.根据权利要求1所述的方法,其特征在于,上述三角形是移动的三角形、形变的三角形中的任意一种或几种。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510079338.5A CN104637087B (zh) | 2015-02-13 | 2015-02-13 | 一种提高连续碰撞检测效率的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510079338.5A CN104637087B (zh) | 2015-02-13 | 2015-02-13 | 一种提高连续碰撞检测效率的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104637087A CN104637087A (zh) | 2015-05-20 |
CN104637087B true CN104637087B (zh) | 2017-12-15 |
Family
ID=53215792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510079338.5A Expired - Fee Related CN104637087B (zh) | 2015-02-13 | 2015-02-13 | 一种提高连续碰撞检测效率的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104637087B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609321A (zh) * | 2012-01-30 | 2012-07-25 | 华南理工大学 | 基于K_DOPs快速连续碰撞检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9196083B2 (en) * | 2012-01-16 | 2015-11-24 | Intel Corporation | Time-continuous collision detection using 3D rasterization |
-
2015
- 2015-02-13 CN CN201510079338.5A patent/CN104637087B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609321A (zh) * | 2012-01-30 | 2012-07-25 | 华南理工大学 | 基于K_DOPs快速连续碰撞检测方法 |
Non-Patent Citations (2)
Title |
---|
Fast collision detection for deformable models using representative-triangles;Sean Curtis等;《Proceedings of the 2008 symposium on Interactive 3D graphics and games. ACM》;20080229;第61-69页 * |
基于网格拓扑优化的连续碰撞检测算法;张龙涛等;《计算机工程》;20141231;第40卷(第12期);第292-295,301页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104637087A (zh) | 2015-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10140395B2 (en) | Detecting collisions in a simulated machining of a workpiece represented by dexels | |
Zhang et al. | Robust cut-cell algorithms for DSMC implementations employing multi-level Cartesian grids | |
EP2521113A1 (en) | Simplified smoothed particle hydrodynamics | |
Eckstein et al. | Dynamic collision detection in virtual reality applications | |
Aziz et al. | Bezier surface/surface intersection | |
Liang et al. | Research on the technique of identifying debris and obtaining characteristic parameters of large-scale 3D point set | |
CN104637087B (zh) | 一种提高连续碰撞检测效率的方法 | |
CN104637086B (zh) | 基于文森特定理的高效连续碰撞检测方法 | |
CN103679751B (zh) | 一种基于量子计算的碰撞检测方法 | |
CN104615893B (zh) | 基于泰勒模型的提高连续碰撞检测效率的方法 | |
CN111310349A (zh) | 适用于离散元计算信息连续化展示的数据处理分析方法 | |
Du et al. | Fast continuous collision culling with deforming noncollinear filters | |
Kim et al. | Efficient collision detection among moving spheres with unknown trajectories | |
Zhang et al. | A fast algebraic non-penetration filter for continuous collision detection | |
Rahim et al. | Evaluation of adaptive subdivision method on mobile device | |
CN103886636B (zh) | 基于光线投射步进补偿的实时烟雾渲染算法 | |
Czapla | Random sets of stadiums in square and collective behavior of bacteria | |
Zhang et al. | A Simple Filtering Algorithm for Continuous Collision Detection Using Taylor Models | |
ElBadrawy et al. | Speeding up cloth simulation by linearizing the bending function of the physical mass-spring model | |
Zhang et al. | An algebraic non-penetration filter for continuous collision detection using Sturm Theorem | |
CN107341849B (zh) | 一种快速实时烟雾模拟算法 | |
Piskunov | The asymptotic behavior and self-similar solutions for disperse systems with coagulation and fragmentation | |
Pueyo et al. | A parametric-space-based scan-line algorithm for rendering bicubic surfaces | |
Lo et al. | An algorithm for the intersection of quadrilateral surfaces by tracing of neighbours | |
Rajasekaran et al. | Toward automated formation of microsphere arrangements using multiplexed optical tweezers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171215 Termination date: 20220213 |