Niagara官方示例笔记 - 盘点自带重要模块

  • Emitter State -life cycle生命周期控制

    • 发射器选择system, 所有发射器都在system的state里设置生命周期
    • 选择self, 发射器独立控制
  • 可以给发射器创建不同类型变量,使用set parameter模块计算

    • 系统自带一些默认属性如浮点变量Age(粒子年龄),particle position(粒子位置)等,参数面板右边上锁表示自带属性,数字显示引用次数
    • 按User , System, Emitter,Particle划分变量可见性级别
    • 只有User.parameters才能暴露给蓝图
  • uniform恒定值,random随机取值, curve按曲线取值

    • vector from float + float from curve - 高维降维, 用一维float曲线控制2D或3D数据
  • 变量计算节点:multiply, sin等
    在这里插入图片描述

  • Emitter update - spawn模块

    • spawn rate持续发射,
    • spawn burst爆炸式发射(瞬发, ribbon默认)
  • Particle spawn - initial particle模块

    • 控制初始粒子大小,颜色,生命周期等
  • Particle spawn - sephere location模块

    • 初始球形散开
    • +搜索,location下各种初始形状
  • Particle update - add velocity模块

    • 细节面板可以添加角速度rotate vector
  • Particle update - add velocity xx 模块

    • add velocity from clone,添加锥形速度
    • +搜索velocity,add velocity ifrom point, 从点给一个初速度
    • vortex velocity模块,漩涡力场
  • Particle update- gravity Force模块

    • 施加重力
    • 可以设置加速度,其实可以定义各个方向上的加速力
  • Emitter Properties: GPU/CPU粒子

    • GPU粒子必须开fixed bounds,边界设置不好会导致边缘粒子看不到效果

在这里插入图片描述

  • light render和ribbon render目前只能用cpu粒子

  • Determinism控制真随机/伪随机

  • Particle Update - Curl noise force模块

    • 随机噪声力场,可能是最常用和最好用的随机力场
  • Particle Update - Drag模块

    • 施加阻力,常常和 Curl noise force模块
  • Particle Update - Attraction Force模块

    • 粒子吸引力场,粒子按强度和半径向力场中心靠拢,给负值反向聚拢(向外喷发)
    • 可以动态改变力场中心位置实现粒子动态聚集效果
  • Particle Spawn/Update - Color模块

    • 粒子颜色,可以设置color from curve根据Age变化
  • Particle Spawn/Update - Size模块

    • scale粒子大小, 可以根据曲线设置
  • 粒子朝向中心

    • 新建一个vector变量FacingCenter,为particle position(粒子位置) - simulation position(发射器中心)

    • spirate render的face mode设置为custom

    • Set SpirateFacing变量(自带)vector rotate to FacingCenter

在这里插入图片描述

  • mesh rotate控制

    • 方式1 - 直接设置旋转及速度(没有力参与,无需解算器更cheap), Particle spawn - initial mesh orientation, Particle update - update mesh orientation
    • 方式2 - 施加力或力场控制旋转(与mesh的质量体积有关,需要解算器),Particle spawn - caculate size and rotational by mass计算mesh初始量, Particle update - mesh rotation force模块施加旋转力场
  • Particle Spawn - spawn beam

    • Ribboon render生成带状粒子(根据linkOrder连成带状的粒子群,ribbon render目前只支持cpu)
    • 系统自动添加一个对应的beam setup,用于设置ribbon的初始起点位置和终点位置,朝向等
    • 系统自动添加一个对应spawn burst控制模拟beam的粒子个数,越多越好看,性能开销也越大
  • Particle Update - beam width模块

    • 设置ribbon宽度

    • 根据linkOrder设置宽度,头粗尾细效果

在这里插入图片描述

  • Particle Update - update beam 模块

    • 每帧更新beam,动态ribbon必备,让beam实时跟着发射位置
  • Ribbon带状颜色渐变:color from curve的跟随变量(CurveIndex)不能是NormalizedAge(默认),应改为RibbonLinkOrder

  • 连续生成多个Ribbon

    • Emitter设置生命周期循环,控制发射器循环时间和粒子的生命周期,保证粒子时间比循环时间长

    • 设置beam setup end的Evaluation type为every frame

