一种多层次虚拟群体的避碰方法

文档序号:6586659阅读:171来源:国知局
专利名称:一种多层次虚拟群体的避碰方法
技术领域
本发明涉及虚拟群体动画技术领域,尤其是指一种多层次虚拟群体的避碰方法。

背景技术
随着计算机动画的不断发展,群体动画的实时仿真作为计算机动画的一个分支,也在近年来取得了很大的进步。群体动画技术已广泛应用于城市规划、电影动漫、游戏创作、训练系统以及火灾、地震等灾难现场模拟与辅助指挥中。
由于在群体的模拟和仿真过程中,不管在动作,群体的数量还是在渲染等方面都要进行很复杂的算法和步骤来控制和模拟,这将导致算法的时间和空间复杂度比较大,所以在群体碰撞预测和碰撞避免中,应该找到一种简单可行的方法来降低复杂度。其中单步检测法是比较常用的一种,该方法是一种基于在给定轨迹上反复利用静态碰撞检测的方法,即当物体移动过程中将轨迹划分为很多时间步,在每一步(物体运动轨迹上几个特定的时间点)都进行静态碰撞检测,来判定运动物体之间是否发生碰撞。显然采样的步长直接决定了算法的准确性和复杂度。如果采样间隔过大,有些碰撞可能检测不到;但如果采样间隔过小,计算代价太大。这种方法不适合实时仿真的系统,主要是步长的确定要根据群体的密度,环境等因素来确定,当确定的步长不是很准确时,算法复杂度则是比较大的。基于网格的检测方法是首先把网格划分成很小的单元,每个个体独立在一个网格之中,通过个体在某帧时所在的网格的位置来避免与其他个体的碰撞的。而社会力模型则是通过判断两个个体之间的距离而产生一种排斥力来模拟个体的行为的,这几种碰撞检测和避免的方法都是针对某一种群体的行为而设计的,即不是通用的方法。例如基于网格的检测一般和势能场、密度场等结合在一起来进行路径的规划和避碰的。基于视觉范围的碰撞检测与避免方法则是先通过模拟人的视觉系统,用视觉半径和弧度等信息对视觉内的周围网格个体进行感知,若感知到个体的存在,则在进行相应的避碰措施,这种方法只检测视觉范围内的个体,不用检测每个个体,检测的次数明显降低,但是感知的过程则比较复杂。


发明内容
为解决上述问题,本发明一种多层次虚拟群体的避碰方法旨在提供一种可以减少碰撞次数、提高效率的分层次群体避碰的技术。
本发明所采用的技术方案包括如下操作步骤1,根据空间划分来对虚拟群体进行分组;步骤2,组的模拟和组内部个体之间的碰撞避免;步骤3,组与组之间的碰撞预测;步骤4,确定组与组之间的碰撞类型;步骤5,根据碰撞类型采取避碰措施;步骤6,避碰的评估和重定位;步骤7,根据评估结果进行局部优化,产生全局的避碰速度。
所述的步骤1中根据静态障碍物的位置将空间划分为可行走区域和不可行走区域,在同一可行走区域内的一定距离范围内将不同个体划分为一组。
所述的步骤4和步骤5中的碰撞类型分为后方碰撞、前方碰撞、背后碰撞和静态碰撞四种。
所述的步骤5中的避碰措施中采用改变速度或改变方向两种方法避免碰撞,同时定义了左避碰、右避碰、加速和减速四个模块及其避碰的条件。
所述的步骤6中对避碰速度及方向进行评估和重定位。
本发明的有益效果是在路径规划的时候,只对组的可行走区域里面进行规划,所以没有必要考虑静态障碍物对行人的影响,这样就可以减少避碰的算法次数;本方法是以组为单位的,所以复杂度相对于个体的避碰来说,碰撞检测的数量明显要小的多;本方法是基于两点检测的方法来对组之间进行避碰的,该方法在预测碰撞方法中是比较简单的,并且不在考虑组内部个体与其他组的个体碰撞的情况,这样算法复杂度将进一步简化。



图1为本发明一种多层次虚拟群体的避碰方法的流程图; 图2为本发明中组的模拟示意图; 图3为本发明中组与组的后方碰撞示意图; 图4为本发明中组与组的前方碰撞示意图; 图5为本发明中组与组的背后碰撞示意图; 图6为本发明中组与组的静态碰撞示意图。

