《一种基于连续法向锥剔除的柔性场景连续碰撞检测方法.pdf》由会员分享,可在线阅读,更多相关《一种基于连续法向锥剔除的柔性场景连续碰撞检测方法.pdf(12页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102393827 A (43)申请公布日 2012.03.28 C N 1 0 2 3 9 3 8 2 7 A *CN102393827A* (21)申请号 201110200022.9 (22)申请日 2011.07.15 G06F 11/00(2006.01) (71)申请人浙江大学 地址 310027 浙江省杭州市西湖区浙大路 38号 (72)发明人唐敏 童若锋 杜鹏 赵杰伊 (74)专利代理机构杭州天勤知识产权代理有限 公司 33224 代理人胡红娟 (54) 发明名称 一种基于连续法向锥剔除的柔性场景连续碰 撞检测方法 (57) 摘要 本发明公开了一种基于。
2、连续法向锥剔除的柔 性场景连续碰撞检测方法,包括:(1)构造法向锥 并构建BVH;(2)构建BVTT,对BVTT进行法向锥剔 除测试和包围盒重叠测试;(3)对三角形对进行 精确连续碰撞检测。本发明通过在包围盒重叠测 试阶段,利用法向锥剔除不可能发生碰撞的自碰 撞节点,提高了包围盒重叠测试的效率和速度,大 大减少了精确碰撞检测的次数,减轻了精确碰撞 检测的负荷,进而提升了碰撞检测整体的速度,且 具有良好的兼容性。 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 6 页 附图 3 页 CN 102393835 A 1/2页 2 1.一。
3、种基于连续法向锥剔除的柔性场景连续碰撞检测方法,包括如下步骤: (1)对待检测的三角形网格柔性场景模型中的每个三角形构造对应的包围盒和法向 锥,进而建立三角形网格柔性场景模型的包围盒层次结构,并为包围盒层次结构中的每个 非底层节点构造对应的法向锥; (2)根据所述的包围盒层次结构,构建包围盒测试树;对所述的包围盒测试树进行法 向锥剔除测试和包围盒重叠测试,输出存在包围盒重叠的叶节点; (3)对输出的叶节点对应的三角形对进行精确连续碰撞检测。 2.根据权利要求1所述的基于连续法向锥剔除的柔性场景连续碰撞检测方法,其特征 在于:所述的步骤(1)中,对每个三角形构造对应的法向锥,包括如下步骤: 1)。
4、获取前一时刻和当前时刻三角形三个顶点的三维坐标和三角形的法向量; 2)以三条向量轴:n 0 、n 1 和为三条母线所确定的圆锥作为三角形的法向锥;其中: v a a 1 -a 0 ,v b b 1 -b 0 ,v c c 1 -c 0 ;a 0 ,b 0 ,c 0 分 别为前一时刻三角形三个顶点的三维坐标,a 1 ,b 1 ,c 1 分别为当前时刻三角形三个顶点的三 维坐标,n 0 和n 1 分别为前一时刻和当前时刻待检测三角形的法向量。 3.根据权利要求1所述的基于连续法向锥剔除的柔性场景连续碰撞检测方法,其 特征在于:所述的步骤(1)中,包围盒层次结构中的非底层节点的法向锥为顶角 +max。
5、( 1 , 2 ),轴h(h 1 +h 2 )/2的圆锥;其中: 1 , 2 分别为非底层节点的两个子节点 对应的法向锥的顶角,h 1 ,h 2 分别为非底层节点的两个子节点对应的法向锥的轴,为h 1 和 h 2 的夹角。 4.根据权利要求1所述的基于连续法向锥剔除的柔性场景连续碰撞检测方法,其特 征在于:所述的步骤(2)中,对包围盒测试树进行法向锥剔除测试和包围盒重叠测试为:自 顶向下判断包围盒测试树中的自碰撞节点对应的BVH节点的法向锥顶角是否大于等于180 度:若是,则遍历测试该自碰撞节点的子节点;若否,则对该自碰撞节点对应的BVH节点进 行轮廓边交叉测试:若BVH节点存在轮廓边交叉,则。
6、遍历测试该自碰撞节点的子节点;若 BVH节点不存在轮廓边交叉,则终止遍历测试该自碰撞节点的子节点;互碰撞节点采用包 围盒重叠测试。 5.根据权利要求4所述的基于连续法向锥剔除的柔性场景连续碰撞检测方法,其特征 在于:所述的轮廓边交叉测试,包括如下步骤: 1)在BVH节点对应的三角形网格子场景模型中任取两条轮廓边,所述的轮廓边为子场 景模型中的非公共边; 2)将两条轮廓边投影到任一公共平面上,并在公共平面上先判断前一时刻两条轮廓边 投影是否交叉:若是,则终止轮廓边交叉测试,即BVH节点存在轮廓边交叉;若否,则进行四 次点/边交叉测试,即前一时刻至当前时刻的时间段内任一条轮廓边投影的任一端点与另 。
7、一条轮廓边投影的交叉测试;若有一次点/边交叉测试结果为存在交叉,则终止轮廓边交 叉测试,即BVH节点存在轮廓边交叉;若四次点/边交叉测试结果均不存在交叉,则当前两 条轮廓边不存在交叉; 3)根据步骤1)和2),遍历测试两条轮廓边的所有组合,若两条轮廓边的所有组合都不 权 利 要 求 书CN 102393827 A CN 102393835 A 2/2页 3 存在交叉,则BVH节点不存在轮廓边交叉。 6.根据权利要求5所述的基于连续法向锥剔除的柔性场景连续碰撞检测方法,其特征 在于:所述的步骤2)中,点/边交叉测试结果取用当前BVH节点的父节点进行轮廓边交叉 测试时相应的点/边交叉测试结果。 7。
8、.根据权利要求5所述的基于连续法向锥剔除的柔性场景连续碰撞检测方法,其特征 在于:所述的步骤2)中,轮廓边投影取用当前BVH节点的父节点进行轮廓边交叉测试时相 应的轮廓边投影。 8.根据权利要求5所述的基于连续法向锥剔除的柔性场景连续碰撞检测方法,其特征 在于:所述的步骤2)中,对两条轮廓边在公共平面上的投影构建对应的包围盒,先进行包 围盒重叠测试,若存在包围盒重叠,则再进行四次点/边交叉测试;若不存在包围盒重叠, 则当前两条轮廓边不存在交叉。 9.根据权利要求1所述的基于连续法向锥剔除的柔性场景连续碰撞检测方法,其特 征在于:所述的步骤(1)中,当进行第n次碰撞检测时,包围盒层次结构是根据第。
9、n次碰撞 检测时刻每个三角形的空间位置,对上一次碰撞检测过程的包围盒层次结构中最底层的包 围盒进行重构,进而自底向上对上一次碰撞检测过程的包围盒层次结构进行整理更新而成 的,n为大于1的自然数。 10.根据权利要求1所述的基于连续法向锥剔除的柔性场景连续碰撞检测方法,其特 征在于:所述的包围盒为16-DOP包围盒。 权 利 要 求 书CN 102393827 A CN 102393835 A 1/6页 4 一种基于连续法向锥剔除的柔性场景连续碰撞检测方法 技术领域 0001 本发明属于计算机检测技术领域,具体涉及一种基于连续法向锥剔除的柔性场景 连续碰撞检测方法。 背景技术 0002 基于三角。
10、形网格的连续碰撞检测被广泛应用于不同的技术领域,包括机器人运动 路径规划、物理仿真、视频游戏等,它使用匀速线性插值轨迹,检测物体在两个离散位置间 可能发生的碰撞情况。 0003 目前应用最广泛的连续碰撞检测方法是利用包围盒层次结构(BVH),先对整个场 景进行包围盒重叠测试,当检测到两个包围盒不相交时,停止遍历该节点的子节点。各种 BVH,如球(Sphere)树,轴对齐包围盒(AABB)树,定向包围盒(OBB)树,离散定向多面体 (k-DOP)树等,这些层次结构通常采用自顶向下的方法进行构造,被广泛应用于刚体或柔性 物体的碰撞检测。对于柔性物体,除了需要考虑包围盒的紧凑性外,包围盒整理和重构的。
11、 效率也至关重要。图1为AABB、8-DOP和OBB三种包围盒的示意图,对于简单的包围盒,如 Sphere、AABB,其整理和构造十分快捷,但紧凑性较差;对于复杂的包围盒,如OBB,虽然较 为紧凑,但整理和构造的计算量较大;作为折中选择,k-DOP兼具紧凑性和高效性,因此常 被用于柔性物体的包围盒层次结构,但即使使用了最紧凑的包围盒,剔除率仍然不高。 0004 其主要原因在于包围盒测试树(BVTT)中的自碰撞节点,无法使用包围盒重叠测 试进行剔除,只能对它进行分解,通过对它的下层节点进行包围盒重叠测试来反推该节点 是否有自碰撞产生。对于一个复杂的场景模型,如果BVTT中某个自碰撞节点包含的下层。
12、节 点的层次数目很多,那么就需要进行大量的包围盒重叠测试才能判断出该BVTT节点是否 发生了自碰撞,造成测试的效率和速度低下,同时其检测输出的存在包围盒重叠的叶节点 “假碰撞”现象明显,进而加重了接下去精确碰撞检测的计算负荷。 0005 精确碰撞检测过程可分解为15种碰撞情况的检测:6种顶点/三角形之间碰撞检 测和9种边/边之间碰撞检测。而每个元素测试则需要计算一个三次方程的根,15种情况 需要求解15个三次方程以及一些附加的判断条件,因此这个过程需要耗费大量的计算时 间。 发明内容 0006 针对现有技术所存在的上述技术缺陷,本发明提供了一种基于连续法向锥剔除的 柔性场景连续碰撞检测方法,通。
13、过在包围盒重叠测试阶段,利用法向锥剔除不可能发生碰 撞的自碰撞节点,提高了包围盒重叠测试的效率和速度,减轻了精确碰撞检测的负荷。 0007 一种基于连续法向锥剔除的柔性场景连续碰撞检测方法,包括如下步骤: 0008 (1)对待检测的三角形网格柔性场景模型中的每个三角形构造对应的包围盒和法 向锥,进而建立三角形网格柔性场景模型的包围盒层次结构,并为包围盒层次结构中的每 个非底层节点构造对应的法向锥; 说 明 书CN 102393827 A CN 102393835 A 2/6页 5 0009 (2)根据所述的包围盒层次结构,构建包围盒测试树;对所述的包围盒测试树进 行法向锥剔除测试和包围盒重叠测。
14、试,输出存在包围盒重叠的叶节点; 0010 (3)对输出的叶节点对应的三角形对进行精确连续碰撞检测。 0011 所述的步骤(1)中,对每个三角形构造对应的法向锥,包括如下步骤: 0012 1)获取前一时刻和当前时刻三角形三个顶点的三维坐标和三角形的法向量; 0013 2)以三条向量轴:n 0 、n 1 和为三条母线所确定的圆锥作为三角形的法向锥;其中: v a a 1 -a 0 ,v b b 1 -b 0 ,v c c 1 -c 0 ;a 0 ,b 0 ,c 0 分 别为前一时刻三角形三个顶点的三维坐标,a 1 ,b 1 ,c 1 分别为当前时刻三角形三个顶点的三 维坐标,n 0 和n 1 分。
15、别为前一时刻和当前时刻待检测三角形的法向量。 0014 所述的步骤(1)中,包围盒层次结构中的非底层节点的法向锥为顶角 +max( 1 , 2 ),轴h(h 1 +h 2 )/2的圆锥;其中: 1 , 2 分别为非底层节点的两个子节点 对应的法向锥的顶角,h 1 ,h 2 分别为非底层节点的两个子节点对应的法向锥的轴,为h 1 和 h 2 的夹角。 0015 所述的步骤(2)中,对包围盒测试树进行法向锥剔除测试和包围盒重叠测试为: 自顶向下判断包围盒测试树中的自碰撞节点对应的BVH节点的法向锥顶角是否大于等于 180度:若是,则遍历测试该自碰撞节点的子节点;若否,则对该自碰撞节点对应的BVH节。
16、点 进行轮廓边交叉测试:若BVH节点存在轮廓边交叉,则遍历测试该自碰撞节点的子节点;若 BVH节点不存在轮廓边交叉,则终止遍历测试该自碰撞节点的子节点;互碰撞节点采用包 围盒重叠测试。 0016 所述的轮廓边交叉测试,包括如下步骤: 0017 1)在BVH节点对应的三角形网格子场景模型中任取两条轮廓边,所述的轮廓边为 子场景模型中的非公共边; 0018 2)将两条轮廓边投影到任一公共平面上,并在公共平面上先判断前一时刻两条轮 廓边投影是否交叉:若是,则终止轮廓边交叉测试,即BVH节点存在轮廓边交叉;若否,则进 行四次点/边交叉测试,即前一时刻至当前时刻的时间段内任一条轮廓边投影的任一端点 与另。
17、一条轮廓边投影的交叉测试;若有一次点/边交叉测试结果为存在交叉,则终止轮廓 边交叉测试,即BVH节点存在轮廓边交叉;若四次点/边交叉测试结果均不存在交叉,则当 前两条轮廓边不存在交叉; 0019 3)根据步骤1)和2),遍历测试两条轮廓边的所有组合,若两条轮廓边的所有组合 都不存在交叉,则BVH节点不存在轮廓边交叉。 0020 优选的技术方案中,所述的轮廓边交叉测试的步骤2)中,点/边交叉测试结果取 用当前BVH节点的父节点进行轮廓边交叉测试时相应的点/边交叉测试结果;可缩减相应 的检测速度。 0021 优选的技术方案中,所述的轮廓边交叉测试的步骤2)中,轮廓边投影取用当前 BVH节点的父节点。
18、进行轮廓边交叉测试时相应的轮廓边投影;可缩减相应的检测速度。 0022 优选的技术方案中,所述的轮廓边交叉测试的步骤2)中,对两条轮廓边在公共平 面上的投影构建对应的包围盒,先进行包围盒重叠测试,若存在包围盒重叠,则再进行四次 点/边交叉测试;若不存在包围盒重叠,则当前两条轮廓边不存在交叉;可缩减相应的检测 说 明 书CN 102393827 A CN 102393835 A 3/6页 6 速度。 0023 优选的技术方案中,所述的步骤(1)中,当进行第n次碰撞检测时,包围盒层次结 构是根据第n次碰撞检测时刻每个三角形的空间位置,对上一次碰撞检测过程的包围盒层 次结构中最底层的包围盒进行重构,。
19、进而自底向上对上一次碰撞检测过程的包围盒层次结 构进行整理更新而成的,n为大于1的自然数;相应的提高了碰撞检测速度。 0024 优选的技术方案中,所述的步骤(2)中,当进行第n次碰撞检测时,所述的包围盒 测试树为上一次碰撞检测过程中的包围盒测试树;无需重新构建,相应的提高了碰撞检测 速度。 0025 优选的技术方案中,所述的包围盒为16-DOP包围盒,保证了碰撞检测过程的高效 性。 0026 本发明通过在包围盒重叠测试阶段,利用法向锥测试剔除不可能发生碰撞的自碰 撞节点,提高了包围盒重叠测试的效率和速度,大大减少了精确碰撞检测的次数,减轻了精 确碰撞检测的负荷,进而提升了碰撞检测整体的速度,且。
20、具有良好的兼容性。 附图说明 0027 图1(a)为AABB包围盒的示意图,图1(b)为8-DOP包围盒的示意图,图1(c)为 OBB包围盒的示意图。 0028 图2为本发明连续碰撞检测方法的步骤流程示意图。 0029 图3(a)为BVH的结构示意图,图3(b)为BVTT的结构示意图。 0030 图4(a)为三角形运动过程中法向量变化示意图,图4(b)为三角形对应法向锥的 示意图。 0031 图5为轮廓边交叉测试的流程示意图。 具体实施方式 0032 为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的连续碰撞 检测方法进行详细说明。 0033 如图2所示,一种基于连续法向锥剔除的柔。
21、性场景连续碰撞检测方法,包括如下 步骤: 0034 (1)构造法向锥并构建BVH。 0035 对待检测的三角形网格柔性场景模型中的每个三角形构造对应的16-DOP包围盒 和法向锥,进而建立三角形网格柔性场景模型的包围盒层次结构,并为包围盒层次结构中 的每个非底层节点构造对应的法向锥;当进行第n次碰撞检测时,包围盒层次结构是根据 第n次碰撞检测时刻每个三角形的空间位置,对上一次碰撞检测过程中的包围盒层次结构 中最底层的16-DOP包围盒进行重构,进而自底向上对上一次碰撞检测过程中的包围盒层 次结构进行整理更新而成的,n为大于1的自然数。 0036 为每个三角形构造对应的16-DOP包围盒:首先将。
22、被包围三角形的顶点分别在各 个方向上进行投影,然后判断这些投影是否落在包围盒的外部,如果落在包围盒外部,需要 对该方向上包围盒的范围进行调整,保证该投影恰好落在边界上;对于16-DOP包围盒,任 何一个三角形顶点都需要做16次比较,判断这个点是否落在包围盒内部。 说 明 书CN 102393827 A CN 102393835 A 4/6页 7 0037 为每个三角形构造对应的法向锥:如图4(a)所示,对于三角形T,在前一时刻和当 前时刻,T的顶点三维坐标分别为a 0 ,b 0 ,c 0 和a 1 ,b 1 ,c 1 ,T的法向量分别为n 0 和n 1 ;以三 条向量轴:n 0 、n 1 和为。
23、三条母线所确定的圆锥作为三角形的法向锥,如图4(b)所示,其中: n 0 (b 0 -a 0 )(c 0 -a 0 ),n 1 (b 1 -a 1 )(c 1 -a 1 ), v a a 1 -a 0 ,v b b 1 -b 0 ,v c c 1 -c 0 。 0038 将每个三角形对应的16-DOP包围盒,作为BVH中最底层的16-DOP包围盒。在第 一次碰撞检测时,采用自顶向下的方法构建BVH,首先计算出这些三角形的中心,将这些三 角形中心投影到直角坐标系的某个坐标轴上,依据投影的正负,可以把它们分成两部分,分 别为它们构造包围盒。然后采用同样的方式,对这两个包围盒进行细分,直到包围盒中只。
24、包 含一个三角形。如图3(a)所示,有一个由a、b、c、d四个三角形组成的场景A 1 ,首先计算出 这些三角形的中心,将这些三角形中心投影到某个坐标轴上,依据投影的正负,可以把它们 分成两部分,一部分记为B 1 ,另一部分记为B 2 ,分别为B 1 和B 2 构造包围盒。然后采用同样的 方式,对B 1 、B 2 进行细分,直到包围盒中只包含一个三角形。 0039 然后,将每个三角形对应的法向锥,作为BVH中最底层节点的法向锥;BVH中的非 底层节点的法向锥为顶角+max( 1 , 2 ),轴h(h 1 +h 2 )/2的圆锥;其中: 1 , 2 分别为非底层节点的两个子节点对应的法向锥的顶角,。
25、h 1 ,h 2 分别为非底层节点的两个子节 点对应的法向锥的轴,为h 1 和h 2 的夹角。 0040 在随后的碰撞检测过程中,只需要重新计算BVH中最底层包围盒的法向锥大小, 对非底层的法向锥大小进行整理更新。这是一个自底向上的计算过程,需要将两个子节点 中的法向锥合并为一个父节点的法向锥。 0041 (2)构建BVTT,对BVTT进行法向锥剔除测试和包围盒重叠测试。 0042 根据包围盒层次结构,构建BVTT;对BVTT进行法向锥剔除测试和包围盒重叠测 试,输出存在包围盒重叠的叶节点;当进行第n次碰撞检测时,包围盒测试树为上一次碰撞 检测过程中的包围盒测试树。 0043 首先,采用自顶向。
26、下的构建方法构造BVTT,如图3所示,在图3(a)中已经对整个场 景构造了一个BVH;相应地,图3(b)就是针对图3(a)场景而构建的一个BVTT。 0044 自顶向下判断包围盒测试树中的自碰撞节点对应的BVH节点的法向锥顶角是否 大于等于180度:若是,则遍历测试该自碰撞节点的子节点;若否,则对该自碰撞节点对应 的BVH节点进行轮廓边交叉测试:若BVH节点存在轮廓边交叉,则遍历测试该自碰撞节点的 子节点;若BVH节点不存在轮廓边交叉,则终止遍历测试该自碰撞节点的子节点;互碰撞节 点采用包围盒重叠测试。 0045 轮廓边交叉测试,包括如下步骤: 0046 1)在BVH节点对应的三角形网格子场景。
27、模型中任取两条轮廓边,轮廓边为子场景 模型中的非公共边; 0047 2)将两条轮廓边投影到任一公共平面上,并在公共平面上先判断前一时刻两条轮 廓边投影是否交叉(如图5所示):若是,则终止轮廓边交叉测试,即BVH节点存在轮廓边 交叉;若否,则进行四次点/边交叉测试,即前一时刻至当前时刻的时间段内任一条轮廓边 投影的任一端点与另一条轮廓边投影的交叉测试;若有一次点/边交叉测试结果为存在交 说 明 书CN 102393827 A CN 102393835 A 5/6页 8 叉,则终止轮廓边交叉测试,即BVH节点存在轮廓边交叉;若四次点/边交叉测试结果均不 存在交叉,则当前两条轮廓边不存在交叉; 00。
28、48 3)根据步骤1)和2),遍历测试两条轮廓边的所有组合,若两条轮廓边的所有组合 都不存在交叉,则BVH节点不存在轮廓边交叉。 0049 其中,在轮廓边交叉测试的步骤2)中,点/边交叉测试结果和轮廓边投影可取用 当前BVH节点的父节点进行轮廓边交叉测试时相应的点/边交叉测试结果和轮廓边投影, 同时可对两条轮廓边在公共平面上的投影构建对应的包围盒,先进行包围盒重叠测试,若 存在包围盒重叠,则再进行四次点/边交叉测试;若不存在包围盒重叠,则当前两条轮廓边 不存在交叉。 0050 传统包围盒重叠测试为:如图3(b)所示,BVTT的根节点(A 1 ,A 1 )就是A 1 的自碰撞 检测对,然后提取出。
29、A 1 的两个子包围盒B 1 和B 2 ,分别对B 1 和B 2 做自碰撞检测,另外还需要 检测B 1 和B 2 之间是否发生碰撞,即比较两个16-DOP包围盒之间是否有重叠。这个过程可 以概括为:在这16个方向上比较两个包围盒是否有交集;如果在某个方向上没有重叠,则 停止比较并且判定两个包围盒没有重叠。如果在所有方向上都有重叠,并且B 1 有子包围盒 a和b,则采用与处理B 1 和B 2 相同的方法,判断B 1 的两个子包围盒a和b是否与B 2 发生碰 撞;如果在所有方向上都有重叠,并且B 1 没有子包围盒,但是B 2 有子包围盒c和d,则与处 理B 1 和B 2 相同的方法,判断B 2 的。
30、两个子包围盒c和d是否与B 1 发生碰撞;如果在所有方 向上都有重叠,并且B 1 和B 2 都已经是最底层包围盒,没有子包围盒,输出B 1 与B 2 对应的叶 节点。 0051 (3)对三角形对进行精确连续碰撞检测。 0052 对输出的叶节点对应的三角形对,使用元素测试进行精确计算,得到碰撞发生的 第一碰撞时间。这个过程中,将两个三角形之间的碰撞检测问题,转化为顶点与三角形的碰 撞检测以及边与边的碰撞检测。 0053 以下通过相关实验测试出本实施方式与传统碰撞检测方法在检测耗时以及精确 碰撞检测次数等相关指标上的数据(如表1所示)。 0054 表1:碰撞检测耗时以及精确碰撞检测次数的对比数据 。
31、0055 0056 由此可见,本实施方式通过在包围盒重叠测试阶段,利用法向锥剔除不可能发生 碰撞的自碰撞节点,提高了包围盒重叠测试的效率和速度,大大减少了精确碰撞检测的次 说 明 书CN 102393827 A CN 102393835 A 6/6页 9 数,减轻了精确碰撞检测的负荷,进而提升了碰撞检测整体的速度,且具有良好的兼容性。 说 明 书CN 102393827 A CN 102393835 A 1/3页 10 图1 图2 说 明 书 附 图CN 102393827 A CN 102393835 A 2/3页 11 图3 图4 说 明 书 附 图CN 102393827 A CN 102393835 A 3/3页 12 图5 说 明 书 附 图CN 102393827 A 。