欢迎光临散文网 会员登陆 & 注册

UE5 Niagara | 官方小案例练习1.4 控制粒子的朝向

2021-07-03 13:55 作者:那个人真狗  | 我要投稿

实现Sprite朝向

创建粒子系统

  • 创建粒子系统 eif_1_4

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

  • 调整一个数值—-表示每秒生成 30个粒子

创建SineWave变量

  • 发射器属性(Emitter Attributes)增加一个 float类型的变量

  • 命名SineWabe

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

理解:

  1. 创建这个数值是想控制每一个粒子的旋转角度,

  2. 发射器更新(Emitter Update)是在发射器层面计算的,而不是按粒子计算的,所以每一个引用它的粒子都会得到相同的值,在这种情况下,它们可以同时旋转

  3. 这个变量拖到发射器更新阶段,就是每一帧都可以修改这个数值

  • 设置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(绑定)

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

完成

总结

  1. 开始创建SineWave变量是控制每个一个粒子的旋转角度的 ,设置成Sine输入类型

    • Sine 曲线是(-1 到1 )的范围,所以要限制最大值和最小值(0-1)范围

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

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

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


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

  1. 设置  FacingCenter   B点设置 SpriteFacing   Alpha 设置  Sinewave

    Particles.SpriteFacing 是控制粒子面对那个方向的变量   , 这一步操作的是,控制粒子不断的旋转向量和球体发射器中心之间的向量进行混合,

  2. 使用SineWave 进行混合,就是曲线混合方法

资料

  • https://www.cyanhall.com/cn/tutorial/4.niagara-sprite-facing/


UE5 Niagara | 官方小案例练习1.4 控制粒子的朝向的评论 (共 条)

分享到微博请遵守国家法律