Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Problems with rope collisions / 'intersections'
#1
Hello,

I'm trying to improve the interaction/collision quality of ObiRope in my vr game. In paricular, I am having numerous issues with the ropes not colliding properly with objects around them. A common example occurs when cables bend around objects and winds up with the object intersecting the cable (presumably because it is between the rope particles?); as seen in image 1 below

I've tried increasing the resolution of the ropes and this seems to help somewhat (see image 2), but not completely. In addition to frequently still having the same problem, it seems to cause issues with distance and bending constraints, making the rope appear all "scrunchy" and making it impossible to get the nice cable "bend" that I can only seem to get with a very low-resolution rope and small bend constraint values (from what I can see, bend constraint values only seem to go so low, and with numerous particles would obviously need to be much smaller to have a visible effect), seen in image 3.

I've tried messing around with the collision solver iterations, including cranking them fairly far up, but nothing seems to make a substantial difference to this issue. Is there any way to improve the quality of these sorts of interactions, or is this particularly tough problem for solvers to handle? Are there recommended settings/configurations to get a more reliable (i.e. fewer instances of them getting stuck in things) simulation in up-close scenarios?



Image 1 - my most common issue:
[Image: cable_woes_1.gif]

Image 2 - 1-resolution version of the same rope:
[Image: cable_woes_2.gif]

Image  3 - The nice bend in my low-resolution (0.15) and the floppy 1-resolution version:
[Image: cable_woes_3.PNG]
Reply
#2
(11-09-2018, 03:00 AM)CageyKG Wrote: Hello,

I'm trying to improve the interaction/collision quality of ObiRope in my vr game. In paricular, I am having numerous issues with the ropes not colliding properly with objects around them. A common example occurs when cables bend around objects and winds up with the object intersecting the cable (presumably because it is between the rope particles?); as seen in image 1 below

I've tried increasing the resolution of the ropes and this seems to help somewhat (see image 2), but not completely. In addition to frequently still having the same problem, it seems to cause issues with distance and bending constraints, making the rope appear all "scrunchy" and making it impossible to get the nice cable "bend" that I can only seem to get with a very low-resolution rope and small bend constraint values (from what I can see, bend constraint values only seem to go so low, and with numerous particles would obviously need to be much smaller to have a visible effect), seen in image 3.

I've tried messing around with the collision solver iterations, including cranking them fairly far up, but nothing seems to make a substantial difference to this issue. Is there any way to improve the quality of these sorts of interactions, or is this particularly tough problem for solvers to handle? Are there recommended settings/configurations to get a more reliable (i.e. fewer instances of them getting stuck in things) simulation in up-close scenarios?



Image 1 - my most common issue:
[Image: cable_woes_1.gif]

Image 2 - 1-resolution version of the same rope:
[Image: cable_woes_2.gif]

Image  3 - The nice bend in my low-resolution (0.15) and the floppy 1-resolution version:
[Image: cable_woes_3.PNG]

- Use the ObiParticleRenderer component to visually debug collisions:
http://obi.virtualmethodstudio.com/tutor...ering.html

If needed, increase rope "thickness" (will make rope particles larger) and reduce "thickness scale" of the rendering mode to compensate. This will make the rope physically thicker (for better collision detection), while keeping the same visuals.

- Increase the amount of solver substeps to 2 or maybe 3, you'll get much better quality simulation and a nice oomph in terms of constraint convergence. Note that this is will impact performance:
http://obi.virtualmethodstudio.com/tutor...olver.html

- The second .gif looks like you're using tether constraints, then violating them by forcibly over-stretching the rope. If you really need to stretch the rope beyond its rest length, use distance constraints in parallel mode. Or at least, use tethers in parallel mode and give them a bit of wiggle room (increase tether scale and decrease stiffness a bit).
http://obi.virtualmethodstudio.com/tutor...olver.html
http://obi.virtualmethodstudio.com/tutor...gence.html

- Increase rope "smoothness" parameter for a smoother mesh, avoiding sharp corners in the rope.
Reply
#3
Playing with the particle thickness in addition to a higher resolution rope was exactly what I needed. I also removed tethers entirely and added some other manual handling to prevent the overstretching I was getting before. I still can't achieve the same 'bend' (referring specifically to the bend constraints, not the rope smoothness, which I have intentionally lowered for performance reasons) as I could with the lower res rope but it's not critical - the collision fidelity is much more important. Thanks; very helpful tips!
Reply