尼加拉系统

尼加拉发射器

尼加拉发射器是单个发射器,可以发射一种粒子的粒子。多个尼加拉发射器可以组合起来创建一个好的VFX效果。

  • 尼加拉发射器可以有自己的时间或全局时间,例如尼加拉系统所拥有的时间。
  • 尼加拉发射器可以作为一个独立的资产,如果您想重用它,可以直接坐在尼加拉系统上。

发射器堆栈

  1. Sim目标:这是模拟目标,CPU或GPU应该解决粒子。使用CPU时,“需要粒子给出输出,如它们打击的位置”,“只有几千粒子”。使用GPU时,“不需要粒子计算它们的打击位置,笨粒子”,“可以解决百万粒子”。
  2. GPU模拟粒子仍然可以从蓝图接收信息,但无法输出信息。
  3. 计算边界模式:边界应该如何计算,如果您看到粒子在稍微看起来时消失,那么这是罪魁祸首。固定边界性能较好。
  4. 本地/世界空间:本地空间粒子与发射器一起移动,不会留下尾迹,而世界空间粒子会这样做。
  5. 确定性:粒子是否应该是真正随机的还是基于提供的种子数。
  6. 插值生成:在粒子移动速度快时生成粒子,例如子弹尾迹可以留下点。
  7. 事件处理程序:见下文...

1. 发射器阶段

  • Spawn:在发射器启动其循环时运行一次。
  • Update:每个帧执行一次,发射器处于活动状态。
  • 示例模块:
  • Spawn Rate:“每秒吐出50个粒子。”
  • Spawn Burst Instantaneous:“在启动时立即吐出10个粒子。”
  • Emitter State:决定这个特定的发射器是否循环或只运行一次。

2. 粒子阶段

  • Spawn:在粒子生成时运行一次。
  • Update:每个帧执行一次,针对每个粒子。
  • 示例生成模块:
  • Initialize Particle:设置粒子的初始颜色、大小和寿命
  • Add Velocity:设置粒子的速度和方向
  • 示例更新模块:
  • Gravity Force:应用重力力
  • Solve Forces and Velocity:实际上是根据应用的力来移动粒子

事件处理程序

可以从属性面板添加多个事件处理程序,它们不在默认情况下存在。

例如,如果火箭在天空中升起,死了,我们需要告诉另一个发射器在天空中生成一道烟花。所以我们在火箭的更新粒子阶段中添加了“Generate Death”事件。然后我们点击“+阶段”在属性面板的末尾,添加一个事件处理程序阶段,在此阶段中我们选择火箭→死亡事件。这个阶段现在像一个执行阶段一样,当粒子在火箭发射器中死亡时会执行。然后我们在此阶段中添加一个模块“Receive Death Event”。

  1. 死亡事件:生成当粒子死亡时的事件
  2. 位置事件:返回每个粒子的位置
  3. 冲突事件:生成当粒子碰撞时的事件

1. Sprite 渲染器

  • Sprite 的材质可以在此处更改。
  • 粒子颜色节点在材质图中用于使用粒子颜色,因此更改颜色参数会影响自定义材质。
  • Sprite 的旋转中心可以在此处更改,这有助于在旋转时保持旋转中心。
  • SubUV:SubUV 是一种将材质裁切为部分的方法,选择 10x10 将材质裁切为 100 个 UV 框架。可以在粒子更新阶段添加 Animate SubUV 模块来动画 SubUV 框架。
  • CutOut:这与 Sprite 的裁切框类似,可以根据 Sprite 的大小裁切框。例如,圆形 Sprite 的默认裁切框是矩形,但如果您传入其纹理并选择 Alpha,则可以将其裁切为圆形。
  • 绑定:可以更改 Sprite 的颜色通过颜色参数(粒子命名空间),但如果您想通过其他参数影响它,则可以直接将该变量绑定到 Sprite 的颜色上。
  • 排序:排序越高,Sprite 渲染器使用的 z 顺序越高,显示在低排序的 Sprite 渲染器上。

1. Mesh 渲染器

  • 可以在此处更改 Mesh。
  • 可以在此处更改 Mesh 的材质。
  • 有关 Mesh 的更多属性在 Initialize Particles 模块的 Mesh 属性部分中。

1. Ribbon 渲染器

  • Ribbon 是线条,连接粒子在它们生成的顺序中。
  • 可以在此处更改 Ribbon 的材质。
  • Ribbon 可以具有不同形状,如平面、双平面或管状。

1. 光源渲染器

  • 可以将光源附加到每个粒子,强度和其他属性可以编辑。

1. 组件渲染器

  • 可以渲染其他粒子系统、骨骼网格等。

1. 发射器状态模块

  • 位于发射器更新阶段,帮助配置发射器的生命周期和可扩展性。可扩展性类似于裁切。
  • 可以在此处更改发射器的生命周期和可扩展性。

