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

使用“数量更改”子操作符,可通过繁殖新粒子或删除现有粒子来修改粒子数。繁殖时,可以将繁殖属性和详细信息记录到使用“输出新建”子操作符创建的自定义通道中。另外,在繁殖时,整数输入值确定新粒子数。

步骤

“数量更改”是高级数据操纵工具包中最复杂的子操作符之一。为了帮助您了解它的运作方式,我们提供了以下示例:简单繁殖。

使用“数量更改”子操作符要求具有其他子操作符的相关知识。此示例的目的仅仅是说明使用“数量更改”子操作符最简单的方式。

注意在此场景中,原始(父)粒子根据标准“速度”操作符的定义沿着粒子流源图标箭头移动,而繁殖的粒子朝各个方向移动。                

若要继续进行,请打开附带的文件 SimpleSpawn.max。  

示例:使用“数量更改”子操作符:

  1. 添加“数量更改”子操作符。将“类型”设置保留为“繁殖”,并选择“整数作为相加量”。然后,将其输入与“输出类型”设置为“整数”的“标量”子操作符进行关联。

    “标量”子操作符的整数值控制繁殖过程的强度。

  2. 通过添加具有数据类型“布尔”的“输出新建”子操作符来创建自定义通道以记录繁殖。

  3. 将“输出新建”“执行顺序”设置为 1。这会将“数量更改”“执行顺序”自动设置为 2,从而在执行数量更改之前创建自定义通道。                

  4. 在“数量更改”子操作符 “记录繁殖到数据”组中,启用“为当前繁殖”。单击“无”按钮并选择“输出新建”子操作符。                  

    这会将繁殖数据记录到自定义通道。                  

  5. 要查看繁殖过程,请更改繁殖粒子的速度(速度向量设置为 [25, 0,0],散度设置为 180),并启用“用作速度”。                  

    此处将“向量”子操作符与散度一起使用将单个繁殖粒子彼此分开,并与父粒子分开。

  6. (对于数据测试为必需)若要将繁殖粒子从原始粒子中过滤出来,请添加“输出测试”子操作符。输出测试应从自定义通道请求数据;这是创建新的“输入自定义”子操作符的原因。

在其当前形式下,该示例仅是常规“繁殖”测试的子集,可以从中构建自定义繁殖过程。例如,可以创建您自己的图解视图以根据父对象位置计算繁殖数量,而不是使用“标量”子操作符定义繁殖的附加数量。另一个实验途径是更改“向量”子操作符(定义繁殖粒子的速度)。

此示例显示了繁殖过程的最低要求。单纯只有“数量更改”子操作符无法满足该最低要求。因此,此处的目的是提供一些可以依据的基础和背景。奠定基础并确定其可行(繁殖过程是可见的)之后,就可以更加轻松地修改或构建。

界面

类型

该类型确定数量更改是创建(繁殖)粒子,还是将其删除。当“类型”设置为“删除”时,唯一可用的控件为“假以删除/真以删除”和“执行顺序”。默认设置为“繁殖”。                  

整数作为数量/相加量

“数量更改”子操作符的整数数据输入定义繁殖的粒子数量。使用此选项确定是否将传入数据视为以下项:

  • 数量输入整数值定义将代替父粒子的粒子数。即,它定义包括父粒子及其繁殖的子粒子在内的粒子总数。输入值为 0 表示父粒子已删除;1 表示粒子未繁殖等等。

  • 相加量输入整数值定义粒子的繁殖数量。输入值为 0 表示粒子未繁殖,值为 1 表示为每个父粒子创建了一个子粒子等等。

假以删除/真以删除

仅当类型设置为“删除”时可用。这是“删除”选项的唯一功能,可将子操作符输入类型设置为“布尔”:当传入数据与所选选项具有相同值(假为 0;真为 1)时,将删除事件中的粒子。                  

重置粒子年龄

启用时,事件中的粒子会将年龄重置为 0。                  

繁殖作为事件中的新粒子

所有粒子都有标准的“事件中的新粒子”数据通道,用来指示通过出生或从其他事件传输刚进入事件的粒子。很多操作符使用“事件中的新粒子”数据来初始化粒子的某些属性数据。通过此选项,可以选择是否要使用该数据通道标记新繁殖的粒子。启用时,繁殖的粒子将被视为新粒子,从而通过其他操作符触发某些数据初始化。禁用时,繁殖的粒子将不被视为新粒子,而从父粒子继承这些数据。                  

“优先级和执行顺序”组

请参见优先级和执行顺序

“记录繁殖到数据”组

通过这些控件,可以将繁殖属性和详细信息记录到自定义通道。必须提前使用“输出新建”子操作符创建自定义通道。将在数量更改执行过程中更新自定义通道中的数据。因此,要获得这些数据,必须从数据流中的自定义通道请求数据(通常使用“输入自定义”子操作符),并将相应的执行顺序值设置为高于“数量更改”子操作符的执行顺序值。              

若要使用任意这些控件,请将其启用,单击相关按钮,然后使用“选择数据通道”对话框指定通道。  

为当前父对象

布尔数据,用于指示某个粒子是否繁殖任何粒子。

为当前繁殖

布尔数据,用于指示某个粒子是否为最新繁殖。                  

父对象 ID

整数数据,用于指示粒子的父对象的出生 ID。ID 信息可用于“输入自定义”子操作符,该操作符可接受整数通道以从其他粒子检索数据(选项“使用 I2 作为粒子 ID”)。如果粒子不是“数量更改”子操作符执行的繁殖结果,则数据读取为 -1。另外,可以在多个“数量更改”子操作符之间使用相同的数据通道。

最后一个繁殖 ID

整数数据,用于指示最后一个繁殖粒子的出生 ID。该数据仅对至少作为一次父对象的粒子有效,它在当前积分步长中不是必要的,但在最终的全局上非常有必要。

第一个繁殖 ID

整数数据,用于指示在全局意义上第一个繁殖粒子的出生 ID。该粒子是在父粒子的繁殖期间年龄最大的粒子。同样,该数据仅对至少作为一次父对象的粒子有效。该数据通道仅在已定义“总繁殖数”通道(请参见下文)时可用。

当前第一个繁殖 ID

整数数据,用于指示当前积分步长中第一个繁殖粒子的出生 ID。

旧/上一个同级 ID

整数数据,用于指示上一个繁殖/同级粒子的出生 ID。这些数据可用于建立同级项繁殖链。数据通道仅在定义“总繁殖数”和“最后一个繁殖 ID”通道时才可用。数据是通过积分步长连续的;因此,如果粒子在多个积分步长期间进行繁殖,仍可以为父粒子建立完整的同级繁殖链。                  

当前繁殖数

整数数据,用于指示在当前积分步长期间,每个父粒子繁殖的粒子数。

总繁殖数

整数数据,用于指示父粒子的粒子繁殖总数。                  

当前繁殖顺序

整数数据,用于指示当前积分步长中的繁殖顺序,从 0 到 N-1,其中 N 是当前积分步长中父粒子的繁殖数。数据可用于调整粒子的空间位置,例如将粒子从先前积分步长中的最后一个繁殖粒子的位置传播到父粒子的当前位置,从而创建类似于标准“繁殖”操作符的放置。                  

,