Niagara内容示例 2.4 Location Events

在这里插入图片描述

粒子效果

从中心点向上发射粒子,粒子的运动有向上的初速度以及向下的重力,同时粒子运动伴随着拖尾效果和以该运动中的粒子为中心的粒子迸发效果,像是一颗燃烧着的带着尾巴的流星划过。

Niagara蓝图部分

本例的核心——Niagara中的事件系统(Events)。虽说是目前仅支持CPU粒子,但是以Niagara发展的趋势来看,可见的将来GPU中的替代方案也很快会被完善起来。回到Events这里,事件需要有发出者和接收者(即文档中的Event Generators和Event Receivers)。简单来讲,就是接收者将自己注册到相应的事件中,当发出者发出信息后,事件集中的这些事件对其做出适当的响应。

在这里插入图片描述

效果实现分析

本身的这个粒子喷泉的效果还是比较简单的,只需要一个有向上分量的初速度(Add Velocity in Cone),以及重力即可。(写在负责生成事件的Emitter里)

在这里插入图片描述

比较关键的是下面的一个功能模块——Generate Location Event,它会生成一个位置事件发送到接收方。EventCondition就是字面意思,即生不成成这个事件,是一个布尔量,当然也可以动态得去调控(比如我写个公式进去,当然暂时还没必要搞得复杂);Event Send Rate代表每秒发射(Event)的次数,越高的话,接收方获得的数据就越频繁,当然效果就会越精确,越低的话,效果就会相对而言没有那么精确,这二者之间的平衡与调控,就是经验和创造力的体现了。

在这里插入图片描述

此外有一个点还需要注意,Generate Location Event需要去读Particle.ID这个属性,需要在Emitter Properties中手动打开。

在这里插入图片描述

来到接收方,注意这里有两个接收方Emitter,分别对应了拖尾和子粒子。事件接收方粒子发射器的构建方法是:添加Event Handler(事件处理器),其自带一个Event Handler Properties用来调控事件接收器基本属性,如监控哪一个发射器中的哪一个事件、生成具体多少的粒子(代替了之前的Spawn Rate或者是Burst Spawn)等等。此外还需要添加Receive Location Event来具体接受响应的事件并作简单处理(拿到位置、速度等等属性),如是否继承传来事件的粒子的速度等等。

在这里插入图片描述

当然通过事件拿到的属性还是相对有限的,如图

在这里插入图片描述

总结

事件系统在逻辑编程中也是重要的一部分,是属于性能优化的重要部分,它可以系统免于去做每帧的检测(Unity的Update,UE4的Tick)。这里CPU无法被GPU取代的原因我可以大概分析一下,就是即便是在CPU粒子中,EmitterUpdate的工作依旧是CPU在做,通过事件而做的spawn即是代替了这一部分的工作,而在GPU中是没有办法去监听GPU粒子的事件的(除非是为它单独定制一块寄存器?),因而这个部分的粒子只能采用CPU的。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Claude的羽毛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值