UE4中关于利用粒子系统做轨迹描绘导致系统流畅性下降的问题

news2024/11/15 13:48:04

UE4中关于利用粒子系统做轨迹描绘导致系统流畅性下降的问题

文章目录

  • UE4中关于利用粒子系统做轨迹描绘导致系统流畅性下降的问题
    • 前言
    • 假设及验证
      • 1. 过多的粒子发射器影响仿真系统
      • 2. 粒子数目太多,降低粒子发射频率,同时增大粒子显示范围
      • 3. 把信息输出到屏幕浪费了太多时间,导致系统流畅性变差
      • 4. 产生的粒子渲染使得系统压力越来越大,从而流畅性下降
    • 小结

前言

之前在利用粒子系统实现轨迹描绘的时候,曾提出了“粒子积累后,粒子的产生是否会对系统的内存带来压力,导致系统运行越来越吃力?”的问题,当时的解决办法只是简单地减少粒子产生的频率,从而降低系统运行压力。本文围绕该问题展开一系列关于利用粒子系统实现物体轨迹描绘的相关问题。

前面两篇文章的链接如下:

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

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

再次回顾该问题的原因是,在仿真中我使用了更多的粒子发射器来产生粒子,用以显示物体的轨迹。而我发现简单的延迟已经不能够满足我的要求–既能看清轨迹,又尽可能降低仿真系统的压力。因此,针对粒子系统的哪些东西影响了仿真系统的流畅性,提出了一些假设并进行了验证。

假设及验证

1. 过多的粒子发射器影响仿真系统

首先我们在粒子产生过程中也在不断地生成发射器,可能在ue中这是很愚蠢的做法。不过以我当时对虚幻引擎的了解,也只能采用这种方式产生粒子。那么自然而然我们也产生了很多”粒子发射器“,而这些粒子发射器在之后我们就不会用了,因此可能粒子发射器的数量太多了从而影响了仿真系统的流畅性。

粒子发射器的使用

验证:

因此,我在每个粒子产生后,经过一段时间就销毁对应粒子发射器,以期待降低粒子发射器对仿真系统流畅的影响。

主动销毁粒子发射器

但我们也应该注意到,本来粒子发射器就有”自动销毁“的设置。因此在我主动销毁粒子发射器后,系统的流畅性并没有显著的改变。

2. 粒子数目太多,降低粒子发射频率,同时增大粒子显示范围

显然,粒子随时间产生的越来越多,因此粒子数目一定是影响系统流畅的一个因素。但由于我希望看清楚轨迹,因此粒子数目在某种程度上是不能够过少的。但是如果我在降低粒子发射频率的同时增大粒子显示范围那?

恰好,粒子发射器可以设置粒子显示的范围,如下图所示。

验证:

增大延迟时间,同时增大”创建效果的范围“。

经过测试后,系统的流畅性有所提升,但是由于粒子数目减少,轨迹的显示效果并不佳,因此这也不是一个很好的方法。

3. 把信息输出到屏幕浪费了太多时间,导致系统流畅性变差

因为我在仿真中使用的py代码计算控制信息,并打印出来供我调试使用,但py的print是很浪费时间的。

因此可能是因为我在py端输出print,在ue端把信息输出到仿真过程中,浪费了时间,使得大量时间被用在这样的过程中,自然使得系统流畅性变差。

验证:

因此我尽可能地减少py端和ue端的信息输出,经过测试后,系统的流畅性有所提升,但提升不多。

4. 产生的粒子渲染使得系统压力越来越大,从而流畅性下降

因为我使用的是初学者内容中自带的几款粒子,如下图所示。

几款粒子

而这些粒子可能需要渲染,而不断地产生这样的粒子,从而导致系统性能下降。

验证:

经过不断修改粒子类型,发现,其中”P_Fire“的粒子严重影响系统的流畅性,可能系统需要针对该粒子消耗的资源比较多,而越来越多的该粒子产生,从而导致了系统的性能下降。同时发现”P_Fire“与其他的初学者粒子的信息也有所不同,可能这就是该粒子消耗资源比较多的原因。之后通过修改粒子类型,修改为我自己设计的简单粒子,系统的流畅性有着明显的提升。


fire粒子确实也比较逼真。
fire粒子

小结

本文通过几种假设再次解决了利用粒子系统做轨迹描绘导致系统流畅性下降的问题。不过还是能够说明粒子系统做轨迹描绘并不是虚幻引擎中的最佳选择,希望以后随着深入的了解能够实现更简单高效的方法。

注:本文中所说的仿真系统流畅性下降是仿真系统处理信息和传输信息的速度下降。

如果您觉得我写的不错,麻烦给我一个免费的赞!如果内容中有错误,也欢迎向我反馈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/900203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

揭秘程序员的鄙视链,你在哪一层?看完我想哭

虽然不同的编程语言都有其优缺点,而且程序员之间的技能和能力更加重要,但是有些程序员可能会因为使用不同的编程语言而产生鄙视链。 以下是一些可能存在的不同编程语言程序员之间的鄙视链: 低级语言程序员鄙视高级语言程序员:使用…

Java教程:如何使用切面环绕方法对所有接口进行添加出入参日志保存功能

背景: ----在很多时候我们做开发时,往往只是提供一个对外接口来进行前后端调试,或第三方系统联调,并使用log进行日志打印,每当出现问题进行排查时,只需要查看服务器日志就可以定位到问题,从而解…

Three.js程序化3D城市建模【OpenStreetMap】

对于我在 Howest 的研究项目,我决定构建一个 3D 版本的 Lucas Bebber 的“交互式讲故事的动画地图路径”项目。 我将使用 OSM 中的矢量轮廓来挤出建筑物的形状并将它们添加到 3js 场景中,随后我将对其进行动画处理 推荐:用 NSDT编辑器 快速搭…

