一种动态碰撞检测的方法及装置与流程

文档序号:11230775阅读:1134来源:国知局
一种动态碰撞检测的方法及装置与流程

本发明涉及虚拟现实技术辅助产品设计分析技术领域,特别涉及一种动态碰撞检测的方法及装置。



背景技术:

虚拟维修是指运用虚拟现实技术和计算机仿真技术,建立一个包含装备虚拟样机、维修人员、维修工具、维修设备等信息的虚拟环境,并在该环境下模拟产品的维修过程,对设备的故障进行分析和维修预处理,模拟拆卸过程,预估维修作业的时间,制定设备部件拆卸的顺序和预估维修费用等,对产品维修性方面,如维修过程中的可视性、零部件可达性以及零部件的拆装操作性进行分析研究,从而及早发现产品维修性设计中的缺陷并提出改进。所以,虚拟维修技术将有关产品维修性方面的潜在问题在设计阶段的早期就予以发现并辅助解决,可显著缩短产品维修性设计时间,降低因维修事前决策不当等造成的生产中断和费用损失。

碰撞检测,也称为干涉检测或者接触检测,是基于现实生活中一个普遍存在的事实:两个不可穿透的对象不能共享相同的空间区域,而出现的技术。碰撞检测作为虚拟现实系统中的一个关键组成部分,主要的任务是判断物体模型之间、模型与场景之间是否发生了碰撞以及给出碰撞位置、穿刺深度等信息。在虚拟维修仿真中,碰撞检测处理物体之间的位置与形状数据,并反馈物体之间的干涉信息,承担着实现人机交互、保证仿真拟真度的功能。甚至,碰撞深度和方向信息还可以用来分析碰撞时力的大小和方向信息,为仿真中力反馈技术提供一定的参考。随着产品和维修过程的复杂化程度不断提高,用户对虚拟维修仿真的真实性,包括仿真的实时性和精确度,提出了更高的要求。而碰撞检测技术作为构建虚拟维修仿真过程的关键技术之一,其精确性和快速性极大地影响了虚拟维修仿真的实时性和准确程度。

目前,碰撞检测的算法研究取得了一批有意义的成果,并在游戏等领域获得广泛的应用。但针对虚拟维修系统的碰撞检测算法研究不多,目前在虚拟维修仿真系统中通常借鉴或修改其它的算法加以应用,有的甚至不具有碰撞检测的功能。然而由于虚拟维修仿真的自身特点,目前的常用碰撞检测算法并不十分适用于虚拟维修仿真过程。要对复杂维修环境中很多物体进行快速准确的碰撞检测还很困难,特别是对不规则物体的维修拆卸仿真,因而达不到仿真的目标要求,严重制约了虚拟维修技术的发展。基于此,针对虚拟维修独有的特点进行适用于虚拟维修仿真的碰撞检测算法研究显得尤为必要。



技术实现要素:

根据本发明实施例提供的方案解决的技术问题是虚拟维修仿真中缺乏相应碰撞检测方法。

根据本发明实施例提供的一种动态碰撞检测的方法,包括:

通过分别对维修人员各肢节及多个维修对象进行虚拟胶囊化处理,得到多个虚拟维修人员肢节胶囊体和多个虚拟维修对象胶囊体;

通过对所述多个虚拟维修人员肢节胶囊体和多个虚拟维修对象胶囊体进行虚拟碰撞检测,得到虚拟维修人员肢节胶囊体与虚拟维修对象胶囊体间的虚拟碰撞状态;

根据所述虚拟碰撞状态,确定所述虚拟维修人员肢节胶囊体与所述虚拟维修对象胶囊体的碰撞空间;

利用所述碰撞空间对每个虚拟维修对象胶囊体进行切片处理,将所述碰撞空间内的每个虚拟维修对象胶囊体的切片部分作为维修对象部分;

通过对所有的维修对象部分虚拟胶囊化处理,形成维修对象虚拟胶囊群;

