45个版本 (23个重大更改)
0.24.0 | 2021年8月8日 |
---|---|
0.23.0 | 2021年7月11日 |
0.22.0 | 2021年6月2日 |
0.20.0 | 2021年3月1日 |
0.1.2 | 2016年3月31日 |
#409 在 模拟
每月415次下载
在 4 crate 中使用
1MB
20K SLoC
⚠️**此crate现在处于被动维护状态。它正在被Rapier项目取代。**⚠️
nphysics
nphysics 是一个用于游戏和动画的2维和3维物理引擎。它使用 ncollide 进行碰撞检测,并使用 nalgebra 进行向量/矩阵运算。2D和3D实现都共享相同的代码!
示例代码位于 examples2d
和 examples3d
目录中。交互式3D示例可在 此处 找到。由于这些演示基于WASM和WebGl 1.0,因此它们应在大多数现代浏览器上工作。您可以在官方 用户论坛 上寻求帮助并讨论功能。
为什么还需要另一个物理引擎?
市面上有大量的物理引擎。然而,编写一个用Rust编写的物理引擎要比编写绑定库更有趣,并且具有以下优点
- 它表明Rust适合软实时应用。− 它使用降维方法实现了多体的高效实现。也支持基于约束的关节。
- 它表明没有必要为2D和3D编写两个独立的引擎:关于维度的泛化是可能的(对于每个维度,需要模块化低级算术特化)。
- 在不远的将来,C++将因为丑陋而死去。那时,人们将寻找物理引擎,而 nphysics 将在那里,自豪地展示它的 Rusty 性感。
特性
- 静态、动态和运动刚体。
- 常见的凸几何体:盒子、球、凸多面体。
- 由凸几何体构成的凹几何体:复合几何体、三角形网格、多段线。
- 使用降阶坐标方法或基于约束的关节的多刚体。
- 多刚体关节限位和电机。
- 由于基于位置的非线性穿透校正和一次性接触流形生成,堆叠稳定。
- 基于岛屿的休眠(当物体处于静止状态时对象将关闭)。
- 光线投射。
- 基于扫掠球体的连续碰撞检测。
- 球窝关节。
- 固定关节。
- 传感器。
- 可变形体(又称软体)。
- 运动学体。
- WASM支持。
缺少什么?
nphysics 是一个非常年轻的库,需要学习很多东西才能成长。许多缺失的功能是因为 ncollide 缺失的功能。从 nphysics 本身缺失的功能包括
- 更多的关节、关节限位、关节电机和可断开关节。
- 并行管道
- 基于GPU的管道
依赖项
编译物理引擎所需的库是
编译示例所需的库是
- kiss3d:3D图形引擎。
依赖项
~6.5–9MB
~170K SLoC