Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help  mitigate surface-based collision jitter on flat surfaces
#1
I am using Obi-Rope for an educational WebGL app that needs to run on low-spec devices, so I am limited to using ropes with few particles and few constraint iterations.



The ropes are used for user-managed cables purely for visuals. I need a solution that can wrap around 3D objects, and Obi seems like the best choice for this.


   


Because I can't use many particles, I need to use surface-based collisions or else ropes will clip through and catch on objects. However, the ropes can also rest on a flat table surface, and they jitter on the table because particles can only create a single contact.

click on gif to see jittering
   

I have tried to use sleeping, but a sleeping threshold aggressive enough to stop the jitter also freezes particles that should clearly stay in motion. I also tried surface collision tolerance, but a value high enough to stop the jitter allows particles to clip through objects too much as if I were not using surface based collisions at all.



Is there any other technique I can use to mitigate jitter while preventing clipping without increasing the number of particles and constraint iterations? Thanks!
Reply
#2
(19-10-2023, 09:08 PM)jtriveri Wrote: Is there any other technique I can use to mitigate jitter while preventing clipping without increasing the number of particles and constraint iterations? Thanks!

Hi!

The solver's "Surface collision tolerance" parameter is an angular threshold that will stop surface collision refinement once the simplex and the surface it's colliding against are parallel enough. This will prevent jittering, but the rope might not come to rest completely parallel to the surface and end up angled instead.

Other than this, there's no method to prevent jittering as it's inherent to the way surface collisions work. The only way to prevent jittering when two convex objects collide against each other is to use contact manifolds that involve multiple contact points between the objects, as opposed to a single one. This is what a rigidbody-based engines do, but it is considerably more costly than a purely particle based approach.

kind regards,
Reply