命令条目:“粒子视图”“数据图标/操作符/图标测试/测试” 单击“编辑数据流”。 添加或选择“函数”。

“函数”子操作符可在一个或两个输入值或运算对象上执行一个或多个数学计算。该子操作符可提供各种函数;特定的可用计算依赖于输入类型。

注意“函数”子操作符的输出类型是两个运算对象中较复杂的一个。例如,使用实数和整数运算对象的函数将输出实数数据。如果需要输出不同的数据类型,请将“转换”子操作符与“函数”子操作符输出关联。

界面

“第一个运算对象”组

第一个运算对象始终可用。组框标签(“第一个运算对象”)后跟各自子操作符的输入标签;例如,如上图所示,该标签为向量输入 V1,后跟“(X)”。后者表示输入值将在所选函数中替换 X。例如,如果“类型”为“整数”,“使用第二个运算对象”处于禁用状态,且使用默认函数“平方               X*X”(在这种情况下),则输入值将用作第一个运算对象,且“函数”子操作符将输出正方形。

类型

选择第一个运算对象的数据类型。可以从下拉列表中获得高级数据操纵工具支持的所有数据类型(复数、对象、对以及等于除外)。此选项可确定组框标签和各自子操作符的输入连接类型。                  

前因子

指定在应用函数之前与第一个运算对象相乘的实数值。默认设置为 1.0。

在某些情况下,前因子参数会切换为其他两个参数之一:

混合因子

仅当选择了“插值”函数时可用。混合因子定义了两个运算对象的插值比率。例如,如果混合因子为 0.5,则两个输入被视为相等。插值时,共享总数为 1.0。混合因子是用于第一个输入的共享。由于总数为 1.0,因此第二个输入的共享为 1.0,即混合因子值。

偏移

仅当使用带有“标识”函数的整数或实数类型的单个运算对象(第一个运算对象)时可用。“偏移”参数是一种按固定量增大或减小数据通道中的值,而免去创建其他子操作符的麻烦的快速方法。                  

R3

启用时,会将 R3 输入添加到子操作符中,您可以将输出实数值的任何子操作符连接到该操作符。此输入前因子可替换显式前因子值,并且在应用函数之前会与第一个运算对象相乘。                  

使用第二个运算对象

启用时,该函数会使用两个运算对象,因此可以从“函数”下拉列表中获得一组不同的函数。禁用时,仅使用“第一个运算对象”输入。              

“第二个运算对象”组

仅当“使用第二个运算对象”(请参见上文)处于启用状态时,以下控件才可用。在这种情况下,“函数”子操作符将在两个输入值上执行计算。根据第一个运算对象类型,第二个运算对象可能是由用户选择的,也可能不是。例如,如果第一个运算对象的类型为“时间”,则第二个运算对象的类型也必须为“时间”。子操作符输入连接会进行相应地配置。

组框标签(“第二个运算对象”)后跟各自子操作符的输入标签;例如,在上图中,该标签为矩阵输入 M2,后跟“(Y)”。后者表示输入值将在所选函数中替换 Y。例如,如果两个输入类型都为“时间”并且使用函数“相加 X+Y”,则 T2 输入值将添加到 T1 输入值中。

类型

选择第二个运算对象的数据类型(如果适用)。仅当第一个运算对象类型为“整数”、“四元数”、“实数”或“向量”时,下拉列表才可用。否则,该软件会将第一个运算对象设置为同一数据类型,并且将“类型”设置为只读字段。是否可以从下拉列表中获得数据类型取决于第一个运算对象的类型。例如,如果第一个运算对象类型为“整数”,则第二个运算对象的类型只能是“整数”或“实数”。

前因子

指定在应用函数之前与第二个运算对象相乘的实数值。默认设置为 1.0。

R4

启用时,会将 R4 输入添加到子操作符中,您可以将输出实数值的任何子操作符连接到该操作符。此输入前因子可替换显式前因子值,并且在应用函数之前会与第二个运算对象相乘。                  

