ORCA(Optimal Reciprocal Collision Avoidance)
多代理局部碰撞规避算法,通过 dodgy crate 实现。
核心原理
计算一个既能避免碰撞、又尽可能接近”首选速度”的速度向量。
关键参数:desired_speed vs max_speed
| 参数 | 含义 | 作用 |
|---|---|---|
desired_speed | 期望行进速度 | 代理的”首选”速度 |
max_speed | 绝对最大速度 | 为规避算法提供”余量” |
关键设计: max_speed 应设为高于 desired_speed
这使得代理可以暂时超越正常速度来:
- 超越其他代理
- 更有效地躲避障碍
如果两者相同,密集人群中代理会陷入”互相谦让”的死锁—固定速度下找不到有效移动方案。
实际效果
设置余量后,群体移动明显更流畅自然。
相关
- landmass — 实现 ORCA 的核心算法库
- bevy-landmass — Bevy 中使用 ORCA 的插件
- astar-pathfinding — 与规避配合使用的寻路