Evergine 中的 Jolt Physics

迈向工业仿真与 Physical AI 的第一步

一辆叉车在仓库中搬运托盘,由 Evergine 中的 Jolt Physics 模拟

Evergine 为构建工业 3D 应用而生:可在桌面、Web、移动端和 XR 上运行的数字孪生、培训工具和流程可视化。这些应用越来越多地被要求不仅要 展示 事物,还要 模拟 它们的行为。要在此领域发挥作用,物理效果必须真实可信。

正因如此,我们基于 Jolt Physics 重构了 Evergine 的物理系统,这是一款现代的多核物理引擎。它取代了多年来为我们提供良好支持的 Bullet,也是让 Evergine 成为更强大仿真平台路线图的第一步:接下来我们将引入 MuJoCo,使引擎在 Physical AI 领域具备更强的能力。

简而言之:

本文内容

为什么仿真很重要

在工业领域,改变现实世界的代价高昂。重新布置仓库、调试新的生产线或培训操作员操作重型机器,都需要花费时间、金钱,有时还涉及安全问题。仿真让您可以在虚拟副本中先行尝试,在这里犯错无需成本:

所有这些都依赖于同一件事:当物体被推动、举起、掉落或驱动时,它必须像在现实中那样做出反应。如果物理不可信,仿真对于决策就毫无用处。

我们的发展方向

Evergine 中更好的物理系统并非一次性功能。这是一个包含两个步骤的路线图,两者都指向同一个方向:物理 AI。

图示:Jolt Physics 和 MuJoCo,增强 Evergine 以支持物理 AI 的两个步骤

  1. Jolt Physics,现已可用。 一个快速稳定的实时引擎,适用于交互式工业场景,支持 Evergine 所支持的所有平台。
  2. MuJoCo,开发中。 机器人研究的参考引擎,用于仿真具有真实关节、执行器和接触的机器人。

物理 AI,即在物理世界中感知和行动的 AI,是当今最受需求的领域之一,它依赖仿真来训练和验证其系统。此路线图的每一步都让 Evergine 在这方面更具能力。

本文主要介绍 Jolt。我们将在最后回到 MuJoCo。

为什么选择 Jolt

Jolt Physics 标志

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 标志

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,打开一个场景,让它去推、举和搬运物体。

我们很想看到你的作品,并期待听到你接下来想运行哪些仿真。

David Ávila
作者
David Ávila
Plain Concepts Research