RVO freezes on some hard areas

Hi
I need my RVO agent to move very very close to the navmesh area edge. And i all the time got the freezes in theirs movement: when they reaching points like on the pick they got stuck like for 1 second.


And then at some point it got stuck forever( that happens when it moves on the edge track)
That happens only if i got an RVO agent attachet to the object, for RichAI everything is ok.
What can cause this?

Hi

Yes, unfortunately those edges are a bit tricky for the current system (usually they don’t freeze for a whole second though). I will try to improve it in the future.
Often it works better if you keep them some distance from the edges, why do you need them to move so close to the edge?

Also, I would assume that you have the RVONavmesh component somewhere in the scene. Is that necessary for you or is it ok if it moves outside the navmesh slightly. In that case you could remove it and it might work better. If you do not have that component somewhere in your scene, you could try adding one and see if that helps.

thank for answer.
I’m simulating horse run and horses are supposed to run very close to the edge of track. I didn’t have the RVONavmes, but when i added it, it didn’t change anything.
Maybe you can make some advice? I got some logic for steering of the horses, i manually change desired velocity of navmesagent. So i think that i will do the same for RVOAgents. I simply need colliders that you have in RVOController and seeker to find desired velocity for my further calculations, but i also need some navmes agent, to apply velocity to.
It’s really important for me to have a good movement on the edge of navmesh area, the biggest part of my agents gonna move in that way.

I really need your answer, i got stuck in my project because i can’t make it work right.
So there are no way to make RVOcontrollers work in a proper way running on the edge?
Maybe there is some workaround of this problem?

Hi

Hm, I’m not so sure using this type of local avoidance system is such a good idea for that unfortunately. This local avoidance system was primarily designed for characters such as humans with a key property that they can change their velocity to any value immediately. Horses, especially if they are running, do not have this property as slowing down a running horse takes some time.
I think that it might be better in this case to use some kind of force based system instead of an rvo based system. That will likely give you more natural looking results.

Thanks for answer, it’s a great advantage that you got such good support on your project!
I need agents to have collides, all avoidance logic i already got. Maybe you can recommend to me some force based system? RichAI do not have any collides, and i can’t use no rigidbodys or charactercontrolers. And i didn’t find any other variants that will suit me on the documentation page.

Hi

Why cannot you use a character controller?

So you already have avoidance code and you just want to prevent collisions without any additional avoidance code?

yes it would be ideal that i have coliders that you have in RVOController and some calculated desired Speed vector to move on the navmesh. So your RVOController got it all and plus it got some avoidance logic which is not necessary for me(but it works great).
So what class or controller should i use?

I can’t use character controller because character controller got only cylinder collider on it, and i need it to be cube like.

yes it would be ideal that i have coliders that you have in
RVOController and some calculated desired Speed vector to move on the
navmesh. So your RVOController got it all and plus it got some avoidance
logic which is not necessary for me(but it works great).
So what class or controller should i use?

I can’t use character controller because character controller got only cylinder collider on it, and i need it to be cube like.

Hi

The RVOcontroller also uses a circle/cylinder, I am not sure what you would gain by using it?
Note that character controllers can interact with normal unity colliders (which can have many different shapes, including cubes).