鸟类物理学 0.3 - 尤纳·阿尔托

Avian Physics 0.3 已发布!

  • Avian 简介:基于 ECS 的 2D 和 3D 物理引擎,用于 Bevy 引擎,注重人体工程学和模块化,提供原生 ECS 驱动的用户体验。
  • 亮点

    • 可选接触报告:仅为有CollisionEventsEnabled组件的实体发送碰撞事件,减少开销。
    • 可观察碰撞事件:观察者支持碰撞事件,便于定义实体级碰撞处理程序。
    • 碰撞钩子:用户可定义自定义钩子来过滤和修改接触对。
    • 每流形材料属性:可为接触流形修改摩擦、恢复系数和切向速度。
    • 碰撞器上下文:实现AnyCollider的自定义碰撞器有Context用于 ECS 访问。
    • 物理诊断:内置诊断和调试 UI 用于运行时物理分析。
    • 重写接触对管理:大幅重写接触对管理,减少分配和不必要工作,提高并行性。
    • 更快的碰撞和空间查询:碰撞和空间查询开销大大降低。
    • 支持 Bevy 0.16:更新为 Bevy 的最新版本,利用关系附加碰撞器到刚体。
  • 可观察碰撞事件OnCollisionStartOnCollisionEnd事件用于特定实体的碰撞处理。
  • 碰撞钩子:通过实现CollisionHooks trait 定义自定义钩子,可过滤和修改接触对,通过ActiveCollisionHooks组件控制钩子的调用。
  • 每流形材料属性:可在CollisionHooks::modify_contacts中修改接触流形的材料属性,如摩擦和恢复系数。
  • 物理拾取过滤器PhysicsPickingFilter用于通过SpatialQueryFilter过滤可拾取实体。
  • 物理诊断

    • DiagnosticsStore集成:添加bevy_diagnostic特性和PhysicsDiagnosticsPlugin将物理诊断写入DiagnosticsStore
    • 物理诊断 UI:提供可选的调试 UI 显示物理诊断,可配置PhysicsDiagnosticsUiSettings资源。
  • 接触对管理重写:改变CollisionsContactGraph,重写接触对管理,提高性能,减少迭代和分配。
  • 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 的开发和维护。
阅读 61
0 条评论