9 个重大版本更新

0.10.0 2020年6月7日
0.8.0 2020年3月2日
0.7.0 2019年10月28日
0.5.0 2019年3月31日
0.1.0 2018年7月28日

#391科学

Download history 1/week @ 2024-03-09 53/week @ 2024-03-30 16/week @ 2024-04-06 5/week @ 2024-05-18

97 每月下载量

BSD-3-Clause

2MB
44K SLoC

crates.io

crates.io (nphysics2d) crates.io (nphysics3d) Build status

用户指南 | 2D 文档 | 3D 文档 | 论坛


 如果您想为 nphysics 的发展捐款,请点击以下按钮之一。

成为赞助商!      使用 Liberapay 捐款

nphysics

nphysics 是一个用于游戏和动画的 2D 和 3D 物理引擎。它使用 ncollide 进行碰撞检测,并使用 nalgebra 进行向量/矩阵运算。2D 和 3D 实现都使用相同的代码!

示例文件位于 examples2dexamples3d 目录中。交互式 3D 示例可在 此处 获得。由于这些演示基于 WASM 和 WebGl 1.0,因此它们应该在大多数现代浏览器上运行。欢迎在官方 用户论坛 上寻求帮助并讨论功能。

为什么还需要另一个物理引擎?

市面上有很多物理引擎。然而,用 Rust 编写物理引擎比编写绑定库更有趣,并且具有一些优点。

  • 它表明 Rust 适合软实时应用。 − 它使用降阶坐标方法高效实现多体。还支持基于约束的关节。
  • 它表明没有必要为 2D 和 3D 编写两个独立的引擎:对维度的泛化是可能的(对每个维度进行低级算术特殊化的限制除外)。
  • 在不远的将来,C++ 将因其丑陋而死亡。那时,人们会寻找物理引擎,而 nphysics 将在那里,自豪地展示其 Rusty 的魅力。

特性

  • 静态、动态和运动学刚体。
  • 常见的凸多面体:盒、球、凸多面体。
  • 由凸多面体构建的凹几何形状:复合几何形状、三角形网格、多边形。
  • 使用降阶坐标方法或基于约束的关节的多体。
  • 多体关节限制和电机。
  • 由于基于位置的非线性穿透校正和一次性接触流形生成,堆叠稳定。
  • 基于岛屿的睡眠(当物体处于静止状态时禁用)。
  • 光线投射。
  • 基于扫掠球体的连续碰撞检测。
  • 球窝关节。
  • 固定关节。
  • 传感器。
  • 可变形体(也称为软体)
  • 运动学体
  • WASM 支持

缺少什么?

nphysics 是一个非常年轻的库,需要学习很多东西才能成长为一个成熟库。许多缺失的功能是因为 ncollide 缺失。来自 nphysics 自身的缺失功能包括

  • 更多关节、关节限制、关节电机和可断开关节。
  • 并行管道
  • 基于 GPU 的管道

依赖项

编译物理引擎所需的库包括

编译示例所需的库包括

依赖项

~23–34MB
~370K SLoC