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 #刚体模拟
235KB
5.5K SLoC
MGF: Matt's Game Framework
MGF是一个用于3D视频游戏的碰撞检测和物理库。
MGF旨在非常轻量级,并使用cgmath作为数学后端。
该库提供各种功能,例如
- 定义形状的结构:
Ray
、Segment
、AABB
、Rectangle
、Triangle
、Sphere
、Capsule
- 动态形状类型:
Component
、ComponentConstructor
- 定义聚合形状的结构:
Mesh
、Compound
- 离散碰撞检测:
Overlaps
、Contains
- 连续碰撞检测:
Intersection
、Contact
、LocalContact
- 边界体积层次结构:
BVH
- 刚体物理:
RigidBodyVec
、ContactConstraint
、Solver
- 动态容器:
Pool
MGF还处于初级阶段,因此并非所有功能都已完善。如果您发现任何错误或思考不周的接口,请务必告知。
仅限3D
目前,MGF仅设计用于处理3D视频游戏。这反映了我对MGF的使用。如果对MGF支持2D游戏的需求足够大,它可能会在将来实现。
与其他碰撞检测/物理库的区别
大多数碰撞检测和物理库提供与MGF类似的功能,不同的是它们的实现方式。大多数库使用GJK算法来执行所有类型的碰撞,包括连续碰撞。MGF专注于提供针对游戏中常见的移动几何体(如Spheres
和Capsules
)的快速和精确的碰撞检测,并不提供快速和精确的网格与网格碰撞。
截至版本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