#刚体模拟 #物理 #关节 #刚体 #实时 #动力学 #2D-3D

未维护 nphysics3d

Rust的3维物理引擎。这个crate正在被rapier3d crate取代。

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模拟

Download history 139/week @ 2024-03-11 108/week @ 2024-03-18 43/week @ 2024-03-25 634/week @ 2024-04-01 94/week @ 2024-04-08 63/week @ 2024-04-15 72/week @ 2024-04-22 65/week @ 2024-04-29 53/week @ 2024-05-06 56/week @ 2024-05-13 183/week @ 2024-05-20 112/week @ 2024-05-27 95/week @ 2024-06-03 94/week @ 2024-06-10 120/week @ 2024-06-17 88/week @ 2024-06-24

每月415次下载
4 crate 中使用

Apache-2.0

1MB
20K SLoC

crates.io

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

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

⚠️**此crate现在处于被动维护状态。它正在被Rapier项目取代。**⚠️


nphysics

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

示例代码位于 examples2dexamples3d 目录中。交互式3D示例可在 此处 找到。由于这些演示基于WASM和WebGl 1.0,因此它们应在大多数现代浏览器上工作。您可以在官方 用户论坛 上寻求帮助并讨论功能。

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

市面上有大量的物理引擎。然而,编写一个用Rust编写的物理引擎要比编写绑定库更有趣,并且具有以下优点

  • 它表明Rust适合软实时应用。− 它使用降维方法实现了多体的高效实现。也支持基于约束的关节。
  • 它表明没有必要为2D和3D编写两个独立的引擎:关于维度的泛化是可能的(对于每个维度,需要模块化低级算术特化)。
  • 在不远的将来,C++将因为丑陋而死去。那时,人们将寻找物理引擎,而 nphysics 将在那里,自豪地展示它的 Rusty 性感。

特性

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

缺少什么?

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

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

依赖项

编译物理引擎所需的库是

编译示例所需的库是

依赖项

~6.5–9MB
~170K SLoC