将所述虚拟维修人员肢节胶囊体和维修对象虚拟胶囊群进行虚拟碰撞检测,得到虚拟维修人员肢节胶囊体与维修对象虚拟胶囊群的动态碰撞结果。

优选地,所述通过对所述多个虚拟维修人员肢节胶囊体和多个虚拟维修对象胶囊体进行虚拟碰撞检测之前,还包括:

通过对维修人员各肢节可达空间进行胶囊化处理,得到多个虚拟维修人员肢节可达空间胶囊体;

通过遍历所有虚拟维修对象胶囊体,判断是否存在全部处于或部分处于所述虚拟维修人员肢节可达空间胶囊体内的一个或多个虚拟维修对象胶囊体,并将其作为待检测虚拟维修对象胶囊体;

若判断存在全部处于或部分处于所述虚拟维修人员可达空间胶囊体内的待检测虚拟维修对象胶囊体,则对所述虚拟维修人员肢节胶囊体和待检测虚拟维修对象胶囊体进行虚拟碰撞检测。

优选地,所述通过对所述虚拟维修人员肢节胶囊体和多个虚拟维修对象胶囊体进行虚拟碰撞检测,得到虚拟维修人员肢节胶囊体与虚拟维修对象胶囊体间的虚拟碰撞状态包括:

通过遍历所有虚拟维修人员肢节胶囊体,判断是否存在与所述待检测虚拟维修对象胶囊体发生碰撞的一个或多个虚拟维修人员肢节胶囊体,并将其作为待检测虚拟维修人员肢节胶囊体;

若判断存在与所述待检测虚拟维修对象胶囊体发生碰撞的待检测虚拟维修人员肢节胶囊体,则获取待检测虚拟维修人员肢节胶囊体与待检测虚拟维修对象胶囊体间的虚拟碰撞状态。

优选地,所述虚拟碰撞状态包括所述待检测虚拟维修人员肢节胶囊体的瞬时速度和所述待检测虚拟维修对象胶囊体上的虚拟碰撞点。

优选地,所述根据所述虚拟碰撞状态,确定所述虚拟维修人员肢节胶囊体与所述多个虚拟维修对象胶囊体的碰撞空间包括:

根据所述虚拟维修人员肢节胶囊体的瞬时速度和所述虚拟维修对象胶囊体上的虚拟碰撞点,计算下一次虚拟碰撞时所述虚拟碰撞点的位移,并根据所述位移,得到虚拟碰撞点的虚拟位移碰撞点;

根据所述虚拟维修人员肢节胶囊体的瞬时速度,构建过所述虚拟碰撞点且垂直于所述瞬时速度方向的近法平面和过所述虚拟位移碰撞点且垂直于所述瞬时速度方向的远法平面;

利用所述近法平面和远发平面对所述虚拟维修人员可达空间胶囊体进行切分,得到所述虚拟维修人员肢节胶囊体与所述多个虚拟维修对象胶囊体的碰撞空间。

优选地,所述通过对所有的维修对象部分虚拟胶囊化处理,形成维修对象虚拟胶囊群包括:

通过对所有的维修对象部分虚拟胶囊化处理,得到虚拟维修对象部分胶囊体;

根据所得到的虚拟维修对象部分胶囊体,构建维修对象虚拟胶囊群。

根据本发明实施例提供的一种动态碰撞检测的装置,包括:

虚拟胶囊化模块,用于通过分别对维修人员各肢节及多个维修对象进行虚拟胶囊化处理,得到多个虚拟维修人员肢节胶囊体和多个虚拟维修对象胶囊体,以及通过对所有的维修对象部分虚拟胶囊化处理,形成维修对象虚拟胶囊群;

