UE5 Niagara | 官方小案例练习1.4 控制粒子的朝向
实现Sprite朝向
创建粒子系统
创建粒子系统 eif_1_4

**发射器更新(Emitter Update)**模块 生成速率(SpawnRate)

调整一个数值—-表示每秒生成 30个粒子
创建SineWave变量
发射器属性(Emitter Attributes)增加一个 float类型的变量

命名SineWabe

选择这个变量 拖到粒子发射器更新(Emitter Update)模块

理解:
创建这个数值是想控制每一个粒子的旋转角度,
发射器更新(Emitter Update)是在发射器层面计算的,而不是按粒子计算的,所以每一个引用它的粒子都会得到相同的值,在这种情况下,它们可以同时旋转
这个变量拖到发射器更新阶段,就是每一帧都可以修改这个数值
设置SineWave数值类型是 浮点数范围(Clamp Float)

限制计算 范围(0-1)

Flaot 设置 Sine输入

设置 标准化角度(Normalized Angle)的值类型为浮点数相乘(Multiply Float)

A设置绑定粒子的生命周期Age

设置B 0. 25 乘粒子的生命周期
初始化粒子
设置粒子的存活时间(Lifetime) 颜色 粒子的大小

需要注意的是随机独立通道(Random Individual Channels)
扩展
随机独立通道(Random Individual Channels)
创建球体发射器
在 粒子生成(Particles Spawn) 部分的添加 球体位置(Sphere Location)模块

效果

设置发射器的半径(SphereRadius)

点击上面的参数小按钮,显示出所有的

临时阶段(Stage Transients) 增加一个 变量 设置成向量类型

命名—FacingCenter

注意
粒子属性(Particle Attributes)
写在粒子阶段的属性,可以在粒子阶段读取。
阶段临时(Stage Transients)
临时变量可以写到任何模块,也可以从任何模块读取。临时变量不会在帧与帧之间或阶段之间持久化,例如发射器到粒子,或生成到更新。
把这个变量拖到粒子更新(Particles Update)

设置这个变量的类型 向量减法(Subtract Vector)—表示俩个向量减

A 点设置粒子的现在位置,——-注意选择下面这个,上面那个是初始位置。

B 点设置 模拟位置(Simulation Position)

扩展模拟位置(Simulation Position)
根据发射器上的 局部空间(Local Space) 标志,返回 Engine.Owner.Position 或本地(0,0,0)

粒子属性中增加一个 ——变量 ——向量(Vector)类型

命名

拖到粒子更新(Particles Update)

设置 这个变量类型为旋转向量(RotateVector)

把控制旋转的VectorToRotate 变量设置为FacingCenter变量(一开始创建的)

变成这样

设置 Yaw 轴 Pitch 轴 Roll旋转 的值 60.
时间增量(Delta Time) 的值 设置成粒子的 年龄(Age)
再次SpiteFacing变量拖入粒子更新模块

设置SpriteFacing 的类型 向量插值(Lerp Vector)
表示俩个位置的数值插值计算
A点 设置 FacingCenter B点设置 SpriteFacing Alpha 设置 Sinewave

Particles.SpriteFacing 是控制粒子面对那个方向的变量 ,这一步操作的是,控制粒子不断的旋转向量和球体发射器中心之间的向量进行混合,
控制粒子的旋转轴
粒子更新阶段(Particle Update) 增加 漩涡力(VortexVelocity)

效果

设置 漩涡力(VortexVelocity)
设置 速度量(Velocity Amount) 的随机值

设置 最小值 最大值

设置 漩涡轴(Vortex Axis) 的值类型为 向量插值(Lerp Vector)。

设置 漩涡轴(Vortex Axis) 的 A 向量(A Vector) 的值为 随机向量(Random Vector)。
B点也设置 随机向量(Random Vector)

注意:使用的是点向量 不是上面的 RabdomRange Vector
设置 B点的Alpha设置成粒子的(Normalized Age) 标准化年龄

效果

设置粒子的大小优化
在粒子粒子更新(Particles Update) 增加一个 缩放精灵大小(Scale Sprite Size)

编辑缩放大小数值 为 float类型

这个是转换成单变量——在设置成功曲线

根据个人设置数值

效果
从小变大

设置粒子的朝向模式
选择渲染器(Sprite Randerer) 然后设置面向模式(Facing Mode) 为自定义面向向量(Custom Facing Vector)

效果

注意:
这样设置后,精灵广告牌(Sprite Billboard)会面向 Particles.SpriteFacing 向量属性,如果没有这个属性,则会倒退为 FaceCamera 模式.
FaceCamera 模式: 精灵广告牌(Sprite Billboard)原点会一直"看着"摄像头原点,尝试把它的向上轴(up axis)和摄像头保持一致。
在设置一些渲染组件下的 排列模式 排序模式(Sorting Mode) 为 视距(View Distance)

这会给渲染设置优先条件:根据到摄像头原点的距离排序
绑定
Particles.SpriteFacing 并不是唯一一个有特殊的意义、 由模拟自动处理的渲染器绑定(Renderer Binding)。点击一个渲染器,本例中是堆栈底部的 精灵渲染器(Sprite Renderer),然后向下滚动到 Bindings(绑定)

你会看到一个粒子属性的列表,这些属性对引用它们的渲染器有特殊意义。如果需要的话,每个属性都可以用其他属性覆盖。
完成

总结
开始创建SineWave变量是控制每个一个粒子的旋转角度的 ,设置成Sine输入类型
Sine 曲线是(-1 到1 )的范围,所以要限制最大值和最小值(0-1)范围

公式y = sine(x) 这里的X 是由粒子的生命周期Age乘一个数得到了。

使用材质节点模拟了一下效果

2. 变量 FacingCenter 是得到每一个粒子的向量,使用粒子的位置(Position)减去模拟位置(Simulation Position)

模拟位置就是粒子局部空间 (0,0,0)的位置

设置 FacingCenter B点设置 SpriteFacing Alpha 设置 Sinewave
Particles.SpriteFacing 是控制粒子面对那个方向的变量 , 这一步操作的是,控制粒子不断的旋转向量和球体发射器中心之间的向量进行混合,
使用SineWave 进行混合,就是曲线混合方法
资料
https://www.cyanhall.com/cn/tutorial/4.niagara-sprite-facing/