CAT简介
a

 

Crowd实例篇02

Crowd实例篇02

作者 钱麟

  在上面所有的例子中,我们都用了单纯的行为(Behavior)来控制动画,但是对于一些更复杂的场景,我们可以用认识控制器(cognitive controller)来完成。

  我们调出上次中途存盘的文件cs_tut08_lesson4a.max,有关这个文件是什么生成的请参看相关文章,我们现在要做的,就是为crowd物体加上行为,并赋予认识控制器。

  先选择crowd物体,进入modifier面板,打开Edit Multiple Delegates对话框,先关闭Constrain to XY plane。然后和前面我们做过的例子一样,为其赋予一个Seek behavior和一个Repel behavior,对于Repel behavior,我们关闭其Use Radii(这些操作都和前面一个例子中一样,具体方法不再赘述)。

  做完之后就要使用认识控制器了,在modifier面板的Setup展卷栏中,打开Cognitive Controller按钮,弹出Cognitive Controller Editor窗口,按一下工具栏上的New按钮,然后在窗口上的不同位置任意按两下,出现了两个图标,如图所示:

  每一个图标都能被赋予一定的行为。第一个图标是红色的,表明是初始状态,当认识控制器运行时这个状态(中的行为)是第一个被执行的。因此,如果我们希望代理物体一开始处理寻找行为(Seek)的话,我们就为第一个图标赋予Seek Behavior。先在窗口上按一下右键结束创建图标模式,再选中那个红色的图标,用Add按钮选择新建一个Seek Behavior,此外我们还可以将图标命名为seek。

  把另外一个图标也命名为repel,并且用同样的方法为它加上一个Repel behavior。然后我们在两个行为之间加上一个过渡,使动画效果产生先靠近、后排斥的效果。在工具栏上按Create Transition(创建过渡),从seek的图标向repel的图标画一条线,系统生成了一个箭头(如图所示):

  在箭头上按右键,在Transition对话框内,把Duration设置为10,这样过渡的动画时间将由原来的25帧缩短到10帧。

  再按一下MAXScript按钮,弹出MAXScript窗口,我们在当中输入以下语言:

fn TestDist del t = (
get_dist=distance $box01.pos del.simpos
if get_dist < 120 then 1
else 0
)

  这段脚本说明在任何帧时,只要代理物体和box的距离小于120个max系统的距离单位,代理物体就从寻找(接近)状态改变为排斥(远离)状态。

  最后回到Behavior Assignments对话框,为所有的代理物体设置一个组(注意这次可不是一半一半地做),并把认识控制器赋予这个组。最后就是计算。

 
 
   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Character Srudio教学 cs的bip(bvh\bva)动作数据库 两足角色动画 影视动画片制作 电脑游戏制作 广告公司 教学演示等三维动画制作

Character Srudio教学 cs的bip(bvh\bva)动作数据库 两足角色动画 影视动画片制作 电脑游戏制作 广告公司 教学演示等三维动画制作

Character Srudio教学 cs的bip(bvh\bva)动作数据库 两足角色动画 影视动画片制作 电脑游戏制作 广告公司 教学演示等三维动画制作

 

oncontextmenu=return false