用maya中粒子代替做叶子自然飘落撒开

修改
鏉ユ簮: 貌似殊途 浏览 14185 日期 2011-10-22 0

1.1 创建一个简单的 nurbs-plane ,将它的 patches u 和 patches v 都设为 3 。

1.2 选择这个平面,按 f4 进入动力学菜单,给平面一个粒子发射器,不过先进入命令后面的黑色方块按钮( optionbox ),设置发射器的选项,( f4 ->particles -> emit from object-> optionbox )。我们准备让叶子往 -y 方向下落,将 emitter type 设为 surface , rate 为 10-20 之间(多少你自己看了),把 basic emission speed attributes 中的 normal speed 设为 -2 ,然后按 create 。你现在点播放动画,就会看到粒子了。打开 outliner (大纲),选中 particle1 (粒子),给它一个 gravity (重力场),将 gravity 里面的 magnitude 设为 5 , attenuation 为 0 。然后我们再加入 turbulence (扰乱场),将里面的 magnitude 、 attenuation 分别设为 10 和 0 ,这些设置只是我个人的,你如果觉得飘的慢或快,你也可以加大或缩小设置,看看效果。现在就我的过程中,还得在 particleshape1 里将 conserve 设为 0.92

1.3 现在,我们用 polygan 做一两张树叶,然后用( particle->instancer )粒子替换命令,大家就会看到那些粒子变成树叶了

1.4 ctrl+a 打开( attribute editor )粒子属性,在 particle-shape 中的 add dynamic attribute 里点击 "general" ,创建新属性(设置如下图)

1.5 在 "per particle (array) attributes" 中,会看到新增加了一个属性 ——rotpp ,现在我们用鼠标右键点击它,创建一个表达式( creation-expression_r ),看下图:设为 particleshape1.rotpp = rand (0,360);

1.6 我们还得创建一个 runtime-expression_r (下图),来控制粒子的随机运动值。设为 particleshape1.rotpp += 0.001;"+=" 在这里面的意思是每帧加 0.001 的值。

1.7 现在我们打开 particleshape 属性框,将 rotation options 里面的 rotation 设为 "rotpp"

1.8 我们按 play 测试动画,叶子在空中无规则的旋转飘落。

1.9 我们想象怎么能让叶子落到地面上去呢?其实很简单。我们再做个平面(如图),记住要比第一个面大。然后先选择刚做的平面,按住 shift 再选择 particle1 (就是叶子,也可在大纲视图里选),给它们一个( particles->make collide )碰撞命令 , 设置 friction 为 0.8-1 (如图)

1.10 播放动画,大家会看到粒子落到地面后还是在那旋转,这不是我们想要的。我们还得进入表达式编辑器里设置 "velocity" 值( attribute-editor->particleshape ) , 在 per particle (array) attributes 里的 "rotpp" 上用鼠标右键点击,然后编辑 runtime 表达式。我们增加新的一小段 mel (如图)

1.11 现在粒子落到地面不会动了:)因为速度周转率为 0 ( velocity=0 -> $vel=0 ),完成

评论

{{ username ? username.charAt(0).toUpperCase() : '?' }}
Ctrl+Enter 发布
{{ (c.username || c.author_name || '?').charAt(0).toUpperCase() }}
{{ c.username || c.author_name }} {{ Utils.formatDate(c.created_at) }}