UE4 Niagara粒子系统基础笔记

目录

Niagara基础概念

Niagara官方建议

Niagara堆栈面板

Niagara渲染模式&材质

Niagara和蓝图

Niagara常用模块

Niagara常用技巧

Niagara ModuleScript


Niagara基础概念

  • 插件启用NiagaraNiagara Extras

  • 创建粒子发射器Niagara Emitter 粒子管理系统Niagara System

    • Fx - Niagara Emitter

    • 右键Emitter - Create Niagara System

    • 一个System 可以包含多个 Emitter,用于组合粒子效果

      UE4 Niagara粒子系统基础笔记_第1张图片

       

  • Niagara VFX系统共有四大核心组件

    • 系统:Niagara系统包含多个发射器,结合后可产生一种效果。例如制作烟花效果,可能需要多次爆发。为此需创建多个发射器,并放置在名为Firework的Niagara系统中

    • 发射器:Niagara发射器包含模块。其用途单一,但可重复使用。Niagara发射器的一大独特之处在于,可使用模块堆栈创建模拟,并在同一发射器中以多种方式进行渲染。继续以烟花效果为例,可创建一个发射器,其中包含用于火花的sprite渲染器,和用于火花之后流光效果的条带渲染器

    • 模块:Niagara模块是Niagara VFX的基础层级。模块将与一般数据通信、封装行为,与其他模块堆栈,并写入函数。 使用高级着色语言(HLSL)编译模块,但可用节点在图表中进行可视化编译

    • 参数:Niagara模拟中的数据的抽象表现。共有四种参数:

      • 基元(Primitive):此类参数定义不同精度和通道宽度的数值数据。

      • 枚举(Enum):此类参数定义一组固定的指定值,并取其中一个指定值

      • 结构体(Struct):此类参数定义一组基元和列举类型的组合。

      • 数据接口(Data Interfaces):此类参数定义从外部数据源中提供数据的函数。此可为UE4其他部分中的数据,或外部应用程序中的数据

  • Niagara工作流程

    1. 创建发射器:将模块放入堆栈,以便定义外观效果以及要采取的操作等。每个模块都有自己的分组,五大主要分组:

      • 发射器生成(Emitter Spawn):放置的模块定义发射器首次生成时的效果

      • 发射器更新(Emitter Update):放置的模块随时间持续影响发射器

      • 粒子生成(Particle Spawn):放置的模块定义发射器中生成粒子时的效果

      • 粒子更新(Particle Update):放置的模块用于随时间持续影响粒子

      • 事件处理(Event Handlers):你可以在一个或多个用于定义特定数据的发射器中创建"生成"事件。然后你可以在其他发射器中创建监听事件,这些发射器会根据生成的事件触发特定行为(用于发射器通信)

        UE4 Niagara粒子系统基础笔记_第2张图片

         

    2. 创建系统:你可以将各个单独的发射器组成一个系统,从而合力表现整体视觉效果。 有些模块是特定于系统的;还可以利用Niagara编辑器的时间轴(Timeline)面板来管理系统中所包含的发射器的计时

    3. 创建模块(新建Niagara未提供的模块,可以复用的“粒子函数” --- ModuleScript)

      UE4 Niagara粒子系统基础笔记_第3张图片

       

Niagara官方建议

  • 尽量使用继承复用Niagara库中已有的发射器

  • 尽量避免创建模块,可以使用Niagara的动态输入避免新建模块

  • 使用Micro表达式适用于无需新模块的一次性功能

  • 使用事件进行粒子、发射器、系统间的通信

  • 使用数据接口访问任意外部数据:包括网格体数据、音频、外部DDC信息、代码对象和文本容器

  • 使用Houdini创建的数据导出成常见格式CSV,在UE4中可导入Niagara

 

Niagara堆栈面板

  • Emitter Selection面板详解

    UE4 Niagara粒子系统基础笔记_第4张图片

    •  

    • 不同的组会采用颜色编码

      • 橙色(Orange) 用于发射器级模块。 发射器设置(Emitter Settings)发射器属性 项目位于本组中。 发射器生成(Emitter Spawn):首帧中发生的情况。发射器更新(Emitter Update):发射器更新时,首帧后发生的情况

      • 绿色(Green)用于粒子级模块。粒子生成(Particle Spawn):创建粒子时发生的情况。 粒子更新(Particle Update):粒子生命周期内发生的情况

      • 红色(Red) 用于渲染级别。Niagara将模拟与渲染解耦。这意味着可一次性创建模拟行为,然后将多个渲染器指定到该模拟

      • 蓝色(Blue)用于粒子系统。 系统设置(System Settings): 此分组包括用户参数(User Parameters)和系统属性(System Properties)项目。系统生成(System Spawn):创建系统时发生的情况。 系统更新(System Update):系统生命周期内发生的情况

 