虚拟碰撞检测模块,用于通过对所述多个虚拟维修人员肢节胶囊体和多个虚拟维修对象胶囊体进行虚拟碰撞检测,得到虚拟维修人员肢节胶囊体与虚拟维修对象胶囊体间的虚拟碰撞状态,以及将所述虚拟维修人员肢节胶囊体和维修对象虚拟胶囊群进行虚拟碰撞检测,得到虚拟维修人员肢节胶囊体与维修对象虚拟胶囊群的动态碰撞结果;

确定碰撞空间模块,用于根据所述虚拟碰撞状态,确定所述虚拟维修人员肢节胶囊体与所述虚拟维修对象胶囊体的碰撞空间;

切片处理模块,用于利用所述碰撞空间对每个虚拟维修对象胶囊体进行切片处理,将所述碰撞空间内的每个虚拟维修对象胶囊体的切片部分作为维修对象部分。

优选地,所述虚拟胶囊化模块还具体用于通过对维修人员各肢节可达空间进行胶囊化处理,得到多个虚拟维修人员肢节可达空间胶囊体。

优选地,所述虚拟碰撞检测模块还具体用于通过遍历所有虚拟维修对象胶囊体,判断是否存在全部处于或部分处于所述虚拟维修人员肢节可达空间胶囊体内的一个或多个虚拟维修对象胶囊体,并将其作为待检测虚拟维修对象胶囊体,以及当判断存在全部处于或部分处于所述虚拟维修人员可达空间胶囊体内的待检测虚拟维修对象胶囊体,则对所述虚拟维修人员肢节胶囊体和待检测虚拟维修对象胶囊体进行虚拟碰撞检测。

优选地,所述虚拟碰撞检测模块还具体用于通过遍历所有虚拟维修人员肢节胶囊体,判断是否存在与所述待检测虚拟维修对象胶囊体发生碰撞的一个或多个虚拟维修人员肢节胶囊体,并将其作为待检测虚拟维修人员肢节胶囊体,以及当判断存在与所述待检测虚拟维修对象胶囊体发生碰撞的待检测虚拟维修人员肢节胶囊体,则获取待检测虚拟维修人员肢节胶囊体与待检测虚拟维修对象胶囊体间的虚拟碰撞状态;

其中,所述虚拟碰撞状态包括所述待检测虚拟维修人员肢节胶囊体的瞬时速度和所述待检测虚拟维修对象胶囊体上的虚拟碰撞点。

根据本发明实施例提供的方案,具有如下的优点:

a)将人体简化为胶囊树结构,一方面胶囊体对人体外形贴合性很好,另一方面,便于迅速遍历树上的胶囊体,把维修对象处理成胶囊体,相交测试计算简单,计算量少;

b)利用可达空间胶囊体,在每一次碰撞检测的开始就剔除了大部分物体,减少了计算量;

c)动态地利用瞬时速度不断更新切片空间和胶囊体群,极大减少了碰撞检测的计算量;

d)利用检测间隔时间和二级碰撞检测迭代次数可以方便地控制碰撞检测精度。

附图说明

图1是本发明实施例提供的一种动态碰撞检测的方法流程图;

图2是本发明实施例提供的一种动态碰撞检测的装置示意图;

图3是本发明实施例提供的基于胶囊体和瞬时速度的动态碰撞检测方法技术框架图;

图4是本发明实施例提供的人体胶囊化构造示意图;

图5是本发明实施例提供的人体胶囊树示意图;

图6是本发明实施例提供的搜索区域胶囊体示意图;

图7是本发明实施例提供的切片化处理和次级胶囊体构造示意图;

图8是本发明实施例提供的碰撞检测总体执行框架图;

图9是本发明实施例提供的a类型碰撞检测执行过程流程图;

图10是本发明实施例提供的b类型碰撞检测执行过程流程图。

具体实施方式

以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1是本发明实施例提供的一种动态碰撞检测的方法流程图,如图1所示,包括:

步骤s101:通过分别对维修人员各肢节及多个维修对象进行虚拟胶囊化处理,得到多个虚拟维修人员肢节胶囊体和多个虚拟维修对象胶囊体;

