18个版本 (11个稳定版)

1.4.0 2020年4月27日
1.3.0 2019年2月14日
1.2.1 2018年10月12日
1.1.1 2018年5月4日
0.3.2 2017年11月9日

#4 in #刚体模拟

LGPL-3.0

235KB
5.5K SLoC

MGF: Matt's Game Framework

Documentation Version License Downloads

MGF是一个用于3D视频游戏的碰撞检测和物理库。

MGF旨在非常轻量级,并使用cgmath作为数学后端。

该库提供各种功能,例如

  • 定义形状的结构:RaySegmentAABBRectangleTriangleSphereCapsule
  • 动态形状类型:ComponentComponentConstructor
  • 定义聚合形状的结构:MeshCompound
  • 离散碰撞检测:OverlapsContains
  • 连续碰撞检测:IntersectionContactLocalContact
  • 边界体积层次结构:BVH
  • 刚体物理:RigidBodyVecContactConstraintSolver
  • 动态容器:Pool

MGF还处于初级阶段,因此并非所有功能都已完善。如果您发现任何错误或思考不周的接口,请务必告知。

仅限3D

目前,MGF仅设计用于处理3D视频游戏。这反映了我对MGF的使用。如果对MGF支持2D游戏的需求足够大,它可能会在将来实现。

与其他碰撞检测/物理库的区别

大多数碰撞检测和物理库提供与MGF类似的功能,不同的是它们的实现方式。大多数库使用GJK算法来执行所有类型的碰撞,包括连续碰撞。MGF专注于提供针对游戏中常见的移动几何体(如SpheresCapsules)的快速和精确的碰撞检测,并不提供快速和精确的网格与网格碰撞。

截至版本1.1,MGF提供了一种有限的GJK离散碰撞检测形式,尽管在当前形式下它相当有限。

需要注意的事项

实现的一个有趣结果是,多边形法线的方向决定了它所面对的“侧面”,这与背面剔除的方式类似。这使得我们能够比以前更准确地确定物体间的穿透。法向力在物理求解过程中本质上充当了物体的推进方向。

示例

您可以在 mgf_demo 文件夹中找到可工作的示例。演示需要 gfx 和 gfx_glutin 来显示视觉效果。请确保以发布模式构建演示,以获得足够的性能。

cargo build --release

以下是演示效果的链接。

贡献

MGF 欢迎任何人的贡献,并且接口的任何部分都欢迎讨论。如果您打算贡献新功能,请务必包含单元测试。

许可证

MGF 的开源版本采用 GNU LGPL 版本 3 许可。这个许可证对游戏编程来说相当不方便,因此如果您想为您的商业产品请求自定义许可证,请联系 map@maplant.com,我们可以免费为您分配一个自定义许可证。

依赖项

~1.4–2.3MB
~44K SLoC