Niagara渲染模式&材质

  • 四种渲染模式:SpirateLightMeshRibbon

  • Facing Mode: Sprite通常Face Camera, Mesh通常Velocity

  • Spirate渲染:每个粒子为材质的2D贴图效果,最常用模式

    • Alignment:通常Velocity Aligned

    • Facing Mode: 通常Face Camera

  • Mesh渲染: 每个粒子为3D模型+材质效果

    • Facing Mode: 通常Velocity

    • Render添加mesh render, 附mesh + override材质

    • 相关模块

      • MeshOrientation(初始旋转)

      • MeshSizeScale(mesh缩放)

  • Ribbon渲染(由粒子组成的带状,用于做各种轨迹效果

    • Render添加Ribbon render,附材质

    • 相关模块

      • Beam Emitter Setup(带状产生的起始点,常提供给蓝图控制)

        • Beam start/end位置信息需要勾上世界绝对位置选项

      • Spawn Beam

      • Spawn Burst Instantaneous

        • Spawn Count:带状按粒子划分的段数,可以make new expresion直接输表达式计算,如:

          max(length(User.TargetPos-Engine.Owner.Position)/100, 10) //根据距离划分段数

      • Initialize Ribbon(Ribbon初始化参数)

      • update beam (解决快速触发时纽带问题)

  • 粒子材质基础操作

    • 材质基础设置

      • 搜索use : 勾选use with niagara spirates/mesh/ribbon

      • surface + Translucent + two sides + unlit

      • Render添加spirate/mesh/ribbon render, 附材质

    • Niagara动态输入属性给材质

      • Dynamic Parameter 可自定义4*16个属性

        • particle update中添加Dynamic Material Parameters指定粒子的属性

        • 材质中使用Dynamic Parameter输入给材质使用

      • 已绑定好的属性:ParticleColor ParticleSize 等

  • UV控制

    • render板块里为材质提供了两套uv(0/1), 可以在材质中独立计算

    • UVTiling Ditance控制材质贴图的重复度(贴图UV的拉伸)

    • subUV (材质贴图划分单张贴图为多张子贴图,粒子系统随机读取,常用于模拟碎片溅射)

      • Particle Spawn中添加:set particles.subImageIndex, 输入uniform float随机,

        如贴图划分16个,则随机范围0-15

      • render中设置SubUV: 如贴图划分16个,则x=4,y=4

  • 粒子的朝向问题

    • 通常蓝图里击中位置获取impact normal,作为user params传给Niagara (User.TargetNormal)

      • mesh粒子:设置Initial Mesh Orientation中的Orientation Vector 为User.TargetNormal

      • spirate粒子:设置Add Velocity in Cone中Cone Axis为User.TargetNormal

      • Coordinate Space都设置成World

 

Niagara和蓝图

  • Emitter Update中MaxLoopCount设置循环次数,设0无线循环

  • 在动画中应用:Add Notify - Play Niagara Particle Effect

    UE4 Niagara粒子系统基础笔记_第5张图片

     

  • 在Actor蓝图中应用:Niagara粒子系统(NS可以,NE不行)可以以组件形式添加到Actor

  • activate组件或deactivate

  • 在蓝图里设置粒子属性:

    • NS的Parameters的User中添加参数(可被蓝图修改的public参数),在NE面板link input参数

      UE4 Niagara粒子系统基础笔记_第6张图片

       

    • 蓝图中Set Niagara Variable

      UE4 Niagara粒子系统基础笔记_第7张图片

       

    • 蓝图中控制贴花材质(受击血液溅射等效果触发)

      • spawn decal at lcoation : 世界位置生成

      • spawn decal attached : 生成并attach到actor

        • 结合动态材质控制贴花时间和渐变

          UE4 Niagara粒子系统基础笔记_第8张图片

           

Niagara常用模块

  • Emitter spawn

    • Spawn Burst Instantaneous:发射器生成个数

  • particle spawn

    • Particle Initial :初始size(x,y), lifetime, position, color, mass等

    • Add Velocity From Point / In Cone : 点初始速度 或 锥形初速度

  • particle update

    • Cravity Force : 模拟重力

    • Drag : 添加阻力

    • Vector Noise Force : 随机扰乱速度

    • Set particle.Color/Size等 : 直接设置盘particle属性

 

Niagara常用技巧

  • Attribute Spreadsheet面板:capture查看每帧每个粒子的属性变化

  • 增加一个spirate render,专门增加一个debug材质

    • 在particle update中添加Dynamic Material Parameters指定粒子的属性

    • 材质中使用Dynamic Parameter + debugScalerValues:将属性值传入材质实时渲染显示

  • Niagara面板属性值设置可以make new expression输入表达式计算

  • 双击模块名进入模块蓝图,查看模板各输出的计算过程

     

Niagara ModuleScript

  • Niagara系统的可视化编程脚本,用于创建新模块

你可能感兴趣的:(UE,UE4,虚幻引擎,游戏开发,Niagara粒子特效)