步骤s102:通过对所述多个虚拟维修人员肢节胶囊体和多个虚拟维修对象胶囊体进行虚拟碰撞检测,得到虚拟维修人员肢节胶囊体与虚拟维修对象胶囊体间的虚拟碰撞状态;

步骤s103:根据所述虚拟碰撞状态,确定所述虚拟维修人员肢节胶囊体与所述虚拟维修对象胶囊体的碰撞空间;

步骤s104:利用所述碰撞空间对每个虚拟维修对象胶囊体进行切片处理,将所述碰撞空间内的每个虚拟维修对象胶囊体的切片部分作为维修对象部分;

步骤s105:通过对所有的维修对象部分虚拟胶囊化处理,形成维修对象虚拟胶囊群;

步骤s106:将所述虚拟维修人员肢节胶囊体和维修对象虚拟胶囊群进行虚拟碰撞检测,得到虚拟维修人员肢节胶囊体与维修对象虚拟胶囊群的动态碰撞结果。

其中,所述通过对所述多个虚拟维修人员肢节胶囊体和多个虚拟维修对象胶囊体进行虚拟碰撞检测之前,还包括:通过对维修人员各肢节可达空间进行胶囊化处理,得到多个虚拟维修人员肢节可达空间胶囊体;通过遍历所有虚拟维修对象胶囊体,判断是否存在全部处于或部分处于所述虚拟维修人员肢节可达空间胶囊体内的一个或多个虚拟维修对象胶囊体,并将其作为待检测虚拟维修对象胶囊体;若判断存在全部处于或部分处于所述虚拟维修人员可达空间胶囊体内的待检测虚拟维修对象胶囊体,则对所述虚拟维修人员肢节胶囊体和待检测虚拟维修对象胶囊体进行虚拟碰撞检测。

其中,所述通过对所述虚拟维修人员肢节胶囊体和多个虚拟维修对象胶囊体进行虚拟碰撞检测,得到虚拟维修人员肢节胶囊体与虚拟维修对象胶囊体间的虚拟碰撞状态包括:通过遍历所有虚拟维修人员肢节胶囊体,判断是否存在与所述待检测虚拟维修对象胶囊体发生碰撞的一个或多个虚拟维修人员肢节胶囊体,并将其作为待检测虚拟维修人员肢节胶囊体;若判断存在与所述待检测虚拟维修对象胶囊体发生碰撞的待检测虚拟维修人员肢节胶囊体,则获取待检测虚拟维修人员肢节胶囊体与待检测虚拟维修对象胶囊体间的虚拟碰撞状态。

其中,所述虚拟碰撞状态包括所述待检测虚拟维修人员肢节胶囊体的瞬时速度和所述待检测虚拟维修对象胶囊体上的虚拟碰撞点。

其中,所述根据所述虚拟碰撞状态,确定所述虚拟维修人员肢节胶囊体与所述多个虚拟维修对象胶囊体的碰撞空间包括:根据所述虚拟维修人员肢节胶囊体的瞬时速度和所述虚拟维修对象胶囊体上的虚拟碰撞点,计算下一次虚拟碰撞时所述虚拟碰撞点的位移,并根据所述位移,得到虚拟碰撞点的虚拟位移碰撞点;根据所述虚拟维修人员肢节胶囊体的瞬时速度,构建过所述虚拟碰撞点且垂直于所述瞬时速度方向的近法平面和过所述虚拟位移碰撞点且垂直于所述瞬时速度方向的远法平面;利用所述近法平面和远发平面对所述虚拟维修人员可达空间胶囊体进行切分,得到所述虚拟维修人员肢节胶囊体与所述多个虚拟维修对象胶囊体的碰撞空间。

其中,所述通过对所有的维修对象部分虚拟胶囊化处理,形成维修对象虚拟胶囊群包括:通过对所有的维修对象部分虚拟胶囊化处理,得到虚拟维修对象部分胶囊体;根据所得到的虚拟维修对象部分胶囊体,构建维修对象虚拟胶囊群。

