使用位置、速度和加速度

 
 
 

要创建各种类型的粒子运动,可以将向量值指定给位置、速度或加速度属性。有关使用这些属性的示例,请参见编写运行时表达式

除非您具备扎实的物理学知识,否则请避免设置位置、速度和加速度属性的组合。

若要使用运行时表达式为粒子指定平滑的随机运动,请使用随机数函数(如 sphrand)将随机数指定给“粒子形状”(particle shape)的加速度属性。更改加速度始终会实现平滑的运动,无论其值的更改多么突然。

若要使用运行时表达式为粒子指定抖动随机运动,请使用随机数函数(如 sphrand)将随机数指定给“粒子形状”(particle shape)的速度属性或位置属性。

有关如何使用随机数函数的详细信息,请参见随机数函数简介

如果表达式和动态字段控制对象的位置、速度或加速度,Maya 将首先计算表达式的影响,然后添加字段的影响。

注意如果动力学和表达式影响表达式执行瞬间的位置、速度或加速度,则会对产生的对象运动造成影响。如果在动力学之前执行表达式,Maya 将使用表达式赋予的值来计算动力学。如果在动力学之后执行表达式,Maya 将根据上一个帧留下的任何属性值或由输入渐变生成的值来计算动力学。

若要设置在动力学之前还是之后执行表达式,请选择粒子对象,显示“属性编辑器”(Attribute Editor),然后启用或禁用“表达式动力学后”(Expressions After Dynamics)

示例

假设粒子带有默认重力选项的重力场的影响下落下。重力使粒子以 9.8 个单位/每秒的速率沿 Y 轴加速。换句话说,重力的默认加速度为 <<0,-9.8,0>>。

进一步假设为粒子编写了下列运行时表达式:

velocity = velocity + <<1,0,0>>;

随着每个帧播放,Maya 首先使用表达式语句计算粒子的速度。在 X 轴方向上,速度每秒增加 1 个单位。随后,Maya 将重力加速度累加到速度上。Maya 使用组合的结果来计算粒子的位置。

当然,您不会看到该计算过程。在执行所有计算之后,该帧会在适当位置显示粒子。

该表达式将常量 <<1,0,0>> 添加到动画播放时每帧的粒子速度上。这会使粒子随着时间的增加以增加速度沿 X 方向移动。增加速度与加速度相同。

加速度属性的工作方式与位置或速度属性在一个重要方面有所差异。Maya 将其值初始化为每帧之前 <<0,0,0>>。如果过采样级别大于 1,则在每个时间步骤之前都会发生初始化。

示例

假设您为不受重力影响的五粒子对象编写以下运行时表达式:

acceleration = acceleration + <<0,1,0>>;

不是将 <<0,1,0>> 累加到每帧的加速度值,对于每个粒子,加速度保持为常量 <<0,1,0>>。发生这种情况的原因是,Maya 将加速度的值初始化为每帧之前 <<0,0,0>>。

假设使用默认设置将粒子对象连接到重力。粒子的加速度变为 <<0,1,0>> 加上 <<0,-9.8,0>>,等于 <<0,-8.8,0>>。在表达式中指定的加速度会放慢重力的向下加速度。

假设您将上一个表达式更改为以下形式:

acceleration = acceleration + sphrand(3);

由于 Maya 将加速度设置为每帧之前 <<0,0,0>>,因此该语句的结果与以下语句的结果相同:

acceleration = sphrand(3);

随着每个帧播放,Maya 首先使用表达式语句计算每个粒子的加速度。每个粒子都会收到 sphrand (3) 函数的结果。

sphrand (3) 函数提供了一个向量,其随机选择的组件驻留在半径为 3 的原点处居中的球形区域中。每个粒子接收不同的向量值。

最后,Maya 将添加重力的加速度累加到从 sphrand (3) 产生的表达式加速度上。该帧在产生的位置显示每个粒子。

由于从表达式生成随机值,因此每个粒子拥有的加速度在方向和幅值上都与重力稍有不同。由于会对每帧的每个粒子执行 sphrand (3) 函数,因此每帧的每个粒子的加速度会有所不同。

此示例说明您可以充分利用字段的累加影响和加速度属性来创建自定义字段影响。

提示

通过将“粒子形状”(particle shape)节点属性的“dynamicsWeight”属性设置为 0,可以禁用该属性上所有字段的影响。