JoltPhysics 是一款专为现代游戏和 VR 应用设计的、高度并行的刚体物理引擎。它通过巧妙地将物理模拟任务分发到多个 CPU 内核,并优化数据访问模式,实现了高性能、低延迟的物理模拟。引擎还支持确定性模拟,使得网络同步和回放变得更加容易。其灵活的架构允许开发者自定义物理行为,以满足各种游戏需求。
特性
刚体模拟
- 使用连续碰撞检测模拟各种形状的刚体:
- 球体
- 盒子
- 胶囊
- 锥形胶囊
- 圆柱体
- 锥形圆柱体
- 凸包
- 平面
- 复合体
- 网格(三角形)
- 地形(高度场)
约束模拟
- 在物体之间模拟约束:
- 固定
- 点
- 距离(包括弹簧)
- 铰链
- 滑块(也称为棱柱形)
- 圆锥
- 齿轮齿条
- 齿轮
- 滑轮
- 平滑样条路径
- 摆动-扭曲(用于人形肩膀)
- 6 DOF
- 驱动约束的电机
碰撞检测
- 投射光线。
- 测试形状与形状。
- 投射形状与另一个形状。
- 广相仅测试以快速确定哪些对象可能相交。
- 传感器(触发体积)。
动画布娃娃
- 硬键控(仅运动学刚体)。
- 软键控(在动态刚体上设置速度)。
- 驱动约束电机到动画姿势。
- 将高细节(动画)骨骼映射到低细节(布娃娃)骨骼,反之亦然。
游戏角色模拟(胶囊)
- 刚体角色。在物理模拟期间移动。最便宜的选项和角色与动态体之间最准确的碰撞响应。
- 虚拟角色。在模拟中没有刚体,但使用碰撞检查来模拟一个。在物理更新之外更新,以获得更多控制。与动态体的交互不太准确。
车辆
- 轮式车辆。
- 有履带的车辆。
- 摩托车。
软体模拟(例如软球或一块布)
- 边缘约束。
- 二面角弯曲约束。
- 四面体体积约束。
- 长距离连接约束(也称为系绳)。
- 限制模拟以保持在一定范围内的一个蒙皮顶点。
- 内部压力。
- 与模拟刚体的碰撞。
- 对软体的碰撞测试。
- 水浮力计算。
- 可选的双精度模式,允许大型模拟。
安装
Windows
- 下载 Visual Studio 2022
- 下载 CMake 3.20+
- 运行 cmake_vs2022_cl.bat
- 打开生成的项目文件 VS2022_CL\JoltPhysics.sln
- 编译并运行 'Samples' 或 'UnitTests'
Linux
# 安装 clang
apt-get install clang
# 安装 cmake
apt-get install cmake
运行 ./cmake_linux_clang_gcc.sh
# 转到 Linux_Debug 文件夹
cd Linux_Debug
运行 make -j$(nproc) && ./UnitTests