UE4中关于利用粒子系统做轨迹描绘导致系统流畅性下降的问题
文章目录
前言
之前在利用粒子系统实现轨迹描绘的时候,曾提出了"粒子积累后,粒子的产生是否会对系统的内存带来压力,导致系统运行越来越吃力?"的问题,当时的解决办法只是简单地减少粒子产生的频率,从而降低系统运行压力。本文围绕该问题展开一系列关于利用粒子系统实现物体轨迹描绘的相关问题。
前面两篇文章的链接如下:
虚幻引擎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粒子确实也比较逼真。
小结
本文通过几种假设再次解决了利用粒子系统做轨迹描绘导致系统流畅性下降的问题。不过还是能够说明粒子系统做轨迹描绘并不是虚幻引擎中的最佳选择,希望以后随着深入的了解能够实现更简单高效的方法。
注:本文中所说的仿真系统流畅性下降是仿真系统处理信息和传输信息的速度下降。
如果您觉得我写的不错,麻烦给我一个免费的赞!如果内容中有错误,也欢迎向我反馈。