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

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.mzph.cn/news/44882.shtml

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

相关文章

matlab 点云最小二乘拟合空间直线(方法一)

目录 一、算法原理1、空间直线2、最小二乘法拟合二、代码实现三、结果展示四、可视化参考本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、空间直线 x

基于 Vercel TiDB Serverless 的 chatbot

作者: shiyuhang0 原文来源: https://tidb.net/blog/7b5fcdc9 # 前言 TiDB Serverless 去年就有和 Vercel 的集成了,同时还有一个 bookstore template 方便大家体验。但个人感觉 bookstore 不够炫酷,借 2023 TiDB hackthon 的…

07_缓存预热缓存雪崩缓存击穿缓存穿透

缓存预热&缓存雪崩&缓存击穿&缓存穿透 一、缓存预热 提前将数据从数据库同步到redis。 在程序启动的时候,直接将数据刷新到redis懒加载,用户访问的时候,第一次查询数据库,然后将数据写入redis 二、缓存雪崩 发生情…

【排排站:探索数据结构中的队列奇象】

本章重点 队列的概念及结构 队列的实现方式 链表方式实现栈接口 队列面试题 一、队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out) 入队列&#x…

“RFID与光伏板的完美融合:探索能源科技的新时代!“

随着科技的不断发展,人类创造出了许多令人惊叹的发明。其中,RFID(Radio Frequency Identification)技术的应用在各个领域日益广泛。最近的研究表明,将RFID技术应用于光伏板领域,不仅可以提高光伏板的效率&a…

JVM中分代回收机制

为什么要分为新生代和老年代? 分为新生代(Young Generation)和老年代(Old Generation)是为了更有效地管理和优化内存的使用。 新生代主要存放生命周期较短的对象,例如方法的局部变量、临时变量等。由于这…

【Golang系统开发】搜索引擎(2) 压缩词典

写在前面 这篇文章我们就给出一系列的数据结构,使得词典能达到越来越高的压缩比。当然,和倒排索引记录表的大小相比,词典只占据了非常小的空间。那么为什么要对词典进行压缩呢? 这是因为决定信息检索系统的查询响应时间的一个重…

李沐pytorch学习-卷积网络及其实现

一、卷积概述 1.1 基本定义 卷积计算过程如图1所示,即输入矩阵和核函数(filter)对应的位置相乘,然后相加得到输出对应位置的数。 图1. 卷积计算过程 该过程可以形象地从图2中展现。 图2. 二维卷积示意图 1.2 实现互相关运算的代…

Python tkinter Notebook标签添加关闭按钮元素,及左侧添加存储状态提示图标案例,类似Notepad++页面

效果图展示 粉色框是当前页面,橙色框是鼠标经过,红色框是按下按钮,灰色按钮是其他页面的效果; 存储标识可以用来识别页面是否存储:例如当前页面已经保存用蓝色,未保存用红色,其他页面已经保存用…

2023最新版本~KEIL5使用C++开发STM32

先看效果 开始教学 因为是第一次写这个配置教程 我会尽量详细些 打开一个Keil工程 移除本地core 添加在线core 第一次编译代码 不会有报错 修改main.c文件类型为C 点击魔术棒 把ARM编译器修改为V6 第二次编译会报错语法不兼容 我把汇编部分的这些代码做了…

基于IMX6ULLmini的linux裸机开发系列九:时钟控制模块

时钟控制模块 核心 4个层次配置芯片时钟 晶振时钟 PLL与PFD时钟 PLL选择时钟 根时钟/外设时钟 系统时钟来源 RTC时钟源:32.768KHz 系统时钟:24MHz,作为芯片的主晶振使用 PLL和PFD倍频时钟 7路锁相环电路(每个锁相环电路…

【IMX6ULL驱动开发学习】05.字符设备驱动开发模板(包括读写函数、poll机制、异步通知、定时器、中断、自动创建设备节点和环形缓冲区)

一、 字符设备驱动简介 字符设备是Linux驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如常见的点灯、按键、IIC、SPI、LCD 等等都是字符设备,这些设备的驱动就叫…

centos8 使用phpstudy安装tomcat部署web项目

系统配置 1、安装Tomcat 2、问题 正常安装完Tomcat应该有个配置选项,用来配置server.xml web.xml 还有映射webapps路径选项,但是我用的这个版本并没有。所以只能曲线救国。 3、解决 既然没有配置项,那就只能按最基本的方法配置&#xff0c…

关于Coursera网站视频无法观看

文章目录 前言找Ip 改hosts验证 前言 众所周知,coursera是很不错的学习网站,但由于国内访问限制,导致我的学习之路举步维艰 在科学上网彻底崩盘后,终于断了我的学习热情(真的很想骂人) 网站只能登入&#…

【无标题】WIN11下 ESP8266 _RTOS_SDK3.0以上开发环境搭建(记录及避坑必看)

前提参考文档 1、乐鑫官网: https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/index.html 官网上有如何搭建windows linux macos 三种环境,以及如何配置Eclipse去编译和开发项目(如何安装Eclipse环境&#xff0…

微人事 登录问题完善

重启服务端的时候,发现前端页面会操作不了,这样后端session会失效,我们就需要让页面重新跳转到登录页 springsecurity配置类后端配置 前端拦截器进行拦截跳转

【STM32RT-Thread零基础入门】 5. 线程创建应用(线程创建、删除、初始化、脱离、启动、睡眠)

硬件:STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 文章目录 前言一、线程管理接口介绍二、任务:使用多线程的方式同时实现led闪烁和按键控制喇叭(扫描法)1. RT-Thread相关接…

使用mysql:5.6和owncloud镜像构建个人网盘

一、拉取镜像 使用docker拉取mysql:5.6和owncloud的镜像 [rootexam ~]# docker pull mysql:5.6 [rootexam ~]# docker pull owncloud 运行镜像生成容器实例 [rootexam ~]# docker run -d --name mydb1 --env MYSQL_ROOT_PASSWORD123456 mysql:5.6 a184c65b73ff993cc5cf86f…

700. 二叉搜索树中的搜索

给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 示例 1: 输入:root [4,2,7,1,3], val 2 输出:[2,1,3]…

vue3生命周期

原理 vue3也提供了Composition API形式的生命周期钩子,与vue2.x中钩子对应关系如下: beforeCreate setup() created setup() beforeMountonBeforeMount mountedonMounted beforeUpdateonBeforeUpdate updat…