Maya用particle的instancer模拟爆破墙效果
http://tech.ddvip.com 2007年08月19日 社区交流
内容摘要:Maya用particle的instancer模拟爆破墙效果
初始化位置
首先打开2_1_instance_brickwall_base.mb文件,在这个文件里可以由一组砖组成的一面墙。这面墙是由一些砖块组成,稍后我们将用一些破砖代替它们,来让我们看看这个场景是怎么样设置的.

设置如图。

1、所有的砖都需要freeze transform。
2、我们需要建粒子去发射它。可以运行这个命令://create particle node particle -n wall_front_PTL;
3、创建一个属性,当开始播放场景的时候我们将用这个属性旋转砖块。打开粒子的属性栏,增加一个per-particle的属性,名称为rotationPP。
4、粒子将从每一块砖的位置发射。我们首先从所有的节点中捕获一个列表,然后循环每一个节点,用emit命令从每个节点的位置发射粒子。老外用了这样一段脚本来完成这个操作。
emit_brick_particles.mel:// 获取前墙砖的名称列表string $nodeList[] = `ls -dag -type transform "o_frontWall_LOC|*PLY" "i_frontWall_LOC|*PLY" "side_frontWall_LOC|*PLY"`;
// 用循环语句让每一块砖发射一个粒子for( $node in $nodeList ) { // 得到每一块砖的位置 float $pos[] = `xform -q -ws -t $node`; // 确定每一块砖的大致体积 // 当我们破碎砖块的时候就会用到:
float $bb[] = `xform -q -ws -bb $node`;
float $x = abs( $bb[3] - $bb[0] );
float $y = abs( $bb[4] - $bb[1] );
float $z = abs( $bb[5] - $bb[2] );
vector $v = <<$x, $y, $z>>;
// 得到砖的长度float $vol = mag( $v );
//发射一个粒子 emit -o wall_front_PTL
-pos $pos[0] $pos[1] $pos[2]
-at mass -fv $vol;
} // for $node in $nodeList
// 将此时的粒子保存为初始状态
saveInitialState wall_front_PTL;
责编:豆豆技术应用
正在加载评论...