在这里插入图片描述

  • 循环时间越短发射越快,循环时间足够短时模拟同时发射多个ribbon(可以避免做多个ribbon render)

  • Particle Update - rotate around point模块

    • 绕中心点旋转,核心参数rotation center(常用simulationposition 或 Particle.position)
      在这里插入图片描述

    • 和vortex velocity效果类似

  • Particle Update - particle state模块

    • kill到达生命周期的粒子
  • 一个发射器可以同时渲染多个render

    • 如spirate+mesh+ribbon, 通过将自定义变量和render的自带属性变量bind, set parameter设置自定义变量从而调整和覆盖各自render的属性

在这里插入图片描述

  • 多render的可视性

    • 每个render的render visibility(render细节面板)属性分组(如0-3),通过set parameter模块设置属性Particle.VisibilityTag控制可见性
    • 如随机设置0-3则4个render随机显示,分组时全部设0此变量也设0则同时显示,如过link user变量则可以通过蓝图设置
  • 粒子event

    • **只能是cpu粒子,需要勾选Emitter properties中的ID(**为粒子生成ID便于通信)
    • 创建自带事件类型: gen death event/gen location event/gen collision event
    • 接收事件:Event Handler - handler properties选择事件名和事件处理逻辑Excution Mode(固定几种类型,如spawn rate接收事件后生成粒子), receive death event/ receive location event/ receive collision event接收事件。
  • 粒子collision

    • Particle Update - Collsion模块,cpu和gpu都支持,但是cpu开销更大,gpu碰撞更常用,但是如果要用到事件(如碰撞事件产生后生成新粒子),必须cpu做碰撞(事件只支持cpu)

    • 碰撞模块三类核心参数: 半径Radius,弹力Bounce,摩擦力Friction

在这里插入图片描述

  • CPU碰撞类型只有光影追踪(自动计算碰撞)和plane(指定一个碰撞平面),GPU粒子会多两种类型及相关参数:distance fields(距离场)/depth(场景深度)

  • 碰撞bool变量Particles.HasCollided,用于碰撞后改属性或kill

在这里插入图片描述

  • 采样static mesh作为发射粒子(跟随场景mesh动态变化效果):

    • Particle spawn - sample static mesh模块指定采样对象(可以通过user变量暴露给蓝图)

    • Particle spawn - static mesh location模块设置法线或位置信息为采样mesh的法线和位置(SampleStaticMesh.meshNormal/SampleStaticMesh.meshLocation)

    • 实现从粒子生成位置到采样mesh的过渡:自定义vector变量先记录粒子初始位置(要在static mesh location之上,Niagara模板从上往下计算,如果先采样位置则初始位置已经更改),Particle Update时设置Particles.Position,从初始位置lerp到mesh position,alpha为sine是为了循环往复

在这里插入图片描述

  • texture sample(采样贴图实现粒子效果)

    • Emitter update - spawn particle in grid模块设置grid大小

    • Particle spawn - grid location模块设置grid位置(一般就是Particles.Position)

    • Particle spawn - sample texture模块指定采样对象,并且设置贴图uv为GridUV

    • Particle spawn - initial particles模块设置color为贴图颜色(SampleTexture.sampledColor), 并且设置position mode为unset, spirate size为1

    • 然后可以配合力场等其他模块做贴图动画效果(如noise力场模拟贴图消散效果)

    在这里插入图片描述

  • 单粒子触发播放声音,Particle update - play audio模块

    • 只支持cpu粒子,通过bool变量控制播放

    • 如死亡时播放可以link inverse bool- DataInstance.Alive ,播放位置为Particle.position

    • 又如碰撞时播放可以link bool - Particle.HasCollided变量

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ctrlturtle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值