CN102393825A - 一种基于非共面剔除的柔性场景连续碰撞检测方法 - Google Patents
一种基于非共面剔除的柔性场景连续碰撞检测方法 Download PDFInfo
- Publication number
- CN102393825A CN102393825A CN2011101987638A CN201110198763A CN102393825A CN 102393825 A CN102393825 A CN 102393825A CN 2011101987638 A CN2011101987638 A CN 2011101987638A CN 201110198763 A CN201110198763 A CN 201110198763A CN 102393825 A CN102393825 A CN 102393825A
- Authority
- CN
- China
- Prior art keywords
- detected
- collision
- coplane
- bounding box
- rejecting
- 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)构建BVTT,对BVTT进行包围盒重叠测试;(3)对三角形对非共面剔除后进行精确碰撞检测。本发明通过在精确碰撞检测阶段,利用非共面剔除相应的碰撞情况,由于非共面剔除检测剔除效率高,检测速度快,提高了连续碰撞检测的效率,大大减少了精确碰撞检测的次数,进而大大加快了连续碰撞检测的整体速度,且具有很好的兼容性。
Description
技术领域
本发明属于计算机检测技术领域,具体涉及一种基于非共面剔除的柔性场景连续碰撞检测方法。
背景技术
基于三角形网格的连续碰撞检测被广泛应用于不同的技术领域,包括机器人运动路径规划、物理仿真、视频游戏等,它使用匀速线性插值轨迹,检测物体在两个离散位置间可能发生的碰撞情况。
目前应用最广泛的连续碰撞检测方法是利用包围盒层次结构(BVH),先对整个场景进行包围盒重叠测试,当检测到两个包围盒不相交时,停止遍历该节点的子节点。各种BVH,如球(Sphere)树,轴对齐包围盒(AABB)树,定向包围盒(OBB)树,离散定向多面体(k-DOP)树等,这些层次结构通常采用自顶向下的方法进行构造,被广泛应用于刚体或柔性物体的碰撞检测。对于柔性物体,除了需要考虑包围盒的紧凑性外,包围盒整理和重构的效率也至关重要。图1为AABB、8-DOP和OBB三种包围盒的示意图,对于简单的包围盒,如Sphere、AABB,其整理和构造十分快捷,但紧凑性较差;对于复杂的包围盒,如OBB,虽然较为紧凑,但整理和构造的计算量较大;作为折中选择,k-DOP兼具紧凑性和高效性,因此常被用于柔性物体的包围盒层次结构,但即使使用了最紧凑的包围盒,剔除率仍然不高。
因此,对于包围盒重叠测试输出的存在重叠的包围盒对,传统方法通过精确碰撞检测来判断包围盒对所对应的三角形对是否发生了碰撞,精确碰撞检测过程可分解为15种碰撞情况的检测:6种顶点/三角形之间碰撞检测和9种边/边之间碰撞检测。而每个元素测试至少需要求解一个三次方程的根,15种情况需要求解15个三次方程以及一些附加的判断条件,因此这个过程需要耗费大量的计算时间。
发明内容
针对现有技术所存在的上述技术缺陷,本发明提供了一种基于非共面剔除的柔性场景连续碰撞检测方法,通过在精确碰撞检测阶段,利用非共面剔除相应的碰撞情况,减少了精确碰撞检测的次数,提高了碰撞检测的速度。
一种基于非共面剔除的柔性场景连续碰撞检测方法,包括如下步骤:
(1)对待检测的三角形网格柔性场景模型中的每个三角形构造对应的包围盒,进而建立三角形网格柔性场景模型的包围盒层次结构;
(2)根据所述的包围盒层次结构,构建包围盒测试树(BVTT);对所述的包围盒测试树进行包围盒重叠测试,输出存在包围盒重叠的叶节点;
(3)对输出的叶节点对应的三角形对进行非共面剔除检测,对剔除后保留的碰撞情况进行精确碰撞检测。
所述的非共面剔除检测包括点/面非共面剔除检测和边/边非共面剔除检测。
所述的点/面非共面剔除检测,包括如下步骤:
1)获取前一时刻和当前时刻待检测三角形三个顶点的三维坐标、待检测点的三维坐标、待检测三角形的法向量;
2)判断四个检测标量值:A、B、是否符号相同,若是,则待检测三角形和待检测点不可能共面,剔除待检测三角形和待检测点的碰撞情况;若否,则保留该碰撞情况;其中:A=(P0-a0)·n0,B=(P1-a1)·n1, E=(P0-a0)·n1,F=(P1-a1)·n0;va=a1-a0,vb=b1-b0,vc=c1-c0;a0,b0,c0分别为前一时刻待检测三角形三个顶点的三维坐标,a1,b1,c1分别为当前时刻待检测三角形三个顶点的三维坐标,n0和n1分别为前一时刻和当前时刻待检测三角形的法向量,P0和P1分别为前一时刻和当前时刻待检测点的三维坐标。
所述的边/边非共面剔除检测,包括如下步骤:
1)获取前一时刻和当前时刻一条待检测边两个端点的三维坐标、另一条待检测边两个端点的三维坐标;
2)判断四个检测标量值:A′、B′、是否符号相同,若是,则两条待检测边不可能共面,剔除两条待检测边的碰撞情况;若否,则保留该碰撞情况;其中:A′=(l0-k0)·n′0,B′=(l1-k1)·n′1, E′=(l0-k0)·n′1,F′=(l1-k1)·n′0;n′0=(u0-k0)×(u0-k0),n′1=(u1-k1)×(u1-k1),vk=k1-k0,vu=u1-u0,vv=v1-v0;u0,v0分别为前一时刻一条待检测边两个端点的三维坐标,u1,v1分别为当前时刻一条待检测边两个端点的三维坐标,k0,l0分别为前一时刻另一条待检测边两个端点的三维坐标,k1,l1分别为当前时刻另一条待检测边两个端点的三维坐标。
优选的技术方案中,所述的步骤(1)中,当进行第n次碰撞检测时,包围盒层次结构是根据第n次碰撞检测时刻每个三角形的空间位置,对上一次碰撞检测过程的包围盒层次结构中最底层的包围盒进行重构,进而自底向上对上一次碰撞检测过程的包围盒层次结构进行整理更新而成的,n为大于1的自然数;相应的提高了碰撞检测速度。
优选的技术方案中,所述的步骤(2)中,当进行第n次碰撞检测时,所述的包围盒测试树为上一次碰撞检测过程中的包围盒测试树;无需重新构建,相应的提高了碰撞检测速度。
优选的技术方案中,所述的包围盒为16-DOP包围盒,保证了碰撞检测过程的高效性。
本发明通过在精确碰撞检测阶段,利用非共面剔除相应的碰撞情况,由于非共面剔除检测剔除效率高,检测速度快,大大减少了精确碰撞检测的次数,提升了碰撞检测整体的速度,且具有很好的兼容性。
附图说明
图1(a)为AABB包围盒的示意图,图1(b)为8-DOP包围盒的示意图,图1(c)为OBB包围盒的示意图。
图2为本发明连续碰撞检测方法的步骤流程示意图。
图3(a)为BVH的结构示意图,图3(b)为BVTT的结构示意图。
图4(a)为点/面非共面剔除测试下点与三角形的相对运动示意图。
图4(b)为点/面非共面剔除测试下某时刻点与三角形相对位置示意图。
图5(a)为边/边非共面剔除测试下边与边的相对运动示意图。
图5(b)为边/边非共面剔除测试下某时刻边与边相对位置示意图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的连续碰撞检测方法进行详细说明。
如图2所示,一种基于非共面剔除的柔性场景连续碰撞检测方法,包括如下步骤:
(1)构建包围盒层次结构。
对待检测的三角形网格柔性场景模型中的每个三角形构造对应的16-DOP包围盒,进而建立三角形网格柔性场景模型的包围盒层次结构;当进行第n次碰撞检测时,包围盒层次结构是根据第n次碰撞检测时刻每个三角形的空间位置,对上一次碰撞检测过程中的包围盒层次结构中最底层的16-DOP包围盒进行重构,进而自底向上对上一次碰撞检测过程中的包围盒层次结构进行整理更新而成的,n为大于1的自然数。
为每个三角形构造对应的16-DOP包围盒:首先将被包围三角形的顶点分别在各个方向上进行投影,然后判断这些投影是否落在包围盒的外部,如果落在包围盒外部,需要对该方向上包围盒的范围进行调整,保证该投影恰好落在边界上;对于16-DOP包围盒,任何一个三角形顶点都需要做16次比较,判断这个点是否落在包围盒内部。
将每个三角形对应的16-DOP包围盒,作为BVH中最底层的16-DOP包围盒。在第一次碰撞检测时,采用自顶向下的方法构建BVH,首先计算出这些三角形的中心,将这些三角形中心投影到直角坐标系的某个坐标轴上,依据投影的正负,可以把它们分成两部分,分别为它们构造包围盒。然后采用同样的方式,对这两个包围盒进行细分,直到包围盒中只包含一个三角形。如图3(a)所示,有一个由a、b、c、d四个三角形组成的场景A1,首先计算出这些三角形的中心,将这些三角形中心投影到某个坐标轴上,依据投影的正负,可以把它们分成两部分,一部分记为B1,另一部分记为B2,分别为B1和B2构造包围盒。然后采用同样的方式,对B1、B2进行细分,直到包围盒中只包含一个三角形。
在随后的碰撞检测过程中,只需要对BVH中的非底层的包围盒大小进行重新计算。这是一个自底向上的计算过程,需要将每个非底层的两个子16-DOP包围盒合并为一个大的16-DOP包围盒。
(2)构建BVTT,对BVTT进行包围盒重叠测试。
根据包围盒层次结构,构建BVTT;对BVTT进行包围盒重叠测试,输出存在包围盒重叠的叶节点;当进行第n次碰撞检测时,包围盒测试树为上一次碰撞检测过程中的包围盒测试树。
首先,采用自顶向下的构建方法构造BVTT,如图3所示,在图3(a)中已经对整个场景构造了一个BVH;相应地,图3(b)就是针对图3(a)场景而构建的一个BVTT。
BVTT的根节点(A1,A1)就是A1的自碰撞检测对,然后提取出A1的两个子包围盒B1和B2,分别对B1和B2做自碰撞检测,另外还需要检测B1和B2之间是否发生碰撞,即比较两个16-DOP包围盒之间是否有重叠。这个过程可以概括为:在这16个方向上比较两个包围盒是否有交集;如果在某个方向上没有重叠,则停止比较并且判定两个包围盒没有重叠。如果在所有方向上都有重叠,并且B1有子包围盒a和b,则采用与处理B1和B2相同的方法,判断B1的两个子包围盒a和b是否与B2发生碰撞;如果在所有方向上都有重叠,并且B1没有子包围盒,但是B2有子包围盒c和d,则与处理B1和B2相同的方法,判断B2的两个子包围盒c和d是否与B1发生碰撞;如果在所有方向上都有重叠,并且B1和B2都已经是最底层包围盒,没有子包围盒,输出B1与B2对应的叶节点。
(3)对三角形对非共面剔除后进行精确碰撞检测。
精确碰撞检测过程包括15种碰撞情况的检测:6种点/三角形之间碰撞检测和9种边/边之间碰撞检测。对输出的叶节点对应的三角形对先进行非共面剔除检测,对剔除后保留的碰撞情况进行精确碰撞检测。
非共面剔除检测包括点/面非共面剔除检测和边/边非共面剔除检测。
点/面的非共面剔除测试的过程为:如图4(a)所示,对于三角形T和三角形外一点P,在前一时刻和当前时刻,T的顶点分别为{a0,b0,c0}和{a1,b1,c1},T的法向量分别为n0和n1,P的顶点分别为P0和P1。它们的顶点在该时间区间对相对于时间变量t进行线性插值,图4(b)为在某时刻t,P与T相对位置示意图。如果下面的4个标量值A、B、符号相同,则P和T在该时间区间内不可能共面,剔除当前碰撞情况。其中:A=(P0-a0)·n0,B=(P1-a1)·n1, E=(P0-a0)·n1,F=(P1-a1)·n0,va=a1-a0,vb=b1-b0,vc=c1-c0。
边/边的非共面剔除测试的过程为:如图5(a)所示,对于两条边E1和E2,在前一时刻和当前时刻,E1的端点分别为{u0,c0}和{u1,v1},E2的端点分别为{k0,l0}和{k1,l1}。它们的端点在该时间区间相对于时间变量t进行线性插值,图5(b)为在某时刻t,E1和E2相对位置示意图。如果下面的4个标量值A′、B′、符号相同,则两条边E1和E2在该时间区间内不可能共面,剔除当前碰撞情况。其中:A′=(l0-k0)·n′0,B′=(l1-k1)·n′1, E′=(l0-k0)·n′1,F′=(l1-k1)·n′0,n′0=(u0-k0)×(u0-k0),n′1=(u1-k1)×(u1-k1),vk=k1-k0,vu=u1-u0,vv=v1-v0。
最后对剔除后保留的碰撞情况进行精确碰撞检测;使用元素测试进行精确计算,得到碰撞发生的第一碰撞时间。
以下通过相关实验测试出本实施方式与传统碰撞检测方法在检测耗时以及精确碰撞检测次数等相关指标上的数据(如表1所示)。
表1:碰撞检测耗时以及精确碰撞检测次数的对比数据
由此可见,本实施方式通过利用非共面剔除方法对需要进行精确碰撞检测的三角形对先进行预处理,排除相应的碰撞情况,提高了连续碰撞检测的效率,大大减少了精确碰撞检测的次数,进而大大加快了连续碰撞检测的速度,具有良好的兼容性。
Claims (7)
1.一种基于非共面剔除的柔性场景连续碰撞检测方法,包括如下步骤:
(1)对待检测的三角形网格柔性场景模型中的每个三角形构造对应的包围盒,进而建立三角形网格柔性场景模型的包围盒层次结构;
(2)根据所述的包围盒层次结构,构建包围盒测试树;对所述的包围盒测试树进行包围盒重叠测试,输出存在包围盒重叠的叶节点;
(3)对输出的叶节点对应的三角形对进行非共面剔除检测,对剔除后保留的碰撞情况进行精确碰撞检测。
2.根据权利要求1所述的基于非共面剔除的柔性场景连续碰撞检测方法,其特征在于:所述的非共面剔除检测包括点/面非共面剔除检测和边/边非共面剔除检测。
3.根据权利要求2所述的基于非共面剔除的柔性场景连续碰撞检测方法,其特征在于:所述的点/面非共面剔除检测,包括如下步骤:
1)获取前一时刻和当前时刻待检测三角形三个顶点的三维坐标、待检测点的三维坐标、待检测三角形的法向量;
4.根据权利要求2所述的基于非共面剔除的柔性场景连续碰撞检测方法,其特征在于:所述的边/边非共面剔除检测,包括如下步骤:
1)获取前一时刻和当前时刻一条待检测边两个端点的三维坐标、另一条待检测边两个端点的三维坐标;
2)判断四个检测标量值:A′、B′、是否符号相同,若是,则两条待检测边不可能共面,剔除两条待检测边的碰撞情况;若否,则保留该碰撞情况;其中:A′=(l0-k0)·n′0,B′=(l1-k1)·n′1, E′=(l0-k0)·n′1,F′=(l1-k1)·n′0;n′0=(u0-k0)×(u0-k0),n′1=(u1-k1)×(u1-k1),vk=k1-k0,vu=u1-u0,vv=v1-v0;u0,v0分别为前一时刻一条待检测边两个端点的三维坐标,u1,v1分别为当前时刻一条待检测边两个端点的三维坐标,k0,l0分别为前一时刻另一条待检测边两个端点的三维坐标,k1,l1分别为当前时刻另一条待检测边两个端点的三维坐标。
5.根据权利要求1所述的基于非共面剔除的柔性场景连续碰撞检测方法,其特征在于:所述的步骤(1)中,当进行第n次碰撞检测时,包围盒层次结构是根据第n次碰撞检测时刻每个三角形的空间位置,对上一次碰撞检测过程的包围盒层次结构中最底层的包围盒进行重构,进而自底向上对上一次碰撞检测过程的包围盒层次结构进行整理更新而成的,n为大于1的自然数。
6.根据权利要求1所述的基于非共面剔除的柔性场景连续碰撞检测方法,其特征在于:所述的步骤(2)中,当进行第n次碰撞检测时,所述的包围盒测试树为上一次碰撞检测过程中的包围盒测试树。
7.根据权利要求1所述的基于非共面剔除的柔性场景连续碰撞检测方法,其特征在于:所述的包围盒为16-DOP包围盒。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110198763 CN102393825B (zh) | 2011-07-15 | 2011-07-15 | 一种基于非共面剔除的柔性场景连续碰撞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110198763 CN102393825B (zh) | 2011-07-15 | 2011-07-15 | 一种基于非共面剔除的柔性场景连续碰撞检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102393825A true CN102393825A (zh) | 2012-03-28 |
CN102393825B CN102393825B (zh) | 2013-01-30 |
Family
ID=45861153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110198763 Active CN102393825B (zh) | 2011-07-15 | 2011-07-15 | 一种基于非共面剔除的柔性场景连续碰撞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102393825B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708017A (zh) * | 2012-05-18 | 2012-10-03 | 浙江大学 | 一种基于非共线剔除的柔性场景连续碰撞检测方法 |
CN102708584A (zh) * | 2012-05-09 | 2012-10-03 | 浙江大学 | 一种基于二维图像的楼房倒塌模拟方法 |
CN103324784A (zh) * | 2013-05-30 | 2013-09-25 | 杭州电子科技大学 | 一种基于局部约束的网格模型碰撞处理方法 |
CN113034338A (zh) * | 2019-12-24 | 2021-06-25 | 深圳市海思半导体有限公司 | 一种用于gpu的bvh构造方法、装置及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101984443A (zh) * | 2010-11-10 | 2011-03-09 | 北京航空航天大学 | 一种改进的柔性织物碰撞处理方法 |
-
2011
- 2011-07-15 CN CN 201110198763 patent/CN102393825B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101984443A (zh) * | 2010-11-10 | 2011-03-09 | 北京航空航天大学 | 一种改进的柔性织物碰撞处理方法 |
Non-Patent Citations (1)
Title |
---|
XINYU ZHANG,YOUNG J.KIM: "Simple Culling Methods for Continuous Collision Detection of Deforming Triangles", 《IEEE TRANSACTIONS ON VISUALIZATION AND COMPUTER GRAPHICS》, vol. 18, no. 7, 16 June 2011 (2011-06-16), pages 1146 - 1155, XP011444295, DOI: doi:10.1109/TVCG.2011.120 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708584A (zh) * | 2012-05-09 | 2012-10-03 | 浙江大学 | 一种基于二维图像的楼房倒塌模拟方法 |
CN102708584B (zh) * | 2012-05-09 | 2014-06-04 | 浙江大学 | 一种基于二维图像的楼房倒塌模拟方法 |
CN102708017A (zh) * | 2012-05-18 | 2012-10-03 | 浙江大学 | 一种基于非共线剔除的柔性场景连续碰撞检测方法 |
CN103324784A (zh) * | 2013-05-30 | 2013-09-25 | 杭州电子科技大学 | 一种基于局部约束的网格模型碰撞处理方法 |
CN103324784B (zh) * | 2013-05-30 | 2016-05-18 | 杭州电子科技大学 | 一种基于局部约束的网格模型碰撞处理方法 |
CN113034338A (zh) * | 2019-12-24 | 2021-06-25 | 深圳市海思半导体有限公司 | 一种用于gpu的bvh构造方法、装置及存储介质 |
CN113034338B (zh) * | 2019-12-24 | 2023-03-17 | 深圳市海思半导体有限公司 | 一种用于gpu的bvh构造方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102393825B (zh) | 2013-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111707269B (zh) | 一种三维环境下的无人机路径规划方法 | |
Mezger et al. | Hierarchical techniques in collision detection for cloth animation | |
Bera et al. | Efficient trajectory extraction and parameter learning for data-driven crowd simulation. | |
CN110458805A (zh) | 一种平面检测方法、计算设备以及电路系统 | |
CN104200031B (zh) | 一种基于距离优先和时空相关性的碰撞检测方法 | |
CN106570468A (zh) | 一种重建LiDAR原始点云建筑物轮廓线的方法 | |
CN102193837B (zh) | 一种基于前线的包围盒碰撞检测方法 | |
CN101984443B (zh) | 一种改进的柔性织物碰撞处理方法 | |
CN102722910B (zh) | 一种基于分离轴剔除的体网格场景连续碰撞检测方法 | |
CN103559705B (zh) | 一种比较不同植物形态相似度的计算机方法 | |
CN102393825B (zh) | 一种基于非共面剔除的柔性场景连续碰撞检测方法 | |
CN105469445B (zh) | 一种步长可变地图生成方法 | |
CN102253862B (zh) | 一种基于SIMD的k-DOP包围盒碰撞检测方法 | |
CN104658033A (zh) | 多光源下的全局光照绘制方法及装置 | |
CN102393826A (zh) | 一种基于多核并行处理的柔性场景连续碰撞检测方法 | |
CN102708017A (zh) | 一种基于非共线剔除的柔性场景连续碰撞检测方法 | |
CN104778737B (zh) | 基于gpu的大规模落叶实时渲染方法 | |
CN104392053A (zh) | 一种蒙皮滚弯零件截面曲率分析方法 | |
CN104809760A (zh) | 基于深度优先策略的地理空间三维外轮廓自动构建方法 | |
CN105512610B (zh) | 一种基于感兴趣点位置信息的视频中人体动作识别方法 | |
CN104715500A (zh) | 一种基于三维动画设计的3d动画制作开发系统 | |
CN102393827A (zh) | 一种基于连续法向锥剔除的柔性场景连续碰撞检测方法 | |
CN104361625A (zh) | 一种基于射线原理的带边界保留的云数据精简算法 | |
CN103324784A (zh) | 一种基于局部约束的网格模型碰撞处理方法 | |
CN103049341A (zh) | 带预判方法的obb层次体树碰撞检测方法 |
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 |