碰撞检测方法及装置的制造方法

文档序号:9930103阅读:262来源:国知局
碰撞检测方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,具体而言,涉及一种碰撞检测方法及装置。
【背景技术】
[0002]随着近年来计算机技术的高速发展,在软件构建的虚拟环境中模拟实际物体的运动、检测其运动过程中的碰撞情况,已经越来越广泛的应用到科学研究、工业制造等领域。
[0003]企业用于虚拟仿真的三维模型,其数据量庞大,运动过程中模型间的位置关系复杂。如何快速且准确的进行碰撞检测,成为该项技术能否被实际应用的一个关键问题。
[0004]现有技术的一种解决方案是:基于包围盒判断模型之间的三角片是否相交,进而判断模型之间是否发生碰撞。包围盒可以快速过滤必然不碰撞的情况,从而提高算法效率。
[0005]三维模型的外观形状可以用一组三角片近似表示。三维模型轮廓(曲面)的求交运算,被转换为三角片的求交运算。这种方法有效的降低了算法的复杂度,并且可以通过包围盒过滤等方法,极大的提高计算的效率。
[0006]然而,由于三角片组无法完美的表示三维模型的形状特征,在某些位置关系下,使用上述方案进行的碰撞检测,有很大几率会发生误判。
[0007]例如,在图1所示的将一根轴插入到一个孔中的碰撞检测中,轴的圆柱面与孔的圆柱面同轴且半径相等。这两个圆柱面如果用三角片表示,则会转变为多棱柱的形状。两圆柱面沿轴线方向发生相对旋转运动时,始终不会碰撞;但两多棱柱沿中心轴线方向发生相对旋转运动时,则会发生碰撞,如图2所示。因此,用三角片表示的轴模型与孔模型,用上述方案进行碰撞检测时,有很大几率会被误判为有碰撞发生。

【发明内容】