具体实施例方式 下面结合附图对本发明一种多层次虚拟群体的避碰方法的优选实施方式进一步说明,图1所示的流程图给出了本发明的实现的过程步骤。在该群体避免碰撞的方法中,主要是通过对组、组之间个体分别进行相应的碰撞预测和相应的避免措施来完成群体间个体的避碰的。
在本实施方式中,环境加载的模型格式为.dss,通过对环境信息的操作,得到其相应的区域并当前场景信息输出到“map.txt”中。输出当前的“指示标”中心位置到“positions.txt”中。本方法主要是组与组之间的避碰措施,其具体过程为 步骤1,根据空间划分来对虚拟群体进行分组。主要是根据静态障碍物的位置把环境空间信息划分为可行走区域和不可行走区域,再根据区域来选取组,把同一可行走区域的距离较近的个体划分为一组。把距离中心点较近的个体作为组的领导者。
步骤2,组的模拟及组内部个体之间的碰撞避免。由于组的行为和flocks模型相似,为了模拟组行为,群组中的个体应该有相同的速度,愿意和同伴一起跟随领导者。一个组必须满足四种行为①碰撞避免,同伴之间避碰;②速度匹配,尽量保持相同的速度;③集群行为,尽量靠近附近的同伴;④每个组的成员共享从初始点到目标点的IP列表。如图2给出了组的模拟图,在考虑组的行为时,群组有一个组半径,个体必须与领导者保持在这个半径之内。
领导者,就是组的意识的体现者,同时在寻径中应组织跟随者穿过比组半径大的入口。跟随者则是跟随领导者的其他个体,一般情况下,跟随者在组半径之内,则尽可能跟领导者保持同样的速度,包括大小和方向。若跟随者不在组半径之内,为了不与障碍物或其他组的agent(个体)发生碰撞,必须朝着领导者的方向加速移动,当到达组半径之内后,在进行速度匹配。即跟随领导者这一行为使得一定范围内的多个虚拟行人跟随某一个指定的领导者前进,它们表现为尽力接近领导者,不会阻挡领导者的道路,并与其保持一定的距离以避免相互碰撞。
在组的行为方面,本方法运用控制力来对组内部个体进行避免碰撞的,而控制力是由领导者的吸引力和与相邻伙伴之间的排斥力等组成的。我们把组的行为分解为凝聚、分离和列队三个行为,则控制力也可分解为三种控制力的合成,即首先,同组个体都保持在同一个区域。如果有个体离队伍远了,就该马上归队,这就是凝聚行为,这一行为通过寻找该个体周边的所有邻近个体,计算出它们的平均位置或是中心位置,将指定个体的当前位置与该中心位置相减,便可得到驱使个体汇集到组中的控制力;其次,尽管个体在同一个组,但是要避免不会互相碰到。为此,它们各自都有一个空间来预防与其它个体太接近,即个体分离行为,该行为通过计算两个体之间的距离的倒数来得到其控制力的,同时个体要保持在同一个方向。当然各自的角度不一定相同,但是大方向是差不多的,这叫列队,这三个行为凝聚、分离和列队,组成了组的行为。
当考虑组的行为时,就以组为一个整体去考虑,而每个个体就只需要看看临近的几个伙伴,如果靠太近就离远点,如果方向差太多就转过来点。尽管组的行为技术上被拆成了几个子行为,然而它们几乎总是同时出现的,一般不太会只对角色使用其中一两个行为。
步骤3,组与组之间的碰撞预测。本方法用A表示一个group,PA表示A当前的位置,SA表示当前的速度,RA则是group的组半径(宽度)。现假设两个相邻的group H和N,H与N的预计速度分别为SH、SN,则H与N的相对位置与相对速度分别为Pr=PH-PN,Sr=SN-SH。于是H与N之间的碰撞时间满足等式

其中ε是H与N的安全距离。如果这个等式没有解或者有唯一解,则没有预测到碰撞。若有2个解t1,t2,且t1<t2,则①t2<0碰撞已发生过,所以在将来不可能再发生;②t1<0且t2>0碰撞马上就发生,需要马上采取措施来避免碰撞的发生;③t1≥0碰撞将在t1后发生。
步骤4,确定组与组之间的碰撞类型。假如用tc表示预测的碰撞时间,CH=PH+SH*tc、CN=PN+SN*tc,其中CH和CN是H与N在tc时间后的位置,则有 ①若(CN-CH)*SH<0,则是后方碰撞(rear collision),如图3所示。
②若(CN-CH)*SH>0且SH*SN<0,则是前方碰撞(front collision),如图4所示。
③若(CN-CH)*SH>0且SH*SN≥0,则是背后碰撞(back collision),如图5所示。
④若||SN||=0,则是静态碰撞(static collision),如图6所示。
这四种碰撞类型是为了设置局部避碰而提出的。
步骤5,根据碰撞类型进行避碰。可以采用两种方法避免碰撞改变速度或改变方向。其方法是计算group H新的速度SH′,来避免与group N发生碰撞。H相对于N来说,有Pr(t)=PH-PN+(SH-SN)t。为了避免碰撞,则新的相对速度为Sr′=SH′-SN。这个问题可以用SH′的另一种几何形式进行表示,即直线PH-PN+Sr′*t是圆心在原点,半径为RH+RN+ε的圆C的切线。假设Tl与Tr是圆C上并通过切线Pr的两个点,Dl=Tl-(PH-PN),Dr=Tr-(PH-PN),当

