|
作者 钱麟
好了,现在我们要切入正题了,就是我们如何让Biped角色产生群体动画。在这个例子中,我们将使用Surface
Follow behavior制作一群角色在海面上游泳的动画。
打开cs_tut08_lesson6.max文件,这里有一个已经制成动画效果的海面、一个代理物体、一个crowd物体和一个Biped,首先我们要做的就是复制Biped。按住Shift键进行复制,复制5个,加上原来的就一共有6个。复制完后他们的位置暂时并不重要,先放在一边。
我们选择crowd物体,在modifier面板的Setup展卷栏的Behaviors组中按New按钮,选择表面跟随行为(Surface
Follow behavior),在Surface Follow Behavior展卷栏中,用None按钮选择场景中的水面(Plane01)。再加入一个Seek
Behavior,并在它的展卷栏内用none按钮选择场景中的绿色的金字塔形物体(浮标)。这可以让角色们朝浮标游去。
现在我们才来随机分布代理物体的位置,也就是将来Biped的位置。仍然选中crowd物体,在Setup展卷栏中,使用scatter,在这个文件中,一些参数已经设置好了,我们来一下。
在Clone面板中,确定Object to Clone 为Delegate01;How
Many设置为5;在Rotation面板上,Look At Target组内,选择Selected Object,并用none按钮拾取场景中的浮标物体。在All
Ops面板上,在Compute栏内,打开Clone、Positions、Rotations并按最下面的Scatter按钮。这时六个代理物体已经播洒在海面上了,不过我们还要给它们来点随机分布,方法很简单,打开Inc
Seed for Positions并再次按scatter按钮计算,一遍一遍地按直到你对场景中的分布满意了后,再按OK按钮退出。
在Setup展卷栏内,按Behavior Assignments按钮,将所有的代理物体编个组(Team),施加一个Seek
Behavior,再将两者一起送过去(有关概念和具体的操作详见前面的基础部分)。之后就退出进行模拟计算,这次只是看看效果的,我们接着再在Setup展卷栏上为crowd物体装一个Surface
Follow behavior,同样再进入Behavior Assignments对话框,把它和先前那个Team一起送到右边去。退出后在slove展卷栏中,把End
Solve frame设置为160,即动画全长160帧。之后再计算。
接下来就是装Biped了,在Setup展卷栏中,按Biped/Delegate
Associations打开相关的对话框,在Biped列表下面按Add按钮,选择所有的Biped;在代理物体列表下面,同样也Add所有的代理物体。最后按下面的Associate按钮完成。
不过这时场景中尚无任何变化,因为还有许多东西要做。选择任何一个Biped的任何一个部分后进入motion面板,打开Motion
Flow Mode,按Show Graph按钮,打开动画流程图。在其中建立一个剪辑(Clip),按右键停止它的创建,然后在它上面再按一次右键,在clip1对框中,用browse按钮,选择光盘中相关的足迹文件rtswimforward.bip,这是我们在Biped的相关例子中所做出的最终效果。在这个文件中,游泳动作以80帧为一个周期,因此我们把这儿的end
frame设置为80。然后我们要为动作做一个无限循环,在动画流程图中,选择Create Transition,再点一下这个剪辑片段就可以了,关闭对话框。在Motion
Flow展卷栏中,用Save File把它存为myswimloop.mfe文件
这是对一个Biped,我们接下来还要为它设置一个共享动作流程文件,在Motion
Flow展卷栏中,使用Shared Motion Flow,弹出相应的对话框。按New按钮生成一段新的共享工作流程。按下面的Load
.mfe按钮并选择刚刚做的myswimloop.mfe文件,再按Add按钮,把所有的Biped都选择了,这样所有的Biped就都套上了这段动画。
按Put Multiple Bipeds in Motion Flow按钮,再按OK,我们要设置一下群体动画起始状态时的随机分布。在Shared
Motion Flow Graph对话框内,按Select Random Start Clips(选择随机开始剪辑),再在图表中点取rtswimforward。这时我们再回到modifier面板上计算才会出现效果。
当然还有几个问题要解决,其一就是角色现在都在水面上游动,我们要让他们的身体部分在水下,也就是要把所有的Biped向下移动一些。选择crowd物体进入Surface
Follow Behavior展卷栏,在Position On Surface组把offset设置为50,即向下移动50个max的单位,然后重新计算,重新播放动画。
美中不足的还有就是所有的角色在同一时间上都用同样的动作在游泳,我们要设法让动作的开始时间产生随机分布,这样就可以让动作在时间上错开,产生不同的动作效果。在Setup展卷栏内按Multiple
Delegate Editing按钮,弹出相应的对话框,在Delegates to Edit处加入所有的代理物体,在下面的Biped组里,我们把Start
Frame的Random和SET选项打开,打开Random后,Value2便可用了,把Value2的值设置为一个不同的帧数,比如8,这样各个Biped的动作在计算时就会在前8帧的任意一个帧时开始,可能是第0帧、也可能是第四帧、也有可能是第8帧。这样动作的开始时间就被错开了,当然效果也随机得多了。
按Apply Edit按钮确定,再重新计算效果,总体令人满意。
|