虚幻引擎5中的Chaos物理系统

介绍虚幻引擎5中的Chaos物理系统

Windows
MacOS
Linux

概述

Chaos物理系统虚幻引擎5 的轻量级物理模拟解决方案,是我们从头打造的系统,能够满足次世代游戏的需求。该系统主要包含以下功能:

  • 刚体动力学

  • 刚体动画节点和布料物理

  • 破坏

  • 布娃娃物理

  • 载具

  • 物理场

  • 流体模拟

  • 毛发模拟

Chaos物理系统取代了原有的物理系统,在性能方面进行了显著的提升。此外,Chaos还推出了一系列重要功能,例如:基于异步的物理模拟和网络同步、完备的破坏系统、以及物理场功能。

本文将介绍并对比Chaos和PhysX在主要功能上的不同。

刚体动力学

就刚体动力学而言,Chaos提供了与原有物理系统相同的功能,包括碰撞响应、物理约束、以及阻尼和摩擦。

此外,它还增加了一新些功能,包括尚处于试验阶段的异步物理更新。

刚体动画节点和物理动画

Chaos_Debug-Commands.png

Chaos提供了全新的 刚体动画节点(Rigid Body Animation Node,RBAN) 模拟系统,它对于原有系统进行了扩展,并且改善了工作流、执行效果和稳定性。

相似的工作流

Chaos RBAN沿用了之前的物理编辑器,假如你对之前的工作流很熟悉,你可以轻松掌握。此外,物理编辑器中的 模拟(Simulate)编辑器(Editor) 模式现在采用相同的解算器;在上一代中,两种模式会产生不同的结果。

更优秀的操控性和稳定性

现在你可以在物理编辑器中显式设置物理约束位置(数量和手柄(handle)),从而可以更好地控制模拟效果。此外,与之前的实现方案相比,Chaos RBAN能以更少的迭代次数提供更优秀的稳定性,并能为长距离链条提供更好的连接稳定性。

调试功能改良

此外,调试方面也有一些提升,例如更新了调试绘制模式和一些新的调试命令。

Chaos RBAN调试绘制命令

你可以使用以下控制台命令对Chaos RBAN进行调试:

命令

说明

p.Chaos.DebugDraw.Enabled 0/1

显示Chaos物理调试命令。

p.Chaos.Immphys.DebugDrawShapes 0/1

绘制正在模拟的Chaos解算器刚体形状。

p.Chaos.Immphys.DebugDrawJoints 0/1

绘制Chaos物理形体的节点。

p.Chaos.Immphys.DebugDrawParticles 0/1

绘制粒子变换。

布料物理

Chaos_Cloth_Debug-Commands.png

Chaos物理提供了布料模拟解算器,通过提高模拟精确度和性能,对原有系统进行了扩展。Chaos布料(Chaos Cloth) 能为模拟结果提供更多控制,并提供了一套调试工具,让用户更轻松地进行操作。

相对于原有系统,Chaos布料(Chaos Cloth) 采用了不同的实现方法,在设置和可用参数方面具有显著的不同。

更精确的模拟

Chaos的布料系统移除了布料网格体中的关于碰撞图元的硬性限制;在原系统中,规定最多为32个图元。这让用户能够确定兼顾质量和性能的最佳设置。

风力相关的物理响应也得到了显著提升,能够提供更加自然的模拟。风力模拟比原有模型更加精确,因为现在会在模拟中考虑布料网格体的受影响表面面积。借助这个模型,布料网格体能够持续响应周围场景中的风力。

用户拥有更大的控制力

通过在一个简易界面中公开布料参数,Chaos的布料系统允许用户对模拟结果进行更多控制。布料的逆止半径(Backstop Radius)现在更加直观,用户可以轻松编写网格体的逆止,防止布料网格体以及网格体碰撞之间发生裁剪。这就让美术把控更加容易。

动画驱动(Animation Drive)系统更加强大,比原有系统更容易设置。该系统可以让布料网格体变形,从而匹配其父骨骼的网格体。在这个系统中,数值会被标准化为0到1之间,控制更直观。系统还增加了一个阻尼算法,能减少动画布料和骨骼网格体之间的弹性。

Chaos布料参数现在会暴露给蓝图,从而在运行时对布料进行前所未有的控制。用户现在可以根据Gameplay来修改模拟参数,例如,潜入到水下时,让角色服饰作出不同反应。

调试功能改良

Chaos布料提供了比原有系统更好的调试工具。可视化工具和调试控制台命令让用户可以更轻松地进行调试,而迭代次数也得到了优化。用户现在可以显示当前激活的布料模拟、动力学和动力学粒子,甚至是模拟时间。

Chaos布料无法直接支持Apex布料。因此,在虚幻引擎4.25或更早版本中导入的布料资产会作为"贴图"导入UE5,需要调整才能使用。

Chaos布料调试绘制命令

以下控制台命令可以用于调试Chaos布料:

命令

说明

p.Chaos.DebugDraw.Enabled 0/1

显示Chaos物理调试命令。

p.ChaosCloth.DebugDrawWindForces 0/1

绘制Chaos布料的风力效果。

p.ChaosCloth.DebugDrawPhysMeshWired 0/1

绘制Chaos布料的线框网格体。

p.ChaosCloth.DebugDrawCollision 0/1

绘制Chaos布料的碰撞。

p.ChaosCloth.DebugDrawBounds 0/1

绘制Chaos布料的边界。

p.ChaosCloth.DebugDrawLongRangeConstraint 0/1

绘制Chaos布料的远距离约束。

Chaos破坏系统

Chaos破坏系统