并且

时,Dl,Dr是避免碰撞的左右方向。D=Dl为左避免,D=Dr为右避免。R(α)表示转动α角度,则通过式子αD=SH-SN,且α>0来计算碰撞避免速度SH′。因此,本方法可以定义四种方法来进行避碰左避碰(LA)、右避碰(RA)、加速(A)、减速(D)。每一个模块将找到一个新的速度和新的约束条件 (a)左、右避碰||SH′||=||SH||,保持速度的大小。
(b)减速SH′=βSH且0<β<1,保持速度方向。
(c)加速SH′=βSH且β>1,保持速度方向。
步骤6,避碰的评估与重定位。在考虑群体避碰过程中,为了避免两个组之间的避碰产生的速度对其他组的影响,则可以对避碰速度及方向进行评估来确保对其他组的影响。假如速度SH可能导致碰撞,而SH′为输出的避碰速度,则下面的规则将被用于评估与重定位 n(SH′,SH,βd,βn)=Cd(SH′,SH,βd)*Cn(SH′,SH,βn) 这三个函数将计算出一个在0-1之间的数学因子来评估相对于SH的速度SH′。函数cd评估方向的差异,cn评估速度大小的差异。而n评估总体的计算速度SH′的速度和方向,这个函数采用两个参数βd,βn来平衡速度大小和方向的剧烈变化,而参数βd,βn和避碰措施与每一次碰撞类型(前方碰撞、后方碰撞、背后碰撞、静止的碰撞)之间相互关联。见表1导航规则模型和表2最小化调整规则模型,如βd=1,βn=1。一旦这两个模型确定后,这些参数信息将用于局部优化算法之中。
表1导航规则模型 表2最小化调整模型 步骤7,根据评估结果进行局部优化,产生全局的避碰速度。由于计算出的新的避碰速度可能与其他的组产生新的碰撞,那么通过局部优化算法可以对新的避碰速度和方向进行优化,减少对其他组的影响,产生一个更优的速度来。
假设预测的碰撞时间为tc,另一个组发生碰撞的时间为t,组的实际速度为v。
情况①当预测到碰撞且预测碰撞时间tc≥t或者根本就没有检测到碰撞,则实际速度v将被选为组的避碰速度。
情况②当检测到碰撞且tc<t。如果可以根据步骤4确认该碰撞的碰撞类型,以及根据步骤5的方法选取到一种避碰的措施(左避碰、右避碰、加速、减速),则根据步骤6中的表2模型,选取所对应的速度作为组的避碰速度;否则,转到步骤3,直到求出组的避碰速度。
权利要求
1.一种多层次虚拟群体的避碰方法,其特征在于,该方法包括
步骤1,根据空间划分来对虚拟群体进行分组;
步骤2,组的模拟和组内部个体之间的碰撞避免;
步骤3,组与组之间的碰撞预测;
步骤4,确定组与组之间的碰撞类型
步骤5,根据碰撞类型采取避碰措施;
步骤6,避碰的评估和重定位;
步骤7,根据评估结果进行局部优化,产生全局的避碰速度。
2.根据权利要求1所述的一种多层次虚拟群体的避碰方法,其特征在于,所述的步骤1中根据静态障碍物的位置将空间划分为可行走区域和不可行走区域,在同一可行走区域内的一定距离范围内将不同个体划分为一组。
3.根据权利要求1所述的一种多层次虚拟群体的避碰方法,其特征在于,所述的步骤4和步骤5中的碰撞类型分为后方碰撞、前方碰撞、背后碰撞和静态碰撞四种。
4.根据权利要求1所述的一种多层次虚拟群体的避碰方法,其特征在于,所述的步骤5中的避碰措施中采用改变速度或改变方向两种方法避免碰撞,同时定义了左避碰、右避碰、加速和减速四个模块及其避碰的条件。
5.根据权利要求1所述的一种多层次虚拟群体的避碰方法,其特征在于,所述的步骤6中对避碰速度及方向进行评估和重定位。
全文摘要
本发明一种多层次虚拟群体的避碰方法涉及虚拟群体动画技术领域,该方法主要提供一种群体模拟过程中减少碰撞次数、提高效率的分层次群体避碰技术,从而减少群体避碰模拟的复杂度。本方法包括根据静态障碍物的位置进行空间划分,对虚拟群体在可行走区域进行分组,组的模拟及组内个体之间的避碰,通过组与组之间的碰撞预测,确定碰撞类型并进行避碰,对避碰的评估与重定位,根据评估结果进行局部优化产生全局的避碰速度。本发明可以有效实现虚拟群体动画中虚拟人群的碰撞检测与避免。
文档编号G06T15/70GK101719285SQ200910265430
公开日2010年6月2日 申请日期2009年12月28日 优先权日2009年12月28日
发明者何明耘, 陈雷霆, 卢光辉, 王文敬, 邱航, 张建中, 周川 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1