JoltPhysics

JoltPhysics

多核友好的高性能物理引擎

JoltPhysics是一个开源的多核物理引擎,专注于刚体物理和碰撞检测。它支持多种形状模拟、约束系统、角色控制和车辆模拟,具有高性能、确定性和并发特性。该引擎适用于游戏和VR应用开发,兼容多个平台如Windows、Linux和Android。JoltPhysics已在《地平线:西部禁域》等游戏中得到应用,为物理模拟提供了有力支持。

JoltPhysics物理引擎游戏开发碰撞检测多线程Github开源项目

CLA助手 构建状态 质量门状态 错误 代码异味 覆盖率

Jolt物理引擎

一个多核友好的刚体物理和碰撞检测库。适用于游戏和VR应用。被《地平线:西之绝境》使用。

地平线:西之绝境封面艺术

布娃娃堆
一个展示使用Jolt物理引擎模拟布娃娃堆的YouTube视频。

更多演示和视频请前往示例部分。

设计考虑

为什么要创建另一个物理引擎?首先,这是一个个人学习项目。其次,我想解决一些我在现有物理引擎中遇到的问题:

  • 游戏不仅仅是模拟物理。这些操作跨多个线程进行。我们强调在主模拟更新之外并发访问物理数据:
    • 模拟的部分可以在后台加载/卸载。我们在后台线程上准备一批物理体,而不会锁定或影响模拟。我们将批次插入模拟中,对性能的影响最小。
    • 碰撞查询可以与添加/删除或更新物体并行运行。如果对物体的更改发生在同一线程上,更改将立即可见。如果更改发生在另一个线程上,查询将看到一致的前或后状态。另一种选择是有世界的读取和写入版本。这会阻止更改立即可见,所以我们避免这种做法。
    • 碰撞查询可以与主物理模拟并行运行。我们在模拟步骤之前进行粗略检查(广相检测),然后在后台进行精细检查(窄相检测)。这样,长时间运行的过程(如导航网格生成)可以分散到多个帧中。
  • 物体意外唤醒会在加载/卸载内容时造成性能问题。因此,创建时物体不会自动唤醒。移除物体时,相邻物体也不会被唤醒。如果需要,可以手动触发这些操作。
  • 模拟运行是确定性的。你可以通过简单地复制模拟的输入来将模拟复制到远程客户端。阅读确定性模拟部分以了解其限制。
  • 我们尝试模拟真实世界中刚体的行为,但会做出近似。因此,这个库主要应用于游戏或VR模拟。

特性

  • 使用连续碰撞检测模拟各种形状的刚体:
    • 球体
    • 盒子
    • 胶囊体
    • 锥形胶囊体
    • 圆柱体
    • 凸包
    • 平面
    • 复合体
    • 网格(三角形)
    • 地形(高度场)
  • 模拟物体之间的约束:
    • 固定
    • 距离(包括弹簧)
    • 铰链
    • 滑块(也称为棱柱)
    • 圆锥
    • 齿轮齿条
    • 齿轮
    • 滑轮
    • 平滑样条路径
    • 摆动扭转(用于人形肩部)
    • 6自由度
  • 驱动约束的电机。
  • 碰撞检测:
    • 投射射线。
    • 形状vs形状测试。
    • 形状vs另一形状的投射。
    • 仅广相测试,快速确定哪些对象可能相交。
  • 传感器(触发体积)。
  • 动画布娃娃:
    • 硬键控(仅运动学刚体)。
    • 软键控(在动态刚体上设置速度)。
    • 驱动约束电机到动画姿势。
    • 将高细节(动画)骨骼映射到低细节(布娃娃)骨骼,反之亦然。
  • 游戏角色模拟(胶囊体)
    • 刚体角色。在物理模拟期间移动。最经济的选择,角色和动态物体之间的碰撞响应最准确。
    • 虚拟角色。在模拟中没有刚体,但使用碰撞检查模拟一个。在物理更新之外更新以获得更多控制。与动态物体的交互较不准确。
  • 车辆
    • 轮式车辆。
    • 履带车辆。
    • 摩托车。
  • 软体模拟(如软球或布料)。
    • 边缘约束。
    • 二面角弯曲约束。
    • 四面体体积约束。
    • 长距离附着约束(也称为系绳)。
    • 限制模拟在蒙皮顶点的某个范围内。
    • 内部压力。
    • 与模拟刚体的碰撞。
    • 对软体的碰撞测试。
  • 水浮力计算。
  • 可选的双精度模式,允许大规模模拟。

