Evergine 中的 Jolt Physics
迈向工业仿真与 Physical AI 的第一步

Evergine 为构建工业 3D 应用而生:可在桌面、Web、移动端和 XR 上运行的数字孪生、培训工具和流程可视化。这些应用越来越多地被要求不仅要 展示 事物,还要 模拟 它们的行为。要在此领域发挥作用,物理效果必须真实可信。
正因如此,我们基于 Jolt Physics 重构了 Evergine 的物理系统,这是一款现代的多核物理引擎。它取代了多年来为我们提供良好支持的 Bullet,也是让 Evergine 成为更强大仿真平台路线图的第一步:接下来我们将引入 MuJoCo,使引擎在 Physical AI 领域具备更强的能力。
简而言之:
- 全新的引擎。 物理系统现在由 Jolt 驱动,并内置于
Evergine.Framework中。无需额外安装任何内容。 - 为当今硬件打造。 仿真可跨 CPU 核心分布,并可实现确定性。
- 响应更快的应用。 从桌面工具到使用 MRTK 构建的 XR 应用,拾取、碰撞和交互的响应速度都更快。
- 更多可仿真内容。 轮式和履带式车辆、新的角色控制器、布娃娃系统以及布料等软体。
- 新的物理示例。 仓库中的叉车,具有真实世界的尺寸和质量,可拾取和搬运托盘。
- 明确的方向。 Jolt 是基础,MuJoCo 将使引擎在物理 AI 方面更具能力。
本文内容
- 为什么仿真很重要
- 我们的发展方向
- 为什么选择 Jolt
- 更快、响应更快的应用
- 新的物理示例
- Evergine 物理系统的新特性
- 入门指南
- 从 Bullet 升级
- 下一步:MuJoCo 与物理 AI
- 试用并告诉我们您的想法
为什么仿真很重要
在工业领域,改变现实世界的代价高昂。重新布置仓库、调试新的生产线或培训操作员操作重型机器,都需要花费时间、金钱,有时还涉及安全问题。仿真让您可以在虚拟副本中先行尝试,在这里犯错无需成本:
- 物流与布局。 在移动任何货架之前,检查车辆是否能通过通道、货架能装载多高,或交通堵塞点在哪里。
- 虚拟调试。 在实际生产线建成之前,根据仿真的工厂来测试产线或机器人单元的逻辑。
- 操作员培训。 让人们练习操作叉车、起重机或反应如同真实设备的机器,而无需将任何人置于风险之中。
- 数字孪生。 超越仅镜像实时数据的模型:一个行为也如同真实资产的孪生体可以回答“如果……会怎样”的问题。
所有这些都依赖于同一件事:当物体被推动、举起、掉落或驱动时,它必须像在现实中那样做出反应。如果物理不可信,仿真对于决策就毫无用处。
我们的发展方向
Evergine 中更好的物理系统并非一次性功能。这是一个包含两个步骤的路线图,两者都指向同一个方向:物理 AI。
- Jolt Physics,现已可用。 一个快速稳定的实时引擎,适用于交互式工业场景,支持 Evergine 所支持的所有平台。
- MuJoCo,开发中。 机器人研究的参考引擎,用于仿真具有真实关节、执行器和接触的机器人。
物理 AI,即在物理世界中感知和行动的 AI,是当今最受需求的领域之一,它依赖仿真来训练和验证其系统。此路线图的每一步都让 Evergine 在这方面更具能力。
本文主要介绍 Jolt。我们将在最后回到 MuJoCo。
为什么选择 Jolt
Jolt Physics 是由 Jorrit Rouwe 创建并以宽松的 MIT 许可证发布的开源物理引擎。它从一开始就为现代多核 CPU 设计,拥有庞大且非常活跃的社区,并在要求严苛、备受瞩目的商业产品中证明了自己。其源代码和架构文档都是开放的,因此我们确切知道求解器的工作原理。
Bullet 多年来一直是 Evergine 的物理引擎,它仍然是一个受人尊敬的库。但其开发速度已经放缓(其最新版本 3.25 发布于 2022 年),而 Jolt 正在积极开发并持续增加功能。对我们来说,这次切换关乎未来:选择我们想要与之共同成长的引擎。
这对 Evergine 开发者来说意味着以下变化:
| Bullet(之前) | Jolt(现在) | |
|---|---|---|
| 包 | Evergine.Bullet,单独安装 | 内置于 Evergine.Framework |
| 多核 | 该步骤在单线程上运行 | 该步骤分布在多个 CPU 核心上 |
| 确定性 | 不保证 | 可选:同一场景每次运行结果一致 |
| 车辆 | 轮式车辆 | 轮式和履带式车辆,带发动机和变速箱 |
| 角色 | 运动学角色控制器 | 可攀爬台阶、搭乘移动平台并推动物体 |
| 软体 | 不可用 | 布料、充气软体和体积软体 |
| 开发状态 | 最新版本发布于 2022 年 | 积极开发中 |
更快、响应更迅速的应用
Evergine 中的物理不仅仅用于模拟机器。大多数交互式应用每一帧都依赖它,而用户往往毫无察觉:碰撞体告诉应用用户指向了什么,射线检测拾取物体,碰撞事件触发动作。XR 应用就是如此,手部和控制器按下按钮、抓取物体并在菜单中移动;桌面应用中用户选择和操作 3D 模型也是如此。
有了 Jolt,这一切都变得更快、响应更迅速。碰撞检测和射线检测耗时更短,接触更稳定,工作分布在多个 CPU 核心上,因此即使在包含大量物体的场景中,交互也能立即响应。使用 Evergine MRTK(我们的混合现实工具包)构建的应用直接受益:其按钮、滑块、菜单和手部交互都建立在碰撞体之上,现在反应更快、更流畅。
新的物理示例
为了在工业场景中展示新的物理效果,我们构建了一个新示例:仓库中的叉车从货架上叉起托盘并搬运。
新的物理示例,使用 Evergine 和 Jolt Physics 构建
该场景使用具有真实世界比例和质量的仿真就绪资产。叉车是一辆 3.4 吨的车辆,配有发动机和真实转向系统,其门架和货叉由电机驱动,托盘和箱子的重量与真实仓库中的一致。门口悬挂着一条软质条状门帘。所有物理效果均在 Evergine Studio 中设置,无需编写物理代码。

