RVO crowd detection

Hello,

I’m trying to smooth out agent movement behaviour in crowded situations. This is in addition to the crowded destination behaviour and applies to situations where the agent is still in transit but is blocked by a crowded choke-point in the journey.

The rough behaviour I’d like to get is that if an agent is unable to move at a minimum speed, it will stop (including rotation) until the path has cleared to allow it to move.

Currently agents will turn around in jittery movements trying to find a free path resulting into a glitchy look.

I’d be happy to implement some kind of overlay in RVOController similar to “lockWhenNotMoving” but I’m not sure how to go about determining if an agent is “stuck” or not.

Thanks!

After working on animation and pathfinding integration I understood a bit better the interaction between path finding, RVO and colliders.

In the post above I was using colliders on agents, so what would happen is that agents would be nudged off the navmesh by the RVO force, but then clash against the collider of the obstacle, causing the jitter.

By disabling collision between agents and obstacle and placing RVO controllers (as obstacles) where the small obstacles are, the movement is now a lot smoother as RVO can now consider the obstacles as part of its calculation and there is no external force (colliders) fighting against it.

In a nutshell user error as I think the docs say quite clearly that colliders should not be used with RVO, but to be honest glad I did this as it made the whole interaction between components a lot clearer.

1 Like