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

停止维护 nphysics2d

Rust 的二维物理引擎。此包已被 rapier3d 包所取代。

44 个版本 (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 日

#1015科学

Download history 170/week @ 2024-03-14 128/week @ 2024-03-21 481/week @ 2024-03-28 236/week @ 2024-04-04 141/week @ 2024-04-11 100/week @ 2024-04-18 114/week @ 2024-04-25 84/week @ 2024-05-02 41/week @ 2024-05-09 118/week @ 2024-05-16 245/week @ 2024-05-23 188/week @ 2024-05-30 150/week @ 2024-06-06 188/week @ 2024-06-13 237/week @ 2024-06-20 91/week @ 2024-06-27

682 每月下载量
用于 6 个包(其中 4 个直接使用)

Apache-2.0

1MB
20K SLoC

crates.io

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

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

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


nphysics

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

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

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

目前有很多物理引擎。然而,用 Rust 编写物理引擎比编写绑定要有趣得多,并且具有以下优点

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

功能

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

缺少什么?

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

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

依赖关系。

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

编译示例所需的库包括

依赖关系。

~6.5–9MB
~171K SLoC