图2是本发明实施例提供的一种动态碰撞检测的装置示意图,如图2所示,包括:虚拟胶囊化模块201,用于通过分别对维修人员各肢节及多个维修对象进行虚拟胶囊化处理,得到多个虚拟维修人员肢节胶囊体和多个虚拟维修对象胶囊体,以及通过对所有的维修对象部分虚拟胶囊化处理,形成维修对象虚拟胶囊群;虚拟碰撞检测模块202,用于通过对所述多个虚拟维修人员肢节胶囊体和多个虚拟维修对象胶囊体进行虚拟碰撞检测,得到虚拟维修人员肢节胶囊体与虚拟维修对象胶囊体间的虚拟碰撞状态,以及将所述虚拟维修人员肢节胶囊体和维修对象虚拟胶囊群进行虚拟碰撞检测,得到虚拟维修人员肢节胶囊体与维修对象虚拟胶囊群的动态碰撞结果;确定碰撞空间模块203,用于根据所述虚拟碰撞状态,确定所述虚拟维修人员肢节胶囊体与所述虚拟维修对象胶囊体的碰撞空间;切片处理模块204,用于利用所述碰撞空间对每个虚拟维修对象胶囊体进行切片处理,将所述碰撞空间内的每个虚拟维修对象胶囊体的切片部分作为维修对象部分。

其中,所述虚拟胶囊化模块201还具体用于通过对维修人员各肢节可达空间进行胶囊化处理,得到多个虚拟维修人员肢节可达空间胶囊体。

其中,所述虚拟碰撞检测模块202还具体用于通过遍历所有虚拟维修对象胶囊体,判断是否存在全部处于或部分处于所述虚拟维修人员肢节可达空间胶囊体内的一个或多个虚拟维修对象胶囊体,并将其作为待检测虚拟维修对象胶囊体,以及当判断存在全部处于或部分处于所述虚拟维修人员可达空间胶囊体内的待检测虚拟维修对象胶囊体,则对所述虚拟维修人员肢节胶囊体和待检测虚拟维修对象胶囊体进行虚拟碰撞检测。

其中,所述虚拟碰撞检测模块202还具体用于通过遍历所有虚拟维修人员肢节胶囊体,判断是否存在与所述待检测虚拟维修对象胶囊体发生碰撞的一个或多个虚拟维修人员肢节胶囊体,并将其作为待检测虚拟维修人员肢节胶囊体,以及当判断存在与所述待检测虚拟维修对象胶囊体发生碰撞的待检测虚拟维修人员肢节胶囊体,则获取待检测虚拟维修人员肢节胶囊体与待检测虚拟维修对象胶囊体间的虚拟碰撞状态;其中,虚拟碰撞状态包括所述待检测虚拟维修人员肢节胶囊体的瞬时速度和所述待检测虚拟维修对象胶囊体上的虚拟碰撞点。

图3是本发明实施例提供的基于胶囊体和瞬时速度的动态碰撞检测方法技术框架图,如图3所示,包括:

步骤一:碰撞检测前虚拟维修空间中对象的胶囊化处理;

在仿真开始之前,需要对虚拟维修空间中全部对象进行胶囊化预处理,包括维修人员肢节的胶囊化、维修人员可达空间的胶囊化以及维修对象的胶囊化。其中,维修人员肢节胶囊化指根据维修人员主要肢体关节构建维修人员胶囊体并形成胶囊树结构,如图4、图5所示;维修人员可达空间胶囊化指构建跟随人体运动的搜索区域胶囊体空间如图6所示;维修对象胶囊化指根据产品构造和维修需求对维修对象进行胶囊化处理。

步骤二:基于维修人员可达空间胶囊体的一级碰撞检测;

