1、MAYA常用表达式1.实现效果:粒子在目标物体表面的权重值随定位器(locator)的某一轴向上的位置变换而归零。表达式:if (particleShape1.goalUlocator1.translateY)particleShape1.goalPP =0;解 释:如果 particleShape1(粒子名称)在座标 U上的目标权重值大于locator1(定位器名称)在 Y轴上的位置变换值,每粒子电目标点的权重值等于O。2.实现效果:使粒子在目标物体 U/V向 0-N分段数之间的随机分布;表达式:particleShape1.goalU = rand(N); particleShape1.g
2、oalV = rand(N);解 释:粒子 particleShape1在目标物体 U向 0-N分段数之间的随机分布;粒子 particleShape1在目标物体 V向分段 0-N之间的随机分布;注:N 为大于 0的任意整数。3实现效果:粒子每一点上的 RGB色值在,之间取随机值。表达式:particleShape1.rgbPP = rand(,);解释:粒子 particleShape1在每一点上的 RBG值在,这间取随机值。注:x,y,z,a,b,c 均为 RGB值,范围在(0-1)之间取任意色值。rand(,);4实现效果:粒子在 U座标上每帧按正弦规律颤动表达式:particleSha
3、pe1.goalU = particleShape1.goalU + sin(frame)*0.01;或者:particleShape1.goalU += sin(frame)*0.01;注:“+”的意思是:等号右边的表达式中,如果有一个加数与等号左边的一个加数相同,则可省略右侧相同名称的粒子,在等号左边加一个“+”即可。5.实现效果:粒子从 A物体表面逐渐过度转移到 B物体表面,最后 A物体消失,B物体出现。表达式:vector $locP = ;vector $part = particleShape2.position;float $abc = mag ($locP - $part);i
4、f ($abc 5)particleShape1.goalPP = 1;elseparticleShape1.goalPP = 0;解 释:定义矢量变量 $ locP 等于定位器 1在 XYZ三个轴向上的变换值。定义矢量变量 $ part 等于 particleShape2的位置。定义浮点变量 $abc 等于 mag ($locP - $part);如果($abc 5)particleShape1每粒子目标点的权重值等于 1。(权重为 1时 A物体能够完全吸附粒子)否则particleShape1每粒子目标点的权重值等于 0。注:权重为 0时,A 物体失去对粒子的吸附力,粒子被转移至另一目标物
5、体 B。浮点变量 $abc 的变化,是随着 locator1空间座标位置的变化而变化的,(为locator1设置空间位移动画关键帧)即 float $abc = mag ($locP - $part); “mag()”: 求矢量大小,求得的结果是一个浮点数6、实现效果:替代粒子发射中,以自定义属性进行每粒子的缩放和旋转。Creation模式下书写以下表达式:particleShape1.costom_scale = rand (0.2,0.6);particleShape1.costom_rotation = rand (-360,360);particleShape1.costom_Rota
6、tionSelf = rand (-2,2);runtime before dynamics模式下,选择 particleShape1.costom_rotation书定以下表达式:particleShape1.costom_rotation += particleShape1.costom_RotationSelf;在创建模式下书写表达式的解释:粒子 1的自定义缩放值等于 0.2至 0.6之间的随机变量;粒子 1的自定义旋转角度等于-360至 360之间的随机变量(初始旋转角度);粒子 1的自定义飞行中动态旋转角度等于-22 之间的随机变量;“运行时动力学前”模式下,选择粒子 1的旋转属性,
7、书写表达式的解释:粒子 1的自定义旋转角度等于:自身初始旋转角度,即 rand (-360,360),加上粒子 1的自定义飞行中动态旋转角度,即 rand (-2,2)。 注:runtime before dynamics 也可理解为粒子发射过程中。7.实现效果:多个粒子替代物以不同的(自定义)速度和步幅向某一方向运动。表达式:float $speed = mag (particleShape1.velocity);particleShape1.custom_age = particleShape1.age *$speed*0.04;解 释:定义一个浮点变量 speed ,等于 particl
8、eShape1速率的矢量值;等于 particleShape1自定义年龄 等于 particleShape1自身的年龄*浮点变量speed如果还是觉得粒子替代物行进的太快,可以乘以一个系统,如*0.04,就可使变速整体变慢。7.实现效果:粒子精灵大小、旋转方向的随机变化。表达式:particleShape1.spriteSclaeYPP = rand (0,5,1);particleShape1.spriteSclaeXPP = rand (0,5,1);particleShape1.spriteTwistPP = rand (-360,360);解释:粒子 1在 Y轴上每粒子的缩放为 0,5
9、1 之间的随机变量;粒子 1在 X轴上每粒子的缩放为 0,51 之间的随机变量;粒子 1的每粒子的旋转角度为-360360 之间的随机变量;注:因以上表达式是在 Creation模式下创建,所以只能实现替代粒子在出生之间就具备大小不一和角度不同的属性,要想实现下落过程中的旋转,还要在Runtime before dynamics模式下创建运行表达式:首先,要在 Creation模式下书写以下表达式particleShape1.custom_Twist = rand (-5,5);解释:粒子 1的自定义旋转角度为 -5 至 5之间的随机变量。切换到 Runtime before dynamics
10、运行表达式模式下,选择粒子 1的单粒子旋转属性:particleShape1.spriteTwistPP particleShape1.spriteTwistPP + particleShape1.custom_Twist;可简写为:particleShape1.spriteTwistPP +particleShape1.custom_Twist;8. 每粒子的旋转角度,随着每粒子速率的变化而不同。为粒子创建自定义属性.custom_Twist,在 Creation模式下表达式:particleShape1.custom_Twist = rand (-2,2);粒子 1的自定义旋转角度为-2
11、至 2 之间的随机变量;在 Runtime before dynamics运行表达式模式下:float $speed = mag(particleShape1.velocity);particleShape1.spriteTwistPP += particleShape1.custom_Twist*$speed*2;解释:定义浮点变量$speed 等于粒子 1的速率的矢量变量。粒子 1的每粒子点的旋转角度,等于其自身原有角度+自定义的旋转角度即 rand (-2,2);,再乘以浮点变量 $speed,若粒子的旋转效果不明显,可再乘以一个系统,如 2。最终效果为:每粒子的旋转角度可随着每粒子速率
12、的变化而不同。 9.实现效果:为粒子精灵指定动态序列贴图,实现粒子精灵发射的随机循环播放。(知识点: frame%50 每一帧的时间总长度比上序列图片的总长度,取余)Creation模式下书写以下表达式particleShape1.spriteNumPP = rand (0,50);解释:为每粒子创建一个 0 至 50 帧之间的随机变量。Creation模式下书写以下表达式:particleShape1.spriteNumPP += 1;particleShape1.spriteNumPP = spriteNumPP%50;解释:粒子发射过程中,每粒子运行一帧,就再增加一帧;(实现每一帧的连续
13、播放)粒子 1的单粒子晶灵数量单粒子每一帧的时间总长度比上序列图片总长度(50 帧),取余,实现单粒子在每一帧上以不同形态进行循环播放。10.实现效果:粒子精灵以随机比例、随机寿命的属性,紧贴曲面以随机速率运动。Creation模式下:particleShape1.spriteNumPP = rand (0,49);每粒子图像序列编号索引为 0-49帧之间的随机变量particleShape1.goalV = rand (0,1);每粒子 V向的目标权重为 0-1之间的随机变量。particleShape1.lifespanPP = rand (8,12);每粒子寿命为 8-12之间的随机变量
14、 particleShape1.spriteScaleYPP = rand(0.6,1.2);每粒子 Y轴的缩放比例为 0.6-1.2之间的随机变量particleShape1.spriteScaleXPP = rand(0.6,1.2);每粒子 X轴的缩放比例为 0.6-1.2之间的随机变量particleShape1.goalOffset = ;每粒子的目标偏移世界空间位置为,其中,Y 为particleShape1.spriteScaleYPP的一半,即*0.5,可实现粒子紧贴地形运动。particleShape1.rgbVPP = rand (0,1);每粒子在 ramp贴图中 V轴上
15、的 RGB值为 0-1之间的随机变量Runtime before dynamics模式下:particleShape1.spriteNumPP +=1;每精灵图像序列编号索引为其自身原编号索引+1particleShape1.spriteNumPP = particleShape1.spriteNumPP%50;每精灵图像序列编号索引为,每帧的时间除以序列的长度的余数float $angle = angle(,particleShape1.worldVelocity);浮点变量$angle 为,粒子的世界座标位置和世界位置的夹角的弧度(angle 弧度)particleShape2.spriteTwistPP=rad_to_deg($angle); 每精灵的旋转角度(rad_to_deg:转化弧度为角度)particleShape2.spriteTwistPP=rad_to_deg($angle)-90; 如果角度错误,可再表达式中再减去 90 度。