Chaos破坏(Chaos Destruction) 系统是虚幻引擎5中的一个工具集,可用于实现电影级画质的实时破坏效果。除了炫目的视觉效果,该系统也在性能方面进行了优化,让美术师和设计师能够更好地控制内容创作。

前所未有的破裂效果控制

Chaos破坏系统大量使用了 几何体集合(Geometry Collections);这种资产基于一个或多个静态网格体生成(包括蓝图中嵌套的静态网格体)。这些几何体集合可以发生破裂,从而达到实时破坏效果。

该系统采用了非线性的工作流,对破裂的工作流实现了前所未有的控制。用户可以创建多个级别的破裂,也可以让几何体集合的某些部分选择性的破裂,这让美术把控更容易。用户还可以创建几何体群集(Geometry Cluster),实现相互连接的模块化结构。

物理模拟改良

Chaos破坏系统提供了多种新功能。用户可以更改几何体集合的碰撞设置,设置模拟中的物理表现和精确度。这就可以更好地控制精确度和性能之间的平衡。用户还可以定义每个群集的 破坏阈值(Damage Thresholds)

连接图(Connection Graphs) 可用于控制结构在受到破坏时的坍塌方式,模拟真实世界的结构完整性。Chaos破坏系统还提供了世界场景支持(World Support),允许几何体集合的某些部分被设置成 运动学(Kinematic),减少 锚点场(Anchor Fields) 的使用。

Chaos破坏系统还提供了 缓存系统(Cache System),能够追踪事件和变换。该系统能够捕捉逐帧变换和事件,减少了数据量,从而实现更高效的存储和播放功能。该系统支持在运行时流畅地播放复杂破坏效果,并能最大程度降低对性能影响。注意,缓存模拟仍然是可交互的,因为模拟的某些部分可能在交互时"激活"。

与其他引擎系统深度集成

Chaos破坏系统与虚幻引擎5中的Niagara粒子系统进行了深度集成。Niagara可以读取Chaos破坏系统的 分解事件(Break Events)碰撞事件(Collision Events),从而在运行时生成粒子或修改现有粒子系统。

此外,Chaos破坏系统还与

[物理场](GenerationalLeapInFidelity/Physics/PhysicsFields/PhysicsFieldsOverview)
系统集成,用户可以在运行时对指定空间中的Chaos物理模拟施加影响。物理场可以用多种方式来影响物理模拟,例如在刚体上施加力、打破几何体的群集、锚定或禁用破裂的刚体。

Chaos载具

Chaos载具 是虚幻引擎5的轻量级系统,用于实现载具的物理模拟。

相似的设置

Chaos载具采用了与原有载具系统相似的设置,方便熟悉原有工作流的用户轻松过渡到新系统。

引擎中的载具采用了一个骨骼网格体以及一个或多个车轮蓝图。在物理编辑器中,我们用一个物理资产来生成相应的碰撞几何体,并使用动画蓝图来自动生成车轮的转向和旋转动画。

最后,创建出一个包含骨骼网格体、动画蓝图和载具功能按钮的 轮式载具Pawn(Wheeled Vehicle Pawn) 蓝图。

关于如何创建Chaos载具的更多信息,请参阅Chaos载具文档。

更高的灵活性

Chaos载具对原有系统进行了多项改进,并提高了性能和灵活性。

Chaos载具不再限制每个载具可以模拟的车轮数量,用户能够更灵活地使用。与原有系统不同,现在可以向载具添加任意数量的车轮——从独轮车到8轮运输设备,均可实现。现在可以配置任意数量的前进和倒挡,并可以进行更多的自定义。

Chaos载具还提供了一些试验性功能,可以提供更加"傻瓜化"的模拟。这些功能包括直接控制单个Roll、Pitch和Yaw扭矩。

更加复杂的模拟

使用Chaos载具可以配置更加复杂的模拟。现在可添加任意数量的翼面,可用于在车身特定位置提供下压压力或升力。这些表面可以模拟载具扰流板,甚至飞机机翼或侧翼舵。每个控制表面都可以通过Roll、Pitch和Yaw进行操控。

当模拟正在运行时,可以完全关闭车轮摩擦和引擎模拟。用户还可以配置任意数量的推力,将推力应用在特定位置上来推动和驾驶载具。

更高的可靠性

Chaos载具提供了更加可靠的模拟结果。该系统支持虚幻引擎5中的

[](GenerationalLeapInFidelity/Physics/AsyncPhysics/AsyncTickPhysicsOverview)
模式,此模式提升了模拟的确定性,在每次运行模拟时都可以获得可预测的结果。此功能还可以作为联网物理的基础,因为它能让服务器和客户端以相同的速率更新物理,从而更轻松地向车辆物理添加重复元素。

物理场

物理场

物理场系统(Physics Field System) 提供了一个工具在运行时直接影响特定空间区域内的 Chaos物理 模拟效果。你可以对这些场进行配置,以多种方式来影响物理模拟,例如在刚体上施加力、打破几何体集的群集、锚定或禁用破裂的刚体。

此外,物理场系统还可以与其他引擎系统通信,例如Niagara和材质。这些系统可以通过内置函数对物理场进行求值,从而对物理场采样。

若要设置场,先创建 场系统组件(Field System Component) 蓝图,然后指定允许哪些系统查询你的场。你可以将场配置为 世界场(World Field),以允许 材质(Materials)Niagara系统(Niagara Systems) 对场进行采样。此外,你还可以将其配置为 Chaos场(Chaos Field),允许几何体集合和其他物理对象与其进行交互。

如需更多详细信息,请参阅物理场概述