虚幻引擎4利用粒子系统实现物体轨迹描绘2- 消除轨迹

这篇具有很好参考价值的文章主要介绍了虚幻引擎4利用粒子系统实现物体轨迹描绘2- 消除轨迹。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

之前已经实现了UE4中跟随物体利用粒子系统产生轨迹的效果,文章链接如下:

虚幻引擎4利用粒子系统实现物体轨迹描绘_ADi_hhh的博客-CSDN博客

但是上篇文章还留下了两个问题

  1. 轨迹如何清除,并随时启用生成?
  2. 轨迹积累后,粒子的产生对系统的内存等是否带来压力,导致系统运行越来越吃力。

粒子频繁产生对系统运行的影响

针对这个问题,我进行了测试,在物体运动时一直产生轨迹,到后期发现物体的速度变化降低了,粒子的积累对系统运行有着显著的影响。

为了降低计算压力,我在粒子发射器之前加了一个延迟,降低粒子产生的频率,从而尽可能地降低粒子的产生,同时又能够看清楚轨迹。

虚幻引擎4利用粒子系统实现物体轨迹描绘2- 消除轨迹

轨迹的清除

由于“在位置处生成发射器”是发射粒子后就遗忘的效果,因此这就给消除已经生成的粒子带来了困难。

虚幻引擎4利用粒子系统实现物体轨迹描绘2- 消除轨迹)

但我们可以很自然地想到,如果每次发射粒子,我都把它放入到数组或容器中,然后想要删除轨迹(粒子),只要按照索引,依次消除就可以了。

是这样的,但由于不熟悉其中的各种api,我还是浪费了很多时间。

首先建立“粒子系统组件”类型的数组,命名为“已经发射的粒子”,在每次发射器发射粒子时,就利用“array add”的节点,将该粒子的对象引用加入到数组中。

虚幻引擎4利用粒子系统实现物体轨迹描绘2- 消除轨迹)

当Q键按下时,只要“轨迹粒子索引”的值+1的结果不大于当前数组的长度,就说明当前的粒子还没有消除完,因此需要执行如下循环:

  • 从数组中取出当前“轨迹粒子索引”对应的粒子组件对象引用并销毁;
  • “轨迹粒子索引+1”
  • “轨迹粒子索引+1”的值是否大于数组长度,如果大于,说明目前所有的粒子都已经消除了,执行如下:
    • 重置“轨迹粒子索引”为0;
    • 重置“已经发射的粒子”为空;
  • 如果“轨迹粒子索引+1”的值是否大于数组长度,如果不大于,继续取出对应粒子索引的对象并销毁

虚幻引擎4利用粒子系统实现物体轨迹描绘2- 消除轨迹

Note: 一定要注意索引不要超出界限了,因为索引从0开始,但是数组长度不是,超出界限,系统可能直接崩溃,只能重启,因此在编写这个蓝图之后,一定先保存再运行,不然可能系统又要重新搭建了。别问我为什么知道

搭建完成后,系统运行的情况就是这样的:
虚幻引擎4利用粒子系统实现物体轨迹描绘2- 消除轨迹

小结

本文主要承接上文利用粒子系统实现物体轨迹描绘的文章,讲述如何消除之前的轨迹。

如果您觉得我写的不错,麻烦给我一个免费的赞!如果内容中有错误,也欢迎向我反馈。文章来源地址https://www.toymoban.com/news/detail-471663.html

到了这里,关于虚幻引擎4利用粒子系统实现物体轨迹描绘2- 消除轨迹的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【物理】模拟粒子在电场和磁场中的轨迹研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 模拟粒

    2024年02月16日
    浏览(28)
  • 【物理】带电粒子在磁场和电场中移动的 3D 轨迹研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 带电粒

    2024年02月14日
    浏览(34)
  • [虚幻引擎][UE5]获取当前系统的时间

    效果: 效果: 缺点:没有办法都是两位

    2024年02月11日
    浏览(36)
  • 【虚幻引擎】UE4 FTabmanager实现多窗口

    我们先看源码的实现方式:FTabmanager类实现了创建窗口的不同方法 NewLayout:创建新的布局方式  RegisterTabSpawner:注册在模块启动时的函数,这个就是创建了一个窗口,窗口所放置的内容  RestoreFrom:从窗口中显示 调用独立窗口需要在模块启动的时候调用FGlobalTabmanager::Get()的Re

    2024年02月10日
    浏览(57)
  • 游戏引擎的cpu/gpu粒子系统设计思想

    网上有很多篇粒子系统源码解析,但是只是简单的接口罗列,没有从最原理出发去讲清楚粒子系统的来龙去脉,我将从粒子系统的本质去讲清楚它的设计理念,当理解了它的理念以后,很多粒子遇到的问题就会迎刃解决了,这篇文章主讲粒子的实现和一些框架级的优化方式,

    2024年02月12日
    浏览(43)
  • 全景描绘云原生技术图谱,首个《云原生应用引擎技术发展白皮书》发布

    5月1 2 日,由 神州数码主办、北京经开区国家信创园 、 中关村云计算产业联盟协办 的2 023 通明湖论坛-云原生分论坛在京召开 。论坛期间,神州数码联合北京通明湖信息技术应用创新中心、中国信通院和通明智云正式发布了《云原生应用引擎技术发展白皮书》(以下简称:

    2024年02月05日
    浏览(55)
  • C#实现物体尺寸测量(利用坐标转换)

    由于需要实现一个物体的测量,但是已有QT程序,最后的整体功能需要在C#集成实现。 首先有两个方案:(1)利用已有的QT程序以及界面,直接在C#中调用QT,或者C++程序,但是经过尝试,发现两者之间进行调用不是那么的简单,涉及到许多变量定义的不用以及数据结构的不同

    2024年02月09日
    浏览(34)
  • 【虚幻引擎UE】UE5 实现相机录制视频并导出(C++基于OpenCV生成视频合成exe)

    说明: 该功能暂不支持导出声音。 由于OpenCV3和UE5不太兼容,因此考虑制作外部exe实现视频合成。 1、实现 SavePicToFile 导出图片蓝图函数 .cpp文件

    2024年02月15日
    浏览(85)
  • 【实战篇:粘连物体分割——利用几何分割实现瓶盖分割检测】

        在去年学习opencv的过程当中,做过一张瓶盖分割的练习。目的就是为了分割出每个瓶盖,当时想着,除了霍夫圆检测思路之外,能不能根据相连瓶盖的特征进行分割呢?于是便想到了根据角点检测其相连位置,然后在相连位置之间画一根线进行切除。是不是想法很单纯

    2024年02月09日
    浏览(45)
  • 第五节 利用Ogre 2.3实现雨,雪,爆炸,飞机喷气尾焰等粒子效果

    本节主要学习如何使用 Ogre2.3 加载粒子效果。为了学习方便,直接将官方粒子模块 Sample_ParticleFX 单独拿出来编译,学习如何实现粒子效果。 如果参考官方示例建议用最新版的 Ogre 2.3.1 。否则找不到有粒子效果的示例。不要用官网 Ogre2.3 script 脚本编译源码! Ogre 1.x 中关于实现

    2024年02月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包