【摘要】:图5-22基于Particle群组控制脚本编辑器的行为控制界面1)基于物理的动力控制模型控制层完成虚拟角色的行为驱动,包括碰撞检测、漫游、目标跟随、逃跑、对齐等行为的实现。2)角色行为控制模型在对虚拟角色的动力控制模型建模基础上,我们通过对受力向量的数学计算来得出合成受力,从而驱使虚拟行人的各种行为。避开障碍行为通过对角色施加与圆心到障碍物中心相反的推力来使它远离障碍物。
在群体动画中,虚拟角色的行为划分成三个主要层次:选择层、控制层和移动层。其中,选择层决定虚拟角色的任务目标即行为规则,控制层结合行为规则以及对外部虚拟环境的感知作出具体的行为指令,移动层则将行为指令转化为具体的身体动作实现出来。
我们基于Maya Particle的Instancer群组动画脚本工具对选择层进行建模,采用Maya的Pariticle动力学表达式编辑器作为脚本设计器,以满足用户对角色的群组动画行为的自定义控制,界面如图5-22所示。

图5-22 基于Particle群组控制脚本编辑器的行为控制界面
1)基于物理的动力控制模型
控制层完成虚拟角色的行为驱动,包括碰撞检测、漫游、目标跟随、逃跑、对齐等行为的实现。我们将虚拟角色个体当作是一个基于物理力学的动力控制模型,把它受到的来自内部与外部的影响表示为力向量,在多个力向量的共同作用下控制虚拟行人完成指定任务。
这种动力模型是基于点式群体的,将受动力模型驱使的虚拟行人表示为一定半径值的圆环,具有质量(mass)、位置(position)以及速度(velocity)等属性。除此之外还定义了两个限制参数:最大受力(max-force)、最大速度(max-speed),前者是因为基于物理的模型本身的动力范围有一定上限,后者则是由于动力与阻力的共同限制使得速度不可能无止境的增加下去。这些特性与现实生活中的动力模型相符合。
这个动力模型物理特性的更新基于欧拉积分公式,在仿真中的每一个时间采样点计算出赋予虚拟行人的控制受力,将其除以虚拟角色的质量便可得到加速度信息,加速度与之前的速度一起形成新的速度(最大不超过max-speed上限)。最后,速度被施加到原有的位置信息之上,完成状态更新。
2)角色行为控制模型
在对虚拟角色的动力控制模型建模基础上,我们通过对受力向量的数学计算来得出合成受力,从而驱使虚拟行人的各种行为。
(1)位置点追寻与逃离行为(见图5-23)。位置点追寻行为(seek)用于调整角色的速度向量指向目标位置,使得虚拟角色朝着指定的位置运动。目标速度的方向由角色指向目标,大小为最大速度或者是角色的当前速度,而角色的受力速度方向则是目标速度与当前速度的差值。
逃离行为(flee)具体策略和追寻是一样的,只是目标速度相反。
(2)到达行为。到达(arrival)行为在角色距离目标比较远的时候,和追逐是一模一样的。但是,它并不会控制角色全速通过目标。当角色离目标比较近的时候,它会使角色减速,最终缓慢到达指定的位置。如图5-24所示,角色在距离目标一定距离的时候就会开始减速,该距离可作为该行为控制中的参数。

图5-23 追寻与逃离(www.chuimin.cn)

图5-24 到达

图5-25 避开障碍
(3)避开障碍。避开障碍行为赋予了一个角色躲开环境中障碍能力,这一点在虚拟场景中至关重要。我们将虚拟角色和各种障碍都抽象为球体,这样做可以实现更有效率的碰撞检测。
如图5-25所示,避开障碍行为的过程如下:在角色的前进路线方向上绘制一个虚拟的圆柱体(见图5-25中灰色的圆柱体),圆柱体的地面半径等于角色的保卫球半径(确保将角色包含进去),圆柱体的高由色的速度和灵活性等参数决定。算法对每个障碍物进行遍历,判断圆柱体是否与它相碰,只需采用简单的几何计算即可实现相交性检测。对落在圆柱体影响范围外的障碍无需处理,否则选择距离圆柱体最近的障碍物作为最有可能发生碰撞的候选障碍物。避开障碍行为通过对角色施加与圆心到障碍物中心相反的推力来使它远离障碍物。
(4)路径跟随。路径跟随行为会使一个角色沿着一条既定的路线前进。我们将路径描述为一根中心线和一条半径。中心线代表了这条路径的方向,而以这个中心线和半径生成的“圆柱体”就是这条路径。路径跟随行为使角色沿着这个特定的路径管道前进,如果最初角色没有在这个路径之内,它就必须首先选择就近位置进入这条路径才能实现跟随行为。路径跟随行为示意图如图5-26所示。

图5-26 路径跟随

图5-27 漫游
(5)漫游。漫游是随机行为控制的一种。在每一帧对角色施加一个随机的外力,会造成角色的不规则运动,无法保证真实感。我们保持外力施加的方向,并在每一帧位置加上一个随机的位移,使角色随机地从一个地点走到另一个地点。具体做法是:将控制力固定在角色前方一个球体上(见图5-27中的大圆),每一帧将一个随机的位移添加在上一帧的控制力上,并将得到的结果强制约束到这个球体的表面。其中球体的半径决定了漫游中最大的“力”,随机位移的大小由图中的小圆半径决定。漫游行为示意图如图5-27所示。
3)角色行为实现
个体行为的实现是依赖于对个体建模完成后实现的,实际上所有的个体行为都是由单个的骨骼模型的独立运动实现的。从数据库中取出运动捕获或者动画师手工制作的动画数据,然后将这些动画数据转化为个体的实际模型序列。这些模型序列将被用作Maya Particle的Instancer代替的源对象,这些对象实际控制个体的动作和形状,以达到逼真的效果。
相关推荐