UE Niagara系统

目录

Niagara命名寓意(非官宣)

核心组件

Niagara视觉特效处理工作流

Niagara事件

Niagara通信

BlueprintToNiagara

NiagaraToBlueprint

案例


Niagara命名寓意(非官宣)

        虚幻重塑Niagara(尼亚加拉)系统,目的是为了取Cascade之精华,去其糟粕。系统工作流串联自上而下,形态就像瀑布模式。

UE Niagara系统_第1张图片

  • 自然现象的启示:尼亚加拉瀑布位于加拿大和美国交接处,它是一种以其令人惊叹和强大的视觉效果而闻名的自然现象。通过将视觉效果系统命名为“尼亚加拉”,开发商可能有意唤起一种敬畏、力量和美感,让人想起瀑布的视觉效果。
  • 流动性和动态性的内涵:“尼亚加拉”一词具有流动性、运动性和动态的内涵,这些都是计算机图形学中视觉效果的关键方面。视觉效果通常涉及创建动态和流体现象的模拟,如火灾、水、烟雾和爆炸。通过将他们的视觉效果系统命名为“尼亚加拉”,可能想传达这样一个系统的想法,即该系统能够以类似流体的行为产生视觉吸引力和动态效果。

核心组件

  • 系统(System)

        Niagara系统是一种容器,可以放入你要构建该效果的所有内容

        UE Niagara系统_第2张图片

  • 发射器(Emitter)

        发射器可用来在Niagara系统中生成粒子。发射器将控制粒子的生成、粒子在生命周期中的遭遇,以及粒子的外观和行为。发射器位于堆栈中。在该堆栈中有几个组,而在组中可以放置用于实现各个任务的模块。

        UE Niagara系统_第3张图片

  1. 发射器生成(Emitter Spawn)
  2. 发射器更新(Emitter Update)
  3. 粒子生成(Particle Spawn)
  4. 粒子更新(Particle Update)
  5. 事件处理器(Event Handler)
  6. 渲染(Render)
  • 模块(Module)

        模块是Niagara中效果的基础构建块。你可以将模块添加到组中来形成堆栈。模块按照自上而下的顺序处理。

        UE Niagara系统_第4张图片

         可以将模块视为能够执行某些数学运算的容器,其实就是对传入的数据加工,在模块结束时将该数据重新写出。

        模块是使用高级着色语言(HLSL)进行构建的,但是可以使用节点在图表中以可视方式进行构建。你可以创建函数(包括输入),或者写入到某个数值或参数贴图中。你甚至可以使用图表中的 CustomHLSL 节点,以内联方式编写HLSL代码。

        双击Niagara中发射器内部的模块,以查看在模块内部发生的数学运算。例如,双击"添加速度(Add Velocity)"模块来查看其内部,则可以看到数据流。

UE Niagara系统_第5张图片

  • 参数(Parameter)

        参数 在Niagara模拟中,是一种数据的抽象化。系统会将参数 类型 分配给参数,以定义参数所表示的数据。参数分为四种类型:

图元(Primitive) 将定义具有各种精度和通道宽度的数值数据
枚举(Enum) 将定义一组固定的指定值,并认定其中一个指定值
结构体(Struct) 将定义一组合并的图元和枚举类型
数据接口(Data Interfaces) 将定义能够从外部数据源提供数据的函数。此类参数可能是来自UE4其他部件的数据,或者是来自外部应用的数据

Niagara视觉特效处理工作流

  1. 创建系统
  2. 创建或添加发射器
  3. 创建或添加模块

Niagara事件

事件无法结合GPU模拟使用。事件仅能CPU模拟使用

要使用事件,必须在发射器的发射器属性(Emitter Properties)中启用"需要持久ID(Requires Persistent IDs)"。

UE Niagara系统_第6张图片

 事件会在粒子的整个生命周期内动态发生,生成事件的发射器需要在Particle Update组中添加事件(Event)的分段。

事件模组有多种类型:

  • 位置(Location)
  • 死亡(Death)
  • 碰撞(Collison)

接收事件的发射器针对需要发射器予以响应的每个事件,添加 事件处理器属性(Event Handler Properties) 项和 接收事件(Receive Event) 模块。

UE Niagara系统_第7张图片

 UE Niagara系统_第8张图片

Niagara通信

BlueprintToNiagara

  1. 创建User Parameters变量
  2. 模块的参数读取User Parameter变量
  3. 蓝图中通过NiagaraSystem对象调用SetNiagaraVariable或Set Parameter函数传递参数值

NiagaraToBlueprint

  1. Particle Update模组下添加ExportParticleDataToBlueprint
  2. ExportParticleDataToBlueprint属性设置
    UE Niagara系统_第9张图片
  3. Actor中添加Niagara组件,并在BeginP中SetNiagaraVariable(Object)
    UE Niagara系统_第10张图片
  4. Implemented Interfaces添加NiagaraParticleCallbackHandler接口
  5. 实现ReceiveParticleData事件

案例

  • 烟花

UE Niagara系统_第11张图片

RiseSprite BombSprites

SpawnCount:1

LoopCountLimit:1

Lifetime:3

UniformSpriteSize:30

VelocityMode:InCone

VelocitySpeed:2500~3000

ConeAngle:[0,0,1]

Lifetime:0.5~1.0

UniforSpriteSize:5~10

VelocityMode:FromPoint

VelocitySpeed:2500~3000

Source: DeathEvent

ExecutionMode:Spawned

SpawnNumber:500

Receive Color:Apply

TailSprites TailRibbon

Lifetime:0.1~0.3

UniforSpriteSize:3~5

SpriteSizeMode:NonUniform

SpriteSize:[3,30]

NoiseStrength:5000

Source: LocationEvent

ExecutionMode:Spawned

SpawnNumber:30

Receive Velocity:-0.5~-0.1

Receive Color:Apply

Lifetime:0.1

RibbonWidth:10

NoiseStrength:300

Source: LocationEvent

ExecutionMode:Spawned

SpawnNumber:1

Receive Color:Apply

  • 集群

你可能感兴趣的:(UE,Niagara)