驾驶员视角。货架、托盘和箱子都是仿真的一部分
您可以**在浏览器中试用**,并浏览其 GitHub 上的源代码。3D 模型来自 NVIDIA SimReady,并采用 CC BY 4.0 许可协议。
Evergine 物理的新变化
除了引擎更换,物理 API 也经过重新设计,名称更简洁,并且可模拟的内容大大增加。以下是亮点。
车辆
车辆是一个带有控制器的单一刚体:发动机、变速箱、转向、制动以及每个车轮的悬架。这使其在高速下保持稳定,且模拟成本低。除了轮式车辆,现在还新增了履带式车辆控制器,适用于推土机和挖掘机等机械。
此版本新增的履带式车辆
角色与布娃娃
新的角色控制器可以走上台阶、沿斜坡移动、搭乘移动平台,并推动行走时碰到的物体。这正是工厂漫游或培训场景中人物所需的功能。
角色控制器攀爬台阶
布娃娃系统让仿真接管人物模型。角色可以在动画控制下行走,并随时倒下并做出物理反应,同时保持原有的动量。
人物从动画状态过渡到布娃娃状态
软体与布料
软体是全新的功能。布料可以垂坠和折叠,气球落地时会压扁,坐垫受压变形并回弹。任何网格都可以变成软体,其部分区域可以固定在原位或另一个物体上,例如旗杆上的横幅或新物理示例中的条状门帘。
布料、充气软体和体积软体
在 Studio 中设计
所有这些都可以在 Evergine Studio 的检视面板中设置,并通过 Play Mode 在不离开编辑器的情况下进行测试。在 Evergine Studio 的新功能 中了解更多信息。当某些行为不符合预期时,调试渲染会在场景中绘制物理形状和关节。
入门指南
物理系统位于 Evergine.Framework.Physics 命名空间中。在你的场景中注册一个 PhysicsManager,然后为任意实体添加刚体和碰撞体:
using Evergine.Framework.Physics;
public class MyScene : Scene
{
public override void RegisterManagers()
{
base.RegisterManagers();
// One physics world per scene
this.Managers.AddManager(new PhysicsManager());
}
protected override void CreateScene()
{
// A 20 kg box that falls and collides (add a mesh and a material to see it)
var box = new Entity("box")
.AddComponent(new Transform3D() { Position = new Vector3(0f, 3f, 0f) })
.AddComponent(new RigidBody() { Mass = 20f })
.AddComponent(new BoxCollider());
this.Managers.EntityManager.Add(box);
}
}
Evergine 文档 的物理部分通过视频和示例详细介绍了每个组件。
从 Bullet 升级
如果你的项目使用了之前的物理系统,则需要迁移。不再需要 Evergine.Bullet 包,并且每个组件都有了新名称:RigidBody3D 现在是 RigidBody,BoxCollider3D 现在是 BoxCollider,HingeJoint3D 现在是 HingeConstraint,依此类推。
为了完成机械性的迁移工作,我们构建了一个迁移工具,它可以更新 C# 代码、项目文件、场景和预制件。该工具默认以试运行模式运行,会备份其更改的每个文件,并报告所有需要人工决策的内容。在 Evergine 文档 物理部分的《从 Bullet 迁移》指南中,提供了完整的等效项列表和推荐流程。
下一步:MuJoCo 与 Physical AI
Jolt 为 Evergine 奠定了坚实的实时基础。我们正在进行的下一步是集成 MuJoCo。
MuJoCo 是 Multi-Joint dynamics with Contact(带接触的多关节动力学)的缩写,是一个为机器人学、生物力学和机器学习研究而创建的物理引擎。自 2021 年起由 Google DeepMind 维护,并自 2022 年起以 Apache 2.0 许可证开源。MuJoCo 直接通过关节来描述机器人,因此机械臂不会漂移分离,其动力学计算也更为精确。机器人在模型文件中定义,包含真实硬件的质量、惯性、关节限位和执行器,并且已有大量真实机器人的目录采用这种格式。这就是 MuJoCo 成为机器人学研究标准模拟器之一的原因。
将 MuJoCo 引入 Evergine 后,你可以将真实的机器人模型放置在工业场景中,并看到它像真实机器人一样运动,并通过 Evergine 在任何平台上进行渲染。
借助 MuJoCo,Evergine 引擎在 Physical AI 领域的能力将更加强大:Physical AI 指能够感知、理解物理世界并与之交互的 AI 系统,涵盖从机械臂、自主移动机器人到自动驾驶叉车等。这是当今需求最旺盛、增长最快的领域之一。这些系统在部署前,会在仿真环境中进行长时间的训练和验证,因为仿真器可以安全地运行数千种场景,且速度远超现实。为此,它们需要可信赖的物理效果和逼真的环境。Jolt 提供的可信工业场景、MuJoCo 提供的精确机器人以及 Evergine 在每台设备上的渲染能力,恰好满足了这些需求。
立即试用并分享你的想法
Jolt Physics 是 Evergine 2026 年 11 月版本的一部分。更新 Evergine,打开一个场景,让它去推、举和搬运物体。
- 在你的浏览器中尝试新的物理示例,并探索其源代码。
- 浏览 Evergine 文档,其中的物理部分通过视频和示例涵盖了每个组件。
- 探索 Evergine 示例 以获取更多场景。
- 发现问题或有想法? 在 Evergine 反馈仓库 中告诉我们。
我们很想看到你的作品,并期待听到你接下来想运行哪些仿真。