1. 初始化粒子模块

  • 位于粒子生成阶段,帮助给粒子设置大小、颜色、寿命等属性。
  • Sprite UV 模式:此设置更改 Sprite 在屏幕上的外观,可以在 x 或 y 方向翻转 Sprite。
  • 例如,一个写着“p”的 Sprite 在 x 方向翻转时看起来像“q”,在 y 方向翻转时看起来像“b”,在两个方向都翻转时看起来像“d”。

1. 粒子状态模块

  • 当粒子年龄超过寿命时,告诉引擎杀死粒子以节省性能。

1. Sprite 渲染器

  • 默认渲染器

尼加拉系统

  • 尼加拉系统包含多个发射器,可以在世界中放置,变量可以在蓝图中编辑。

系统堆栈

    1. 预热时间:以秒为单位,系统计算发射器的 2 秒,然后开始。
  • 例如,一个已经燃烧的火焰在游戏开始时为 0 秒。
    1. 系统固定边界:强制所有发射器使用固定边界。

1. 系统阶段

  • Spawn:在系统首次创建时运行一次。
  • Update:每个帧执行一次,针对整个系统。
  • 示例模块:
  • System State:设置尼加拉系统时间和循环持续时间。
  • User Parameters:设置用户参数

参数

  • 在每个模块的详细面板中,有一些属性。每个属性后面有一个下箭头,可以:
    1. 平滑:使属性值平滑变化。
    1. 设置随机范围:使属性值在随机范围内变化。
    1. 从曲线中取值:从曲线中取属性值。
    1. 创建新系统、发射器、粒子或用户参数:创建新系统、发射器、粒子或用户参数。
    1. 使用用户参数值:使用用户参数值。

1. 系统参数

  • 可以从任何发射器中访问。
  • 示例:如果我们想让两个发射器具有相同的生成速率,可以将其设置为系统参数。

1. 读取/获取值

  • 系统参数可以从所有阶段、粒子、发射器和系统中读取。

2. 写入/设置值

  • 系统参数可以从系统更新或系统生成阶段中设置。

1. 发射器参数

  • 可以从粒子、发射器阶段中读取。
  • 示例:如果我们想让两个发射器具有相同的生成速率,可以将其设置为发射器参数。

2. 读取/获取值

  • 发射器参数可以从粒子、发射器阶段中读取。

3. 写入/设置值

  • 发射器参数只能从发射器更新或发射器生成阶段中设置。

1. 临时参数

  • 在计算期间使用,引擎会销毁它们。
  • 不需要关心。

1. 读取/获取值

  • 临时参数可以从粒子阶段中读取。

2. 写入/设置值

  • 临时参数只能从粒子更新或粒子生成阶段中设置。

时钟

    1. 时钟持续时间:仅用于可视化,持续时间可以通过拖动时间条来更改。
    1. 粒子寿命:粒子寿命告诉粒子在生成后多长时间存活。
    1. 系统时间:系统时间告诉尼加拉系统多长时间运行。
  • 例如,一个 5 秒的循环系统将在每 5 秒重置所有发射器。
    1. 发射器时间:每个发射器都有自己的时间,发射器可以选择使用系统时间。

尼加拉模块

  • 大多数生成模块属于发射器更新阶段中的尼加拉模块。生成爆发可以放在发射器生成阶段中。

1. 生成爆发

  • 立即生成指定数量的粒子。

1. 生成速率

  • 每秒生成指定数量的粒子。

1. 生成每单位

  • 根据距离生成粒子,每单位(厘米)。

1. 生成每帧

  • 自然生成粒子。

1. 速度模块

  • 添加速度:设置粒子速度和方向。
  • 例如,粒子在 x 轴上移动 10 个单位,y 轴上移动 5 个单位。
  • 速度模块的旋转坐标空间可以设置为世界/全局,以防止旋转方向影响速度。

1. 力模块

  • 重力:应用重力力。
  • 阻力:应用阻力力。
  • 涡流力:应用涡流力。
  • 缩涡力:应用缩涡力。

1. 冲突模块

  • 启用冲突。
  • 粒子 HasCollided 布尔值在冲突发生时返回 true。

1. 形状位置模块

  • 在几何形状(球体、盒子、圆柱体、环、扭环、锥)上生成粒子。
  • 可以调整许多参数:仅在表面生成、轴约束、半径分布、自定义曲线图等。

1. 静态网格位置模块

  • 在静态网格上直接生成粒子。
  • 粒子可以生成在网格表面、顶点或面上。

时钟

    1. 时钟持续时间:仅用于可视化,持续时间可以通过拖动时间条来更改。
    1. 粒子寿命:粒子寿命告诉粒子在生成后多长时间存活。
    1. 系统时间:系统时间告诉尼加拉系统多长时间运行。
  • 例如,一个 5 秒的循环系统将在每 5 秒重置所有发射器。
    1. 发射器时间:每个发射器都有自己的时间,发射器可以选择使用系统时间。