对构建的维修对象胶囊体遍历地与维修人员可达空间胶囊体进行碰撞检测,判断其是否处于或部分处于维修人员可达空间内。若该可达空间内存在维修对象胶囊体,则进一步遍历人体胶囊树,与可达空间内维修对象胶囊体进行碰撞检测,判断是否有维修对象胶囊体与人体胶囊体碰撞,否则在下一次检测时刻重复进行步骤二。

若存在维修对象胶囊体与人体胶囊体碰撞,则立即执行后续步骤,否则在下一次检测时刻重复进行步骤二。

步骤三:考虑相对瞬时速度的切片空间构建;

对于存在碰撞的人体胶囊体,需要确定此时刻该人体胶囊体的运动速度v,并回推其与碰撞的维修对象胶囊体的碰撞点p1,利用两次碰撞检测的间隔时间t,在速度方向上取距离p1为t*v的点p2,则可以得到过p1、p2并垂直于速度方向的近法平面和远法平面,如图7所示。

步骤四:碰撞时刻切片空间内维修对象的胶囊体群生成;

近法平面和远法平面将可达空间胶囊体切分,形成一个很小的切片空间,对可达空间内的维修对象本身执行检测操作,提取处于该切片空间内的维修对象部分,并对这些微小的部分分别构建新的小胶囊体,形成胶囊体群,如图7所示。

步骤五:下一时刻切片空间内的二级碰撞检测;

在下一检测时刻,将人体胶囊体遍历地和与其相对应的胶囊体群进行碰撞检测,如果发生碰撞,则返回碰撞结果。

步骤六:切片空间内胶囊体群的释放。

将构建的所有胶囊体群的资源释放,并重新执行步骤二,如此循环,直到仿真结束。

对于本基于胶囊体和瞬时速度的动态碰撞检测方法,在两次检测间隔时间t足够小的情况下,可以认为,二级碰撞检测中人体胶囊体与维修对象胶囊体群的碰撞即是人体与维修对象本身的碰撞。如果需要更加精确的碰撞检测效果,还可以通过迭代进行胶囊体群构建与二级碰撞检测;或在一级碰撞检测完成后,直接进行三维物体三角面片之间的碰撞检测来获得更加精确的碰撞结果。

实施例一:

图8是本发明实施例提供的碰撞检测总体执行框架图,如图8所示,包括:

1)仿真准备工作

虚拟维修场景一开始,虚拟维修仿真系统将自动对维修人员进行胶囊化,形成由多个胶囊体c_human[a](a是人体胶囊体数量)组成的运动结构。由于虚拟维修场景的特殊性,默认在维修场景中,最先运动的物体是维修人员人体,因此,最先进行的碰撞检测,应该是针对运动人体进行。

人体结构上的胶囊体虽然都可以做多自由度运动,但是运动人体由于自身的关节限制,这些胶囊体都无法脱离某一个区域。这一区域的边界是人体上的胶囊体做运动时的极限位置组成的包络面。可以理解,人体与其他物体产生的所有碰撞,都是发生在该包络面以内的,即物体必须首先跟该包络面包围的包络体碰撞了,才有可能与人体产生碰撞。因此,针对人体与其他物体的碰撞检测,只需要遍历该包络体以内的物体是否与人体碰撞。为了对该包络体的区域进行更清晰的界定并减少检测包络体时的计算量,本发明将该包络体定义为维修人员可达空间,即一个包围了人体所有组成胶囊体和这些胶囊体所有运动区域集合的大胶囊体。在人体胶囊化之后,虚拟维修仿真系统还需要根据人体胶囊树构建该可达空间胶囊体c_scope。该胶囊体随着维修人员人体的移动而进行更新,之后进行的碰撞检测,也将针对该胶囊体所包围的区域进行。

然后仿真系统通过自动胶囊化方法,根据维修对象的结构,对维修场景中维修对象进行胶囊化,产生c_lru[b](b是维修对象胶囊体数量)。以上准备工作完成之后,虚拟维修仿真就可以开始了。

