目录
Niagara命名寓意(非官宣)
虚幻重塑Niagara(尼亚加拉)系统,目的是为了取Cascade之精华,去其糟粕。系统工作流串联自上而下,形态就像瀑布模式。
- 自然现象的启示:尼亚加拉瀑布位于加拿大和美国交接处,它是一种以其令人惊叹和强大的视觉效果而闻名的自然现象。通过将视觉效果系统命名为“尼亚加拉”,开发商可能有意唤起一种敬畏、力量和美感,让人想起瀑布的视觉效果。
- 流动性和动态性的内涵:“尼亚加拉”一词具有流动性、运动性和动态的内涵,这些都是计算机图形学中视觉效果的关键方面。视觉效果通常涉及创建动态和流体现象的模拟,如火灾、水、烟雾和爆炸。通过将他们的视觉效果系统命名为“尼亚加拉”,可能想传达这样一个系统的想法,即该系统能够以类似流体的行为产生视觉吸引力和动态效果。
核心组件
- 系统(System)
Niagara系统是一种容器,可以放入你要构建该效果的所有内容
- 发射器(Emitter)
发射器可用来在Niagara系统中生成粒子。发射器将控制粒子的生成、粒子在生命周期中的遭遇,以及粒子的外观和行为。发射器位于堆栈中。在该堆栈中有几个组,而在组中可以放置用于实现各个任务的模块。
- 发射器生成(Emitter Spawn)
- 发射器更新(Emitter Update)
- 粒子生成(Particle Spawn)
- 粒子更新(Particle Update)
- 事件处理器(Event Handler)
- 渲染(Render)
- 模块(Module)
模块是Niagara中效果的基础构建块。你可以将模块添加到组中来形成堆栈。模块按照自上而下的顺序处理。
可以将模块视为能够执行某些数学运算的容器,其实就是对传入的数据加工,在模块结束时将该数据重新写出。
模块是使用高级着色语言(HLSL)进行构建的,但是可以使用节点在图表中以可视方式进行构建。你可以创建函数(包括输入),或者写入到某个数值或参数贴图中。你甚至可以使用图表中的 CustomHLSL 节点,以内联方式编写HLSL代码。
双击Niagara中发射器内部的模块,以查看在模块内部发生的数学运算。例如,双击"添加速度(Add Velocity)"模块来查看其内部,则可以看到数据流。
- 参数(Parameter)
参数 在Niagara模拟中,是一种数据的抽象化。系统会将参数 类型 分配给参数,以定义参数所表示的数据。参数分为四种类型:
图元(Primitive) | 将定义具有各种精度和通道宽度的数值数据 |
枚举(Enum) | 将定义一组固定的指定值,并认定其中一个指定值 |
结构体(Struct) | 将定义一组合并的图元和枚举类型 |
数据接口(Data Interfaces) | 将定义能够从外部数据源提供数据的函数。此类参数可能是来自UE4其他部件的数据,或者是来自外部应用的数据 |
Niagara视觉特效处理工作流
- 创建系统
- 创建或添加发射器
- 创建或添加模块
Niagara事件
事件无法结合GPU模拟使用。事件仅能CPU模拟使用
要使用事件,必须在发射器的发射器属性(Emitter Properties)中启用"需要持久ID(Requires Persistent IDs)"。
事件会在粒子的整个生命周期内动态发生,生成事件的发射器需要在Particle Update组中添加事件(Event)的分段。
事件模组有多种类型:
- 位置(Location)
- 死亡(Death)
- 碰撞(Collison)
接收事件的发射器针对需要发射器予以响应的每个事件,添加 事件处理器属性(Event Handler Properties) 项和 接收事件(Receive Event) 模块。
Niagara通信
BlueprintToNiagara
- 创建User Parameters变量
- 模块的参数读取User Parameter变量
- 蓝图中通过NiagaraSystem对象调用SetNiagaraVariable或Set Parameter函数传递参数值
NiagaraToBlueprint
- Particle Update模组下添加ExportParticleDataToBlueprint
- ExportParticleDataToBlueprint属性设置
- Actor中添加Niagara组件,并在BeginP中SetNiagaraVariable(Object)
- Implemented Interfaces添加NiagaraParticleCallbackHandler接口
- 实现ReceiveParticleData事件
案例
- 烟花
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 |
- 集群