Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Tether constraints for ropes with no fixed points
#1
My greatest issue with ObiRope so far has been the fact that both rope stiffness and collision preciseness are dependent on particle resolution, and hence you have to choose between a rubbery rope with good collision, or a stiff rope which phases through and/or gets stuck around colliders. The fact that rope stretching increases the gaps between the particles further complicates this issue. Tether constraints are supposed to solve this issue, but from my understanding, they calculate distances based on fixed particles.... and this doesn't work for loose cords and ropes. 

However, i heard mentioned earlier that you can cheat your way through this by initializing tethers with fixed points and then making these points non-fixed at runtime. It seems like a hackish and cumbersome solution to me, but i'm nonetheless interested in how you'd go about this and whether it would actually work. How are tether constraints implemented internally?
Reply
#2
(09-04-2018, 03:48 PM)khalvr Wrote: My greatest issue with ObiRope so far has been the fact that both rope stiffness and collision preciseness are dependent on particle resolution, and hence you have to choose between a rubbery rope with good collision, or a stiff rope which phases through and/or gets stuck around colliders. The fact that rope stretching increases the gaps between the particles further complicates this issue. Tether constraints are supposed to solve this issue, but from my understanding, they calculate distances based on fixed particles.... and this doesn't work for loose cords and ropes. 

However, i heard mentioned earlier that you can cheat your way through this by initializing tethers with fixed points and then making these points non-fixed at runtime. It seems like a hackish and cumbersome solution to me, but i'm nonetheless interested in how you'd go about this and whether it would actually work. How are tether constraints implemented internally?

Hi there!

Have you tried to increase the amount of substeps, or lowering timestep? these are also very effective ways of reducing stretching without the need to increase the amount of iterations a lot.

Tethers works by anchoring each particle to its two closest fixed particles directly. This works very well for ropes that are anchored at some point and kept tense most of the time (a hanging lamp, or a tow cable, for instance) and since those are common use cases they prove useful sometimes, but they will fail if the rope is stretched in a way that it the rope is not a straight line between the fixed particles (like a slingshot, if that makes sense). This is the article they're based upon: http://matthias-mueller-fischer.ch/publi...2cloth.pdf

The hack you mention is basically that, a hack, and it is useable in certain circumstances if you really understand what's going on underneath. To do it:

- Fix the particles you want the rest of the rope to be anchored to by tethers.
- Click on "generate thethers".
- Unfix the fixed particles, give them the same mass as the rest.
Reply
#3
That actually sounds vaguely similar to the current solution i have with spring joints enforcing the distance, except that it's a per-particle constraint (if i understand correctly). I'm using particle handles since otherwise i had the issue with particles very often getting stuck inside/behind colliders (including getting stuck underneath the 1m thick floor), and since i'm developing for a contest scenario, anything that might interrupt the process is a no-go. Thanks though!
Reply