支持的平台

  • Windows(桌面或UWP)x86/x64/ARM32/ARM64
  • Linux(在Ubuntu上测试)x64/ARM64
  • FreeBSD
  • Android x86/x64/ARM32/ARM64
  • Platform Blue(一个流行的游戏主机)x64
  • macOS x64/ARM64
  • iOS x64/ARM64
  • WebAssembly,请参见这个单独的项目。

所需的CPU特性

  • 在x86/x64上,最低要求是SSE2。该库可以使用SSE4.1、SSE4.2、AVX、AVX2或AVX512编译。
  • 在ARM64上,该库使用NEON和FP16。在ARM32上,它可以在不使用任何特殊CPU指令的情况下编译。

文档

要了解更多关于Jolt的信息,请前往最新的架构和API文档特定版本的文档也可用

开始使用时,请查看HelloWorld示例。还有一个使用CMake FetchContent的HelloWorld示例,展示了如何将Jolt Physics集成到CMake项目中。

Jolt使用的一些算法在我的GDC 2022演讲中有详细描述:为《地平线:西之绝境》构建Jolt Physics(幻灯片带演讲者注释的幻灯片视频)。

编译

  • 可使用 Visual Studio 2019+、Clang 10+ 或 GCC 9+ 编译。
  • 使用 C++ 17 标准。
  • 仅依赖标准模板库。
  • 不使用 RTTI。
  • 不使用异常。

如果你想在 Platform Blue 上运行,由于 NDA 要求,你需要提供自己的构建环境和 PlatformBlue.h 文件。这个文件可以在 Platform Blue 开发者论坛上获取。

有关构建说明,请查看构建部分。从旧版本库升级时,请查看发布说明API 变更部分。

性能

如果你对 Jolt 如何随多核 CPU 扩展以及与其他物理引擎的比较感兴趣,请查看这份文档

文件夹结构

  • Assets - 该文件夹包含 TestFramework、Samples 和 JoltViewer 使用的资源。
  • Build - 包含构建库所需的所有内容,详见构建部分。
  • Docs - 包含库的文档。
  • HelloWorld - 一个简单的应用程序,演示如何使用 Jolt Physics 库。
  • Jolt - 库的所有源代码都在这个文件夹中。
  • JoltViewer - 可以使用 DebugRendererRecorder 类记录物理引擎的输出(.jor 文件),该文件夹包含可视化记录的应用程序源代码。这对于可视化不同平台的 PerformanceTest 输出等非常有用。目前仅适用于 Windows。
  • PerformanceTest - 包含一个简单的应用程序,用于运行性能测试并收集计时信息。
  • Samples - 包含示例应用程序,详见示例部分。目前仅适用于 Windows。
  • TestFramework - 用于可视化物理引擎结果的渲染框架。由 Samples 和 JoltViewer 使用。目前仅适用于 Windows。
  • UnitTests - 一组用于验证物理引擎行为的单元测试。
  • WebIncludes - 物理引擎内部分析框架使用的一些 JavaScript 资源。

其他语言的绑定

其他引擎中的集成

查看使用 Jolt Physics 的项目列表

许可证

该项目采用 MIT 许可证分发。

贡献

欢迎所有贡献!如果你打算进行较大的更改,请先在 GitHub 讨论区进行讨论。对于非微小的更改,我们要求你同意贡献者协议。当你创建 PR 时,CLA assistant 将提示你签署协议。

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多