Maya用粒子制作随机飘散的树叶
- 2022-02-05
- 来源/作者: PS.ONEGREEN.ORG / 佚名
- 2 次浏览
本教程讲解的是关于用maya粒子技术来制作树叶随风飘散的效果,首先我们来看看图1。
图1
1、创建一个nurbs平面,如图2。
图2
2、按f4进入动力学模块,执行particles -> Emit from object操作,并在属性框里选择平面方式,它是平面发射粒子,为使粒子向下运动,设置“Normal Speed”大约为-2,设置rate 大约10至
20。向前拨一下时间划块,你就可以看到粒子出现了。选择粒子(可以通过outline选择),给他添加重力场(gravity field),设置magnitude=5 ,attenuation=0。再添加扰动场(turbulence field),设置magnitude=10 and attenuation=0,可能场景的大小尺寸不同,上面这些设置参数可能不同,最终效果是使粒子扰动,并且慢慢落下,还要试验一下粒子的conserve这个参数,我发现0.92就可以。
图3
3、为了测试,先创建一个简单的多边形树叶,叫他来替代粒子,选择树叶,(这时候不需要选择粒子)打开particles->Instancer(replacement) ,使用默认设置就可以,注意Particle Object to Insta
nce那个选项里选择正确的粒子。现在粒子已经被树叶替代了。
[NextPage]
图4
4、打开粒子属性编辑器——particle-shape,在“Per Particle (Array) Attributes”下面添加一个“General”动态属性,命名为“rotPP”,Data Type 为 “Vector”,Attribute Type 是“Per Particle (Array)”, 点击ok。
图5
5、在Per Particle (Array) Attributes下面你可以看到这个新添加得属性,在上面点击右键选择Creation-expression particleShape1.rotPP = rand (0,360);给rottPP一个从0到360的随机值。现在不必关闭这个编辑框,下面还要用。
图6
6、添加一个runtime-expression,在时间上控制这个值,选择runtime这个选项particleShape1.rotPP += 0.001;这个式子还可以写成particleSh
ape1.rotPP=particleShape1.rotPP + 0.001; 就是在上面Creation-expression为每片树叶创建的值再每经过一帧加上0.001。
图7
7、现在告诉maya使用“rotPP“这个值来控制粒子的旋转,进入“instancer“得particle shape节点,在这个Rotation OPtions里面设置Rotation为 rotPP (Rotation Type设置为none就可以)。
[NextPage]
图8
8、测试一下动画,可以看到树叶被扰动,并随机的旋转。
图9
9、为了控制,停止旋转当树叶碰到地面的时候,我们需要稍微修改一下表达式。首先再创建一个平面作为地面,设置粒子和地面的碰撞,保持地面被选择,再选择粒子,使用particles -> Make collide,设置friction=0.8-1。
图10
10、设置参数的效果是使粒子在碰撞地面后能基本停下拉,速度基本为0。
11、测试一下,虽然粒子停在了地面,但还是在一直旋转,这不是我们想要得,为了编辑一下,我们需要考虑粒子的velocity(速度)这个选项,打开粒子属性编辑器,打开 particle-shape 节点。点击右键,编辑 runtime表达式。我先创建一个新的变量们来读取粒子的velocity(速度),在把这个值除以2000。
float $vel = (particleShape1.velocity)/2000;
现在,我们用$vel这个变量来替代以前我们设施的0.001。
particleShape1.rotPP += $vel; 。
图
11这个意思就是说,当粒子撞击到地面的时候,速度很小了,几乎为0 了,所以变量$vel为0 ,每帧得旋转值不变了,所以粒子就不再旋转了。
图12