MAYA 常用表达式
1. 实现效果:粒子在目标物体表面的权重值随定位器(locator)的某一轴向上的位置变换而归零。
表达式:if (particleShape1.goalU>locator1.translateY) particleShape1.goalPP =0;
解 释:如果 particleShape1(粒子名称)在座标U 上的目标权重值大于locator1(定位器名称)在Y 轴上的位置变换值, 每粒子电目标点的权重值等于O 。
2. 实现效果:使粒子在目标物体U/V向0-N 分段数之间的随机分布; 表达式:particleShape1.goalU = rand(N);
particleShape1.goalV = 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 座标上每帧按正弦规律颤动
表达式:particleShape1.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);
if ($abc > 5)
particleShape1.goalPP = 1;
else
particleShape1.goalPP = 0;
解 释:
定义矢量变量 $ locP等于定位器1在X\Y\Z三个轴向上的变换值。 定义矢量变量 $ part等于particleShape2的位置。
定义浮点变量 $abc 等于 mag ($locP - $part);
如果($abc > 5)
particleShape1每粒子目标点的权重值等于1。(权重为1时A 物体能够完全吸附粒子)
否则
particleShape1每粒子目标点的权重值等于0。
注:
权重为0时,A 物体失去对粒子的吸附力,粒子被转移至另一目标物体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_RotationSelf = rand (-2,2);
runtime before dynamics模式下,选择particleShape1.costom_rotation书定以下表达式:
particleShape1.costom_rotation += particleShape1.costom_RotationSelf; 在创建模式下书写表达式的解释:
粒子1的自定义缩放值等于0.2至0.6之间的随机变量;
粒子1的自定义旋转角度等于-360°至360°之间的随机变量(初始旋转角度); 粒子1的自定义飞行中动态旋转角度等于-2°-2 °之间的随机变量;
“运行时动力学前”模式下,选择粒子1的旋转属性,书写表达式的解释: 粒子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 ,等于particleShape1速率的矢量值;
等于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-1 之间的随机变量;
粒子1在X 轴上每粒子的缩放为0,5-1 之间的随机变量;
粒子1的每粒子的旋转角度为-360-360之间的随机变量;
注:因以上表达式是在Creation 模式下创建,所以只能实现替代粒子在出生之间就具备大小不一和角度不同的属性,要想实现下落过程中的旋转,还要在Runtime before dynamics模式下创建运行表达式:
首先,要在Creation 模式下书写以下表达式
particleShape1.custom_Twist = rand (-5,5);
解释:粒子1的自定义旋转角度为 -5至5之间的随机变量。
切换到Runtime before dynamics 运行表达式模式下,选择粒子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至2之间的随机变量;
在Runtime before dynamics运行表达式模式下:
float $speed = mag(particleShape1.velocity);
particleShape1.spriteTwistPP += particleShape1.custom_Twist*$speed*2; 解释:
定义浮点变量$speed 等于粒子1的速率的矢量变量。
粒子1的每粒子点的旋转角度,等于其自身原有角度+自定义的旋转角度即rand (-2,2);,再乘以浮点变量 $speed,若粒子的旋转效果不明显,可再乘以一个系统,如2。
最终效果为:每粒子的旋转角度可随着每粒子速率的变化而不同。
9. 实现效果:为粒子精灵指定动态序列贴图,实现粒子精灵发射的随机循环播放。(知识点: frame%50 每一帧的时间总长度比上序列图片的总长度,取余)
Creation 模式下书写以下表达式
particleShape1.spriteNumPP = rand (0,50);
解释:为每粒子创建一个0至50帧之间的随机变量。
Creation 模式下书写以下表达式:
particleShape1.spriteNumPP += 1;
particleShape1.spriteNumPP = spriteNumPP%50;
解释:粒子发射过程中,每粒子运行一帧,就再增加一帧;(实现每一帧的连续
播放)
粒子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之间的随机变量
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 轴上的RGB 值为0-1之间的随机变量
Runtime before dynamics模式下:
particleShape1.spriteNumPP +=1;
每精灵图像序列编号索引为其自身原编号索引+1
particleShape1.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度。
MAYA 常用表达式
1. 实现效果:粒子在目标物体表面的权重值随定位器(locator)的某一轴向上的位置变换而归零。
表达式:if (particleShape1.goalU>locator1.translateY) particleShape1.goalPP =0;
解 释:如果 particleShape1(粒子名称)在座标U 上的目标权重值大于locator1(定位器名称)在Y 轴上的位置变换值, 每粒子电目标点的权重值等于O 。
2. 实现效果:使粒子在目标物体U/V向0-N 分段数之间的随机分布; 表达式:particleShape1.goalU = rand(N);
particleShape1.goalV = 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 座标上每帧按正弦规律颤动
表达式:particleShape1.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);
if ($abc > 5)
particleShape1.goalPP = 1;
else
particleShape1.goalPP = 0;
解 释:
定义矢量变量 $ locP等于定位器1在X\Y\Z三个轴向上的变换值。 定义矢量变量 $ part等于particleShape2的位置。
定义浮点变量 $abc 等于 mag ($locP - $part);
如果($abc > 5)
particleShape1每粒子目标点的权重值等于1。(权重为1时A 物体能够完全吸附粒子)
否则
particleShape1每粒子目标点的权重值等于0。
注:
权重为0时,A 物体失去对粒子的吸附力,粒子被转移至另一目标物体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_RotationSelf = rand (-2,2);
runtime before dynamics模式下,选择particleShape1.costom_rotation书定以下表达式:
particleShape1.costom_rotation += particleShape1.costom_RotationSelf; 在创建模式下书写表达式的解释:
粒子1的自定义缩放值等于0.2至0.6之间的随机变量;
粒子1的自定义旋转角度等于-360°至360°之间的随机变量(初始旋转角度); 粒子1的自定义飞行中动态旋转角度等于-2°-2 °之间的随机变量;
“运行时动力学前”模式下,选择粒子1的旋转属性,书写表达式的解释: 粒子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 ,等于particleShape1速率的矢量值;
等于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-1 之间的随机变量;
粒子1在X 轴上每粒子的缩放为0,5-1 之间的随机变量;
粒子1的每粒子的旋转角度为-360-360之间的随机变量;
注:因以上表达式是在Creation 模式下创建,所以只能实现替代粒子在出生之间就具备大小不一和角度不同的属性,要想实现下落过程中的旋转,还要在Runtime before dynamics模式下创建运行表达式:
首先,要在Creation 模式下书写以下表达式
particleShape1.custom_Twist = rand (-5,5);
解释:粒子1的自定义旋转角度为 -5至5之间的随机变量。
切换到Runtime before dynamics 运行表达式模式下,选择粒子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至2之间的随机变量;
在Runtime before dynamics运行表达式模式下:
float $speed = mag(particleShape1.velocity);
particleShape1.spriteTwistPP += particleShape1.custom_Twist*$speed*2; 解释:
定义浮点变量$speed 等于粒子1的速率的矢量变量。
粒子1的每粒子点的旋转角度,等于其自身原有角度+自定义的旋转角度即rand (-2,2);,再乘以浮点变量 $speed,若粒子的旋转效果不明显,可再乘以一个系统,如2。
最终效果为:每粒子的旋转角度可随着每粒子速率的变化而不同。
9. 实现效果:为粒子精灵指定动态序列贴图,实现粒子精灵发射的随机循环播放。(知识点: frame%50 每一帧的时间总长度比上序列图片的总长度,取余)
Creation 模式下书写以下表达式
particleShape1.spriteNumPP = rand (0,50);
解释:为每粒子创建一个0至50帧之间的随机变量。
Creation 模式下书写以下表达式:
particleShape1.spriteNumPP += 1;
particleShape1.spriteNumPP = spriteNumPP%50;
解释:粒子发射过程中,每粒子运行一帧,就再增加一帧;(实现每一帧的连续
播放)
粒子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之间的随机变量
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 轴上的RGB 值为0-1之间的随机变量
Runtime before dynamics模式下:
particleShape1.spriteNumPP +=1;
每精灵图像序列编号索引为其自身原编号索引+1
particleShape1.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度。