jrouwe/JoltPhysics
游戏一个用 C++ 编写的刚体物理与碰撞检测库,供游戏和 VR 开发者嵌入,用于模拟物体、角色、载具和软体。
Jolt Physics 是一个 C++17 刚体物理与碰撞检测库,定位是被链接进游戏和 VR 仿真中,而不是作为独立应用运行。作者的设计出发点在于游戏不只是模拟物理:场景区块在后台线程加载和卸载、碰撞查询可以与仿真并行、新建刚体不会自动唤醒。README 提到 Horizon Forbidden West 和 Death Stranding 2 在使用它,背后的设计思路也记录在 GDC 2022 演讲中。
提供的能力
库覆盖球体、盒体、胶囊、圆柱、凸包、复合形状、三角网格和高度场地形的连续碰撞检测,并提供固定、点、距离(含弹簧)、铰链、滑块、锥形、齿轮、滑轮、6 DOF 等约束及驱动电机。之上还有面向游戏的高层系统:带硬关键帧和软关键帧的动画布娃娃、刚体式和虚拟式两种胶囊角色控制器、轮式/履带式/摩托车载具、带边约束、弯曲约束、杆约束、体积约束和系绳约束的软体、浮力计算,以及基于 GPU 的发丝仿真。可选的双精度模式面向大世界场景。
接入方式
常见路径是从 HelloWorld 示例或 CMake FetchContent 示例项目起步,再用 Samples 应用及其逐个特性的测试代码学习各系统,用 PerformanceTest 收集计时数据。仿真具有确定性,作者建议只复制输入到远程客户端而非复制状态,但确定性保证的边界要以链接的 Deterministic Simulation 文档为准。JoltViewer 可以回放调试渲染器录制的 .jor 文件。
要求与限制
- 编译工具链: Visual Studio 2022+、Clang 16+ 或 GCC 12+,C++17,仅依赖标准模板库,不使用 RTTI 和异常。x86/x64 基线为 SSE2,可选编译 SSE4.1/4.2、AVX、AVX2 或 AVX512;ARM64 使用 NEON 并兼容 Armv8-A。
- 操作系统: Windows x86/x64/ARM64、Linux(多种架构)、FreeBSD、Android、macOS、iOS;WebAssembly 需使用独立的 JoltPhysics.js 项目。Samples、JoltViewer 和 TestFramework 可在 Windows、macOS 和 Linux 上运行。主机平台需要自行提供受 NDA 限制的构建环境和头文件,因此不是公开路径。
- 适用范围: 作者明确说明真实世界刚体行为是近似模拟,主要用于游戏或 VR 仿真,不适合要求工程级精度的场景。线程可见性和确定性限制有文档说明,并非无条件保证。
- 升级: 项目维护 Release Notes 和 API Changes 文档,因为 API 会演进,升级版本前应查阅。
- 许可与贡献: 代码采用 MIT 许可。非简单改动需要先同意 Contributor Agreement 并签署 CLA,PR 合并时会 squash。
此外还有 C、C#、Java/Kotlin、JavaScript、Rust、Python、Zig、Jai、Nim 等语言绑定,以及 Godot、Source 引擎和 Unreal 的集成,因此非 C++ 团队可以通过社区项目接入核心库。
HotRepo 点评
该仓库在 2026-10-30 被观察到一次进入 GitHub Trending 日榜,当时 11,948 stars,当日 +81;仅一天的记录无法判断关注度是在上升、衰减还是持续。
本文由 AI 根据项目 README 生成,更新于 2026年10月30日,以项目官方文档为准。