物理子步

对物理子步的解释,及其使用时机的说明。

Windows
MacOS
Linux

使用物理 子步 可获取更加精准且稳定的物理模拟,但将造成性能的损失。最明显的改进涉及到布偶振动和其他复杂物理资源。

启用子步

项目设置(Project Setting) -> 物理(Physics) 标签下可开启子步:

SS_Enabled.png

此功能尚处于开发阶段,APEX销毁无法完美支持。移动设备目前也无法支持此功能。我们将持续对其进行开发,以便优化外观和使用感受。

属性

描述

设置子步

在当前项目中启用或停用子步。

子步异步

是否对异步物理模拟设置子步。

最大子步差量时间

一个子步所允许花费的最长时间(以秒计)。因此如一个整步花费时间为0.05秒,同时 最大子步差量时间 被设为0.025,则整步将被分为两个子步。整步若花费较长时间(如2秒整),则将基于 最大子步 的数值对步进行均分,而不是直接分为 80 (2.0/0.025=80) 个子步。值得注意的是 最大物理差量时间 会对物理步长所花费的时间进行限制。

最大子步

一个整步可划分出的最大子步数。

技术细节

虚幻引擎使用的可变帧率。可变帧率有利于硬件的可延展性,但因物理引擎适用的是小幅固定时间步,其将会此类引擎造成一定困难。设置子步会获取总帧时并将其划分为子步。然后会逐帧多次tick物理模拟。采用的子步数量取决于最大子步差量时间所设置的最小值。最大子步时间越小,模拟越稳定,但CPU的开销将升高。

设置子步对玩家为隐藏状态,意味着须内插或维持对物理引擎的部分调用。举例而言,如用户在单帧中对Actor施加一个力,同时对帧内部设置N次子步,则需要连续施加N次模拟步的力量来达到相同的加速度。同理,如用户设置Actor的目标位置,则须将目标位置内插到多个分步上,以维持理想速度。UE4已将以上细节进行内部处理,但必需的信息记录将消耗部分CPU和内存。

需要注意的另一个技术细节是子步设置过程中碰撞回调行为的方式。UE4以一个单独的物理线程执行物理子步,使游戏线程能持续工作。为获得最佳性能,我们将延迟碰撞回调,直到完成最后一个子步。这意味着一个碰撞可能会获得多个回调。例如A和B发生碰撞并弹开,则可能会获得A和B重叠的回调,以及同一帧中A和B不再重叠的回调。所有回调会被内部推入到一个队列中,因此将会在处理来自子步2的回调之前先处理来自子步1的回调。

使用

设置子步将极大提高复杂物理资源的质量(如布偶所用的资源)。实际运用中应根据游戏的实际所需,在提高质量和CPU消耗进行权衡。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback