Avian Physics 0.3 已发布!
- Avian 简介:基于 ECS 的 2D 和 3D 物理引擎,用于 Bevy 引擎,注重人体工程学和模块化,提供原生 ECS 驱动的用户体验。
亮点:
- 可选接触报告:仅为有
CollisionEventsEnabled
组件的实体发送碰撞事件,减少开销。 - 可观察碰撞事件:观察者支持碰撞事件,便于定义实体级碰撞处理程序。
- 碰撞钩子:用户可定义自定义钩子来过滤和修改接触对。
- 每流形材料属性:可为接触流形修改摩擦、恢复系数和切向速度。
- 碰撞器上下文:实现
AnyCollider
的自定义碰撞器有Context
用于 ECS 访问。 - 物理诊断:内置诊断和调试 UI 用于运行时物理分析。
- 重写接触对管理:大幅重写接触对管理,减少分配和不必要工作,提高并行性。
- 更快的碰撞和空间查询:碰撞和空间查询开销大大降低。
- 支持 Bevy 0.16:更新为 Bevy 的最新版本,利用关系附加碰撞器到刚体。
- 可选接触报告:仅为有
- 可观察碰撞事件:
OnCollisionStart
和OnCollisionEnd
事件用于特定实体的碰撞处理。 - 碰撞钩子:通过实现
CollisionHooks
trait 定义自定义钩子,可过滤和修改接触对,通过ActiveCollisionHooks
组件控制钩子的调用。 - 每流形材料属性:可在
CollisionHooks::modify_contacts
中修改接触流形的材料属性,如摩擦和恢复系数。 - 物理拾取过滤器:
PhysicsPickingFilter
用于通过SpatialQueryFilter
过滤可拾取实体。 物理诊断:
- 与
DiagnosticsStore
集成:添加bevy_diagnostic
特性和PhysicsDiagnosticsPlugin
将物理诊断写入DiagnosticsStore
。 - 物理诊断 UI:提供可选的调试 UI 显示物理诊断,可配置
PhysicsDiagnosticsUiSettings
资源。
- 与
- 接触对管理重写:改变
Collisions
为ContactGraph
,重写接触对管理,提高性能,减少迭代和分配。 Collisions
系统参数:提供Collisions
系统参数,仅返回接触器实际接触的接触对,方便用户使用。- 碰撞器上下文:
AnyCollider
trait 添加Context
关联类型,允许自定义碰撞器获取 ECS 数据。 ColliderOf
关系:遵循 Bevy 0.16 的实体关系,用ColliderOf
替换ColliderParent
,并使用RigidBodyColliders
跟踪附着的碰撞器。- 其他变化和修复:包括考虑实体禁用、清理碰撞检测模块结构、减少空间查询开销、修复惯性张量计算错误等。
进行中的工作:
- 求解器体:改进求解器性能,存储求解器所需的体数据,提高 3 倍性能,但可能影响用户手动修改体数据。
- 关节重写:将关节移动到基于脉冲的求解器,已实现功能旋转和球形关节,希望在 0.4 完成。
- BVH 广相:用边界体积层次结构(BVH)替换扫掠裁剪算法进行广相碰撞检测,已开始初步实验。
- 空间查询管道重写:开发新的空间查询管道,完全解耦于 Parry 并使用 OBVHS 加速结构,提高灵活性。
- Peck:开发自己的碰撞检测库,已实现 2D 和 3D 的接触流形计算、点查询和最近表面法向查询,正在考虑采用 Jolt 的改进 GJK 和 EPA 实现。
no_std
兼容性:尝试为 Avian 添加no_std
支持,已在 Parry 中改进no_std
兼容性,但仍存在限制。- 力重写:改进力和脉冲的 API,提供更灵活和不易出错的方式应用力和扭矩。
- 角色控制器工作组:成立 Avian 角色控制器工作组,正在原型阶段,目标是创建健壮且可扩展的角色控制器。
- 支持作者:可通过 GitHub Sponsors 支持作者,帮助维持 Avian 的开发和维护。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。