在抽象类中使用@Autowired注入其他bean

概述 今天写代码时,使用模板设计模式,需要在抽象类中使用Autowired注入指定的Bean,然后调用指定方法。 问题 发现Autowired注解有红色下划线 解决 其实没有什么关系,只要实现类继承这个抽象方法,然后加入IOC容器&am…

深入理解SSO原理,项目实践使用一个优秀开源单点登录项目(附源码)

深入理解SSO原理,项目实践使用一个优秀开源单点登录项目(附源码)。 一、简介 单点登录(Single Sign On),简称为 SSO。 它的解释是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 ❝ 所谓一次登录,处处登录。同样一处退出,处处退出。 ❞ 二…

内核配置知识

Linux内核配置系统的组成 Linux内核源码很多,有上千条配置选项,配置相当复杂。 为了更好选择自己想要的功能配置,linux内核源码组织了一个配置系统; 配置系统包括三部分: Makefile:负责整体的配置编译 …

人工智能在网络安全中的作用:当前的局限性和未来的可能性

人工智能 (AI) 激发了网络安全行业的想象力,有可能彻底改变安全和 IT 团队处理网络危机、漏洞和勒索软件攻击的方式。 然而,对人工智能的能力和局限性的现实理解至关重要,并且存在许多挑战阻碍人工智能对网络安全产生直接的变革性影响。 在…

Python学习 -- 高阶、闭包、回调、偏函数与装饰器探究

Python函数作为编程的核心,涵盖了众多令人兴奋的概念,如高阶函数、闭包、回调、偏函数和装饰器。本篇博客将深入研究这些概念,结合实际案例为你解析函数的精妙,以及如何巧妙地运用它们来构建更强大、灵活的程序。 高阶函数&#…

模型数据处理-数据放入 session和@ModelAttribute 实现 prepare 方法详细讲解

😀前言 本文详细讲解了模型数据处理-数据放入 session和ModelAttribute 实现 prepare 方法详细讲解 🏠个人主页:尘觉主页 🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家&#xff0c…

518. 零钱兑换 II

518. 零钱兑换 II 原题链接:完成情况:解题思路:参考代码: 原题链接: 518. 零钱兑换 II https://leetcode.cn/problems/coin-change-ii/description/ 完成情况: 解题思路: 参考代码&#xff1…

数据在内存中的存储(deeper)

数据在内存中的存储(deeper) 一.数据类型的详细介绍二.整形在内存中的存储三.浮点型在内存中的存储 一.数据类型的详细介绍 类型的意义: 使用这个类型开辟内存空间的大小(大小决定了使用范围)如何看待内存空间的视角…

GBU816-ASEMI新能源专用整流桥GBU816

编辑:ll GBU816-ASEMI新能源专用整流桥GBU816 型号:GBU816 品牌:ASEMI 封装:GBU-4 恢复时间:>50ns 正向电流:8A 反向耐压:1600V 芯片个数:4 引脚数量&#xff1…

关于spring嵌套事务,我发现网上好多热门文章持续性地以讹传讹

事情起因是,摸鱼的时候在某平台刷到一篇spring事务相关的博文,文章最后贴了一张图。里面关于嵌套事务的表述明显是错误的。 更奇怪的是,这张图有点印象。在必应搜索关键词PROPAGATION_NESTED出来的第一篇文章,里面就有这这部份内…

使用chatgpt将中文翻译成学术英语

使用chatgpt将中文翻译成学术英语 方式一 使用chatgpt翻译 你是一个英文学术论文写作专家,以下是一篇学术论文中的一段内容,请先对其进行翻译为英文,并将此部分润色以满足学术标准,提高语法、清晰度和整体可读性,给…

408反向改考自命题的211学校,计算机招生近500人!今年能捡到漏吗?

贵州大学(C) 考研难度(☆☆☆) 内容:23考情概况(拟录取和复试分析)、院校概况、23专业目录、23复试详情、各专业考情分析。 正文1498字,预计阅读:3分钟。 2023考情概况 贵州大学计算机相关各…

基于SpringCloud的会议室预约系统Java基于微服务的会议室报修系统【源码+lw】

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、微信小程序、Python、Android、大数据等,大家有这一块的问题可以一起交流! 💕&#x1f495…

.net通过S7.net读写西门子PLC中,字符串,bool,整数,小数及byte型

注:.net中通过TCP/IP方式通过S7.net.dll动态库,连接到西门子PLC,西门子程序中许勾选优化块,程序读取需要 db块号偏移量 一。使用VS项目,在项目中添加S7.net动态库 代码中引用S7.net动态库 using S7.Net; 实例化PLC服…

Linux网络编程:Socket套接字编程

文章目录: 一:定义和流程分析 1.定义 2.流程分析 3.网络字节序 二:相关函数 IP地址转换函数inet_pton inet_ntop(本地字节序 网络字节序) socket函数(创建一个套接字) bind函数(给socket绑定一个服务器地址结…

使用线性回归模型优化权重:探索数据拟合的基础

文章目录 前言一、示例代码二、示例代码解读1.线性回归模型2.MSE损失函数3.优化过程4.结果解读 总结 前言 在机器学习和数据科学中,线性回归是一种常见而重要的方法。本文将以一个简单的代码示例为基础,介绍线性回归的基本原理和应用。将使用Python和Nu…

安卓框架中的常见问题汇总

目录 1.安卓操作系统的组件结构图如下 2.问题汇总 1.安卓操作系统的组件结构图如下 2.问题汇总 问题1:安卓框架中的库和应用程序框架之间什么关系? 在安卓系统中,应用程序框架层(Application Framework)是核心应用程…