[0008]针对相关技术中在进行碰撞检测时可能存在误判的问题,本发明提供了一种碰撞检测方法及装置。
[0009]根据本发明的一个方面,提供了一种碰撞检测方法,包括:根据待检测的第一曲面和第二曲面的几何信息,判断所述第一曲面与所述第二曲面之间是否会发生碰撞;在判断所述第一曲面与所述第二曲面不会发生碰撞的情况下,确定属于所述第一曲面对应的第一组三角片与属于所述第二曲面对应的第二组三角片之间不会发生碰撞。
[0010]可选地,如果根据所述第一曲面和第二曲面的几何信息无法判断所述第一曲面与所述第二曲面之间是否会碰撞,所述方法还包括:对于所述第一组三角片中每个三角片,根据该三角片的顶点位置信息以及所述第二曲面的几何信息,检测该三角片与所述第二曲面是否会发生碰撞,如果不会,确定该三角片与所述第二组三角片中所有三角片都不会发生碰撞。
[0011]可选地,对于所述第一组三角片中的一个三角片,如果检测该三角片的顶点位置信息与所述第二曲面的几何信息无法判断该三角片是否会与所述第二曲面发生碰撞,所述方法还包括:根据所述第一组三角片中的该三角片的顶点位置信息与所述第二组三角片中各个三角片的顶点位置信息,检测所述第一组三角片中的该三角片是否会与所述第二组三角片中各个三角片发生碰撞。
[0012]可选地,检测该三角片与所述第二曲面是否会发生碰撞,包括以下至少之一:所述第二曲面为平面,如果所述三角片的三个顶点位于所述第二曲面的同一侧,则所述三角片与所述第二曲面不会发生碰撞;所述第二曲面为圆柱面,如果所述三角片的三个顶点与所述第二曲面中心轴线的距离均小于所述第二曲面半径,则所述三角片与所述第二曲面不会发生碰撞;所述第二曲面为球面,如果所述三角片的三个顶点与所述第二曲面球心的距离均小于所述第二曲面半径,则所述三角片与所述第二曲面不会发生碰撞。
[0013]可选地,如果所述第一曲面与所述第二曲面为平行平面,则判断所述第一曲面与所述第二曲面之间是否会发生碰撞,包括以下至少之一:如果所述第一曲面与所述第二曲面不共面,则所述第一曲面与所述第二曲面不会发生碰撞;如果所述第一曲面与所述第二曲面共面,且所述第一曲面的法矢方向与所述第二曲面的法矢方向相反,则所述第一曲面与所述第二曲面不会发生碰撞;如果所述第一曲面与所述第二曲面共面,且所述第一曲面的法矢方向与所述第二曲面的法矢方向相同,则确定根据所述第一曲面和第二曲面的几何信息无法判断所述第一曲面与所述第二曲面之间是否会碰撞。
[0014]可选地,如果所述第一曲面与所述第二曲面为同轴圆柱面,则判断所述第一曲面与所述第二曲面之间是否会发生碰撞,包括以下至少之一:如果所述第一曲面与所述第二曲面的半径不相等,则所述第一曲面与所述第二曲面之间不会发生碰撞;如果所述第一曲面与所述第二曲面的半径相等,且所述第一曲面和所述第二曲面的方向相反,则所述第一曲面与所述第二曲面之间不会发生碰撞;如果所述第一曲面与所述第二曲面的半径相等,且所述第一曲面和所述第二曲面的方向相同,则确定根据所述第一曲面和第二曲面的几何信息无法判断所述第一曲面与所述第二曲面之间是否会碰撞。
[0015]可选地,如果所述第一曲面与所述第二曲面为同心球面,则判断所述第一曲面与所述第二曲面之间是否会发生碰撞,包括以下至少之一:如果所述第一曲面与所述第二曲面的半径不相等,则所述第一曲面与所述第二曲面不会发生碰撞;如果所述第一曲面与所述第二曲面的半径相等,且所述第一曲面与所述第二曲面的方向相反,则所述第一曲面与所述第二曲面不会发生碰撞;如果所述第一曲面与所述第二曲面的半径相等,且所述第一曲面与所述第二曲面的方向相同,则确定无法判断所述第一曲面与所述第二曲面是否会发生碰撞O
[0016]根据本发明的另一个方面,提供了一种碰撞检测装置,包括:判断模块,用于根据待检测的第一曲面和第二曲面的几何信息,判断所述第一曲面与所述第二曲面之间是否会发生碰撞;确定模块,用于在所述判断模块判断所述第一曲面与所述第二曲面不会发生碰撞的情况下,确定属于所述第一曲面对应的第一组三角片与属于所述第二曲面对应的第二组三角片之间不会发生碰撞。
[0017]可选地,所述装置还包括:第一检测模块,用于在所述判断模块根据所述第一曲面和第二曲面的几何信息不能判断出所述第一曲面与所述第二曲面是否会发生碰撞时,对于所述第一组三角片中每个三角片,根据该三角片的顶点位置信息以及所述第二曲面的几何信息,检测该三角片与所述第二曲面是否会发生碰撞,如果不会,而确定该三角片与所述第二组三角片中所有三角片都不会发生碰撞。
[0018]可选地,所述装置还包括:第二检测模块,用于在所述第一检测模块根据所述第一组三角片中的一个三角片的顶点位置信息与所述第二曲面的几何信息无法判断该三角片是否会与所述第二曲面发生碰撞的情况下,根据所述三角片的顶点位置信息与所述第二组三角片中各个三角片的顶点位置信息,检测所述第一组三角片中的该三角片是否会与所述第二组三角片中各个三角片发生碰撞。
[0019]通过本发明,根据曲面的几何信息,判断两个曲面之间是否发生碰撞,在判断两个曲面不会发生碰撞时,判定这两个曲面之间的三角片也不会发生碰撞,从而减少了误判几率,提高了检测的速度。
【附图说明】
[0020]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0021]图1为将一根轴插入到一个孔中的碰撞检测示例图;
[0022]图2为将一根轴插入到一个孔中的碰撞检测结果的示意图;
[0023]图3为根据本发明实施例的碰撞检测方法的流程图;
[0024]图4为本发明可选实施例的碰撞检测流程图;
[0025]图5为根据本发明实施例的碰撞检测装置的结构示意图。
【具体实施方式】
[0026]下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0027]在本发明实施例中,在现有
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1