控制粒子动力学的执行时间

 
 
 

有多种方法可以控制粒子动力学的操作时间:

更改粒子对象的开始帧

每个粒子对象都具有“开始帧”(Start Frame)属性,可以设定效果开始的时间。例如,可以将粒子对象上的漩涡效果延迟到自行选择的帧。

再比如,假设您创建一个角色,从地板上的灰尘粒子上走过。灰尘连接到重力、地板碰撞对象和角色脚上的空气(尾迹)场。您希望脚上的空气场在帧 100 处开始扬起灰尘。

可以将灰尘的“开始帧”(Start Frame)设定为 100,以便将灰尘的动力学计算延迟到有计算需要的时候。这样可以加快场景播放并防止粒子因为重力和碰撞效果而出现轻微反弹。

您还可以通过禁用前 100 个帧的“为动力学”(Is Dynamic),防止针对灰尘进行动力学计算。但是,通过将“开始帧”(Start Frame)设定为 100,您也将避免单击帧或拖动“时间滑块”时必须等待前 100 个帧的预备运行计算。

请注意,当创建粒子对象或发射粒子对象的发射器时,“开始帧”(Start Frame)将默认设置为 1.0。该值是当前时间单位设置下单个帧的持续时间。

若要设定粒子对象的“开始帧”(Start Frame),请选择粒子对象,然后在“属性编辑器”(Attribute Editor)“时间属性”(Time Attributes)区域的“开始帧”(Start Frame)中输入值。

重要信息 如果要更改时间单位设置,必须将“开始帧”(Start Frame)设定为正确的初始值,以便 Maya 再次计算开始时间。

发射的粒子对象仅接受帧大于或等于其“开始帧”(Start Frame)处的发射粒子。例如,若要在帧编号 -5 处发射粒子,则将发射粒子对象的“开始帧”(Start Frame)设定为 -5 或更少。

控制粒子动力学的计时

通过动力学动画,您可以指定希望对象采用的操作,然后让软件计算出如何对对象设定动画。在历史上,将该动画方法与其他操作同步一直都富有挑战性。例如,与渐强乐谱同步提高发射粒子的速度一直非常困难。

Maya 具有克服这种难题的功能。每个粒子对象都具有“当前时间”(Current Time)属性,您可以对其设定动画以降低或加快粒子效果。该属性包含独立时钟时间的值。从本质而言,减慢或加快粒子对象的时钟可以减慢或加快对其产生影响的动力学。有关详细信息,请参见了解当前时间属性

示例

一个发射器在 150 帧动画中发射粒子。以下步骤显示了如何通过对“当前时间”(Current Time)设定关键帧控制粒子的速度。

  1. 选择发射的粒子对象(不是发射器)。
  2. “通道盒”(Channel Box)中,单击“当前时间”(Current Time)属性,然后单击鼠标右键并选择“断开连接”(Break Connections)
  3. 设定以下帧的“当前时间”(Current Time)关键帧:
    当前时间

    0

    0

    50

    100

    100

    110

    150

    200

    在动画开始时(第 0 帧),发射粒子的“当前时间”(Current Time)与场景时间同步。两者的值都为 0。

    在第 50 帧处,“当前时间”(Current Time)关键帧设定为 100,是场景时间值的两倍。对于第 0 帧到第 50 帧,这样会将发射粒子的操作时间增加为场景时间的两倍。因此,发射粒子以将出现速度的两倍速度移动,无需操纵“当前时间”(Current Time)

    在第 100 帧处,“当前时间”(Current Time)关键帧设定为 110。从第 50 帧到第 100 帧,这样会减慢发射粒子相对于场景时间的时间过程。发射粒子以低于将存在速度的速度移动,无需操纵“当前时间”(Current Time)

    在第 150 帧处,“当前时间”(Current Time)关键帧设定为 200,再次加快发射粒子的时间过程。粒子再次以较快速度移动。

    提示

    若要方便地减慢或加快动态效果,请在对“当前时间”设定关键帧值后使用“曲线图编辑器”(Graph Editor)调整“当前时间”(Current Time)的动画曲线。请参见“动画”。

了解“当前时间”(Current Time)属性

每个已设定动画的粒子对象都根据其自己的时钟运行。可以使该时钟独立于场景时钟,场景时钟使用“时间滑块”中的时间向前推进。

每个粒子对象都具有“当前时间”(Current Time)属性,其中包含其时钟值。与场景时钟时间变量不同,您可以使用关键帧、表达式或其他动画技术设定“当前时间”(Current Time)的值。场景时钟是具有固定长度增量的计时装置,而粒子对象的时钟具有可以通过“当前时间”(Current Time)属性设定的可变增量。可以改变增量以减慢或加快粒子上的动态效果。

对于将在粒子对象中发生的动画,其“当前时间”(Current Time)需要随场景播放而发生变化的输入连接。默认情况下,场景的预定义时间变量将为“当前时间”(Current Time)提供输入。

如果使用非粒子形状表达式将值指定给“当前时间”(Current Time),则该值将解释为窗口 > 设置/首选项 > 首选项(Window > Settings/Preferences > Preferences)窗口“设置”(Settings)类别中指定的“时间”(Time)单位类型。如果 fps 速率处于选中状态,例如,“电影(24 fps)”(Film (24 fps)),则“当前时间”(Current Time)值将解释为帧。

例如,假定已将“工作单位时间”(Working Units (Time))值设定为“电影(24 fps)”(Film (24 fps))。这意味着动画使用帧编号作为时间值。假定进一步使用以下表达式语句:

currentTime = 50;

50 将被视为第 50 帧,而不是,例如,50 毫秒。

请注意,可以设定递减的“当前时间”(Current Time)以实现发射器将先前发射的粒子吸回自身之类的效果。若要查看该效果的结果,必须启用发射粒子的“缓存数据”(Cache Data)并播放动画。

提示

如果已断开与“当前时间”(Current Time)的连接,要重新将其连接到场景时间,请选择粒子形状节点(不是变换),然后选择粒子 > 连接到时间(Particles > Connect To Time)

粒子动力学后执行表达式

每个帧中运行时表达式在动力学之前或之后执行,具体取决于创建运行时表达式时选择的内容。

在 Maya 先前版本中,必须选择粒子形状运行时表达式在其动力学计算前还是计算后执行。在 Maya 中,可以在创建运行时表达式时指定表达式在动力学计算前还是计算后执行。

例如,假定您使用重力场使粒子水滴掉落到角色身上,然后编写水滴对象位置的运行时表达式以防止其粒子穿透角色曲面。如果将该表达式创建为动力学之前的运行时,则可能会看到一些曲面穿透,因为重力场在位置约束表达式之后执行。可以创建或复制该表达式到运行时动力学后,使动力学的剩余效果不干扰表达式。