函数

选择用于计算基准输出值的公式。该下拉列表的内容取决于第一个运算对象的数据类型和第二个运算对象的数据类型(如果存在)。这些函数都不言自明。

“结果”组

类型

“函数”子操作符的输出数据类型。与单个运算对象以及与相同类型的两个运算对象相比,这始终与第一个运算对象的数据类型相同。与不同类型的两个运算对象相比,该输出类型是两个运算对象中较为复杂的一个。例如,使用实数和整数运算对象的函数将输出实数数据。如果需要输出不同的数据类型,请将“转换”子操作符与“函数”子操作符输出关联。

后因子

指定在应用函数后与该结果相乘的结果类型的值。默认设置为 1.0 或 1。

参数动画同步

如果对子操作符参数进行了动画设置,则软件可以从动画的开始帧或当前事件的第一帧开始,将此动画应用于所有粒子,或根据每个粒子的年龄应用于相应粒子。这些选项包括:

  • 绝对时间为参数设置的任意关键点在为其设置关键点的实际帧处应用。

  • 事件持续时间为参数设置的任意关键点相对于每个粒子第一次进入事件的帧应用于每个粒子。                      

  • 粒子年龄为参数设置的任意关键点在每个粒子存在的相应帧处应用。

  • 粒子寿命将参数动画缩放/映射到粒子寿命期间。例如,如果在 0 至 100 帧中从 5 至 20 帧为参数值设置动画,则当粒子出生时该参数的值为 5,当粒子死亡时该参数的值为 20。例如,用这种方法可以定义粒子的缩放在其寿命期间发生的更改。

    为了使此选项正常工作,粒子流必须包含设置为“按粒子年龄”的“删除”操作符,从而定义粒子寿命。

  • 时间数据输入将时间输入添加到子操作符中,您可以将输出时间格式的数据的任何其他子操作符链接到该子操作符。                      

E5

启用时,可以通过“参数”子操作符露出动画同步参数并可供用户选择。启用 E5 后,添加设置为“类型: 动画同步”的“参数”子操作符,将其与“函数”子操作符上的 E5 输入关联,然后使用露出参数使该设置在“粒子视图”界面中可用。

通过组 ID 限制

启用时,您可以指定要在其上执行“函数”子操作符的组 ID 整数数据通道。通过单击“组 ID 数据通道”按钮指定数据通道。                  

此选项仅适用于以下情况:

  • 对于“全部”类型的函数,当“使用第二个运算对象”处于禁用状态时,会显示在“函数”下拉列表中。

  • 对于“平均值”类型的函数,当使用一个或两个运算对象时,会显示在“函数”下拉列表中。

  • 当“通过组 ID 限制”处于启用状态且已设置组 ID 时,会在具有该组 ID(而非其他 组 ID)的所有粒子上执行指定函数。

以下是此选项的工作方式的示例:                  

粒子数据 = 1 2 3 4 5 1 2 3 4 5                  

函数 = 平均值:结果 = 3 3 3 3 3 3 3 3 3 3                  

现在,假设“通过组 ID 限制”处于启用状态,且指定的“组 ID 数据通道”设置中的数据为 1 1 1 2 4 4 4 4 4 8                  

组 ID 会限制计算平均值的方式,这是针对具有相同组 ID 的粒子。因此,该函数的结果如下(从原始粒子数据):2 2 2 4 3 3 3 3 3 5                  

原始示例具有以下用例:根据粒子的父对象为粒子提供组 ID:如果它们是从同一父对象繁殖而来,则具有相同的组 ID。在这种情况下,粒子会移动,然后与网格碰撞。粒子与网格碰撞后,具有相同组 ID 的所有粒子应跳转至下一事件。                  

这可以通过以下方式来完成:粒子碰撞后,其数据将从“假”更改为“真”。然后在“通过组 ID 限制”处于启用状态时,会使用 OR/所有粒子。因此,通过在相同组上使用 OR,真值可传播到相同组中的所有粒子。                  

,