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

文档序号:9930103阅读:来源:国知局
技术的基础上,将标准曲面(平面、圆柱面、球面等)的几何信息引入到碰撞检测的计算中,根据曲面的形状特征,直接过滤掉必然不会发生碰撞的曲面和三角片,一方面提高碰撞检测的效率,另一方面有效避免了由于三角片无法完美表示曲面形状而造成的误判情况。
[0028]根据本发明实施例,提供了一种碰撞检测方法。
[0029]图3为根据本发明实施例的碰撞检测方法的流程图,如图3所示,该方法主要包括以下步骤(步骤S302-步骤S304):
[0030]步骤S302,根据待检测的第一曲面和第二曲面的几何信息,判断所述第一曲面与所述第二曲面之间是否会发生碰撞。
[0031]在本发明实施例中,在进行碰撞检测之前,不仅保存待检测模型的各个曲面的三角片信息,还保存各个曲面的几何信息。其中,几何信息用于描述曲面的形状。例如,对于平面,可以记录平面上的一个点的位置及该平面的法矢方向;对于圆柱面,可以记录圆柱面的中心轴线(轴线上一点及轴线方向)及圆柱面的半径;对于球面,可以记录球面的球心位置及球面的半径等。
[0032]在执行步骤S302之前,可以先采用包围盒的方式判断两个待检测的模型的整体包围盒是否相交,在确定相交的情况下,再判断两个模型的两个曲面(即第一曲面和第二曲面)的包围盒是否相交,如果是,则再执行步骤S302。
[0033]在实际应用中,有装配位置关系的物体,其配合曲面绝大多数都是平面、圆柱面、球面等标准曲面。因此,在碰撞检测过程中,只需要对有限的几种标准曲面做判断,即可极大的提高检测的准确程度。
[0034]因此,在本发明可选实施例中,在步骤S304中可以使用标准曲面的几何信息过滤曲面。将模型的三角片按照曲面分组。如果两个曲面必然不会碰撞,则无需计算这两个曲面对应三角片的碰撞情况,直接判定这两组三角片必然不碰撞。下面通过几种标准曲面进行说明。
[0035](a)两平行平面
[0036]两个平行的平面,当两者不共面时,两平面必然不会发生碰撞。
[0037]两个平行的平面,当两者共面时,若两平面方向(即平面的法矢方向)相反,则两平面必然不会发生碰撞。
[0038]两个平行的平面,当两者共面时,若两平面方向(平面的法矢方向)相同,则无法判断两平面是否碰撞,需要通过两平面上三角片的相交情况进行判断。
[0039](b)两同轴圆柱面
[0040]两个同轴的圆柱曲面,当两者半径不相等时,两圆柱曲面必然不会发生碰撞;
[0041]两个同轴的圆柱曲面,当两者半径相等时,若两圆柱曲面方向相反(一个曲面上点的法矢指向中心轴线而另一个曲面上点的法矢远离中心轴线),则两圆柱曲面必然不会发生碰撞;
[0042]两个同轴的圆柱曲面,当其半径相等时,若两圆柱曲面方向相同,则无法判断两曲面是否碰撞,需要通过两曲面上三角片的相交情况进行判断。
[0043](C)两同心球面
[0044]两个同心的球面,当两者半径不相等时,两球面必然不会发生碰撞;
[0045]两个同心的球面,当两者半径相等时,若两球面方向相反(一个球面上点的法矢指向球心而另一个球面上点的法矢远离球心),则两球面必然不会发生碰撞;
[0046]两个同心的球面,当其半径相等时,若两球面方向相同,则无法判断两球面是否碰撞,需要通过两球面上三角片的相交情况进行判断。
[0047]步骤S304,在判断所述第一曲面与所述第二曲面不会发生碰撞的情况下,确定属于所述第一曲面对应的第一组三角片与属于所述第二曲面对应的第二组三角片之间不会发生碰撞。
[0048]在具体实施过程中,在碰撞检测,将待检测的各个曲面生成三角片时,根据各个三角片所在的曲面对三角片进行分组。
[0049]在本发明实施例的可选实施方式中,如果步骤S304中根据所述第一曲面和第二曲面的几何信息无法判断所述第一曲面与所述第二曲面之间是否会碰撞,则所述方法还可以包括:对于所述第一组三角片中每个三角片,根据该三角片的顶点位置信息以及所述第二曲面的几何信息,检测该三角片与所述第二曲面是否会发生碰撞,如果不会,确定该三角片与所述第二组三角片中所有三角片都不会发生碰撞。
[0050]如果一个三角片与一个曲面必然不会碰撞,则无需计算这个三角片与这个曲面上所有三角片的碰撞情况,直接判定这个三角片与这个曲面对应的所有三角片均不碰撞。下面通过第二曲面为以下几种典型的曲面为例进行说明。
[0051](a)平面
[0052]当三角片的三个顶点位于平面的同一侧时,三角片与平面必然不会发生碰撞。
[0053](b)圆柱面
[0054]当三角片的三个顶点与圆柱面中心轴线的距离均小于圆柱面半径时,三角片与圆柱面必然不会发生碰撞。
[0055](C)球面
[0056]当三角片的三个顶点与球面球心的距离均小于球面半径时,三角片与球面必然不会发生碰撞。
[0057]在本发明实施例的一个可选实施方式中,对于所述第一组三角片中的一个三角片,如果检测该三角片的顶点位置信息与所述第二曲面的几何信息无法判断该三角片是否会与所述第二曲面发生碰撞,所述方法还可以包括:根据所述第一组三角片中的该三角片的顶点位置信息与所述第二组三角片中各个三角片的顶点位置信息,检测所述第一组三角片中的该三角片是否会与所述第二组三角片中各个三角片发生碰撞。
[0058]下面通过一个可选实施例对本发明实施例提供的技术方案进行说明。
[0059]图4为该实施例的碰撞检测流程图。如图4所示,本发明可选实施例中,检测两个模型之间碰撞的方法主要概括以下步骤:
[0060]步骤S401,检测两个模型的整体包围盒是否相交。若不相交,则判定两模型没有发生碰撞;若相交,检测两模型的曲面之间是否发生碰撞,对两模型之间的每两个曲面,执行步骤S402。
[0061]步骤S402,检测两个曲面的包围盒是否相交。若不相交,则判定这两个曲面没有发生碰撞;若相交,则继续下一步骤。
[0062]步骤S403,使用标准曲面的几何信息判断两曲面是否相交。若不相交,则判定这两个曲面没有发生碰撞;若相交,则继续下一步骤。
[0063]步骤S404,使用标准曲面的几何信息过滤三角片。遍历曲面上所有的三角片,过滤掉必然不会与另一个曲面碰撞的三角片,记录剩余的三角片。
[0064]步骤S405,检测两曲面剩余三角片是否相交。若存在三角片相交的情况,则判定两个模型发生碰撞;否则,判定两个曲面没有发生碰撞。
[0065]步骤S406,如果所有曲面均没有发生碰撞,则判定两个模型没有发生碰撞。
[0066]根据本发明实施例,还提供了一种碰撞检测装置。
[0067]图5为根据本发明实施例的碰撞检测装置的结构示意图,如图5所示,该装置主要包括:判断模块50,用于根据待检测的第一曲面和第二曲面的几何信息,判断所述第一曲面与所述第二曲面之间是否会发生碰撞;确定模块52,用于在所述判断模块50判断所述第一曲面与所述第二曲面不会发生碰撞的情况下,确定属于所述第一曲面对应的第一组三角片与属于所述第二曲面对应的第二组三角片之间不会发生碰撞。
[0068]在具体实施过程中,判断模块50可以通过标准曲面的几何信息过滤不会发生碰撞的曲面,具体可以按照上述实施例所描述的方式进行判断,在此不再赘述。
[0069]在本发明实施例的一个可选实施方式,所述装置还可以包括:第一检测模块,用于在所述判断模块50根据所述第一曲面和第二曲面的几何信息不能判断出所述第一曲面与所述第二曲面是否会发生碰撞时,对于所述第一组三角片中每个三角片,根据该三角片的顶点位置信息以及所述第二曲面的几何信息,检测该三角片与所述第二曲面是否会发生碰撞,如果不
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1