2)碰撞检测执行过程循环

本碰撞检测方法在每一次检测之间具有后效性,这主要体现在虚拟维修仿真系统将依据枚举类型testtype的值,确定本次碰撞检测所进行的类型——碰撞检测a或者碰撞检测b。其中碰撞检测a负责执行一级碰撞检测,并根据结果确定是否执行构建切片空间并生成切片空间内的维修对象胶囊体群;碰撞检测b负责执行二级碰撞检测和胶囊体群资源的释放。

3)仿真结束检测

在每一次检测完成后,仿真系统都将检测维修仿真是否结束,若结束则碰撞检测停止,若没结束,则继续执行碰撞检测过程循环,如图8中所示。

需要注意的是,为了提高碰撞检测的实时性和精确性,在每一次碰撞检测b完成之后,还要继续进行一次碰撞检测a,以确定下一次的碰撞检测信息。

实施例二:

图9是本发明实施例提供的a类型碰撞检测执行过程流程图,如图9所示,a类型的碰撞检测实质是第一级别的碰撞检测,主要确定在维修人员可达空间胶囊体之内的维修对象是否与人体胶囊体结构中的任一胶囊体存在碰撞,若没有,则无需进行后续碰撞检测过程,即碰撞检测b类型,若有,则使枚举类型testtype=b,该值将导致下一次刷新检测时进行b类型碰撞检测。

a类型的碰撞具体实施为:

步骤a1:将场景中所有维修对象胶囊体进行遍历,并判断是否与可达空间胶囊体碰撞。假如都不与可达空间胶囊体碰撞,则无需进行下一步检测,a检测结束,且testtype依然为“a”不变;假如存在维修对象胶囊体与可达空间胶囊体碰撞,执行步骤a2。

步骤a2:遍历所有与可达空间胶囊体碰撞的维修对象胶囊体和人体胶囊树,判断是否存在维修对象胶囊体与任一人体胶囊体c_human[i]()碰撞。假如不存在,则无需进行下一步检测,a检测结束,且testtype依然为“a”不变;假如存在碰撞,执行步骤a3。

步骤a3:假设c_human[i]与某一维修对象胶囊体碰撞,则需要确定该碰撞在人体胶囊体上的碰撞点point1与其此时的速度speed,再根据碰撞检测的刷新时间deltatime,确定下一次碰撞检测时,point1的可能到达点point2,通过速度方向分别确定垂直于speed并且通过point1和point2的近法平面和远法平面。执行步骤a4。

步骤a4:遍历所有在可达空间胶囊体内的维修对象胶囊体,截取在两个法平面确定的切片空间内的部分,并根据截取的新物体构造新的小胶囊体c_forb[n],(n为小胶囊体数量),众多小胶囊体形成胶囊体群。执行步骤a5。

步骤a5:将testtype置为“b”,a检测结束。

实施例三:

图10是本发明实施例提供的b类型碰撞检测执行过程流程图,如图10所示,b类型碰撞检测实质是二级碰撞检测,主要执行人体胶囊体和与其相对应的维修对象胶囊体群的碰撞检测。

b类型的碰撞具体实施为:

步骤b1:遍历人体胶囊树,根据人体胶囊体在a类型测试中储存的信息,确定是否进行二级检测。对于具有相对应维修对象胶囊体群的人体胶囊体,执行步骤b2。

步骤b2:遍历地进行维修对象胶囊体群与对应人体胶囊体的碰撞检测。若某些碰撞成立,则输出相应碰撞信息给虚拟维修仿真系统,系统将对这些信息进行处理,以实现人机交互功能。对所有人体胶囊体遍历测试完成之后,执行步骤b3。

步骤b3:释放胶囊体群资源,并将testtype重新置为“a”,b测试结束。

根据本发明实施例提供的方案,提高了仿真中交互的响应速度和精度,最终提高了虚拟维修仿真拟真度,提升仿真效果。

尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1