-
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变量
-