🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Issue with Verlet integration and collision handling

Started by
2 comments, last by aenbacka 1 week, 6 days ago

Hello,

I am working on rope simulation, where a rope is connected to a moving fixed point (helicopter fuselage) using Verlet integration (rope is constructed by multiple nodes). This works quite nicely when collision detection is not in use, but when adding collision, and the rope is lifted in one endpoint upwards, it stretches beyond its maximum length and part of rope is stuck on ground (picture attached).

In the code, during each simulation step Verlet integration is performed, followed by collision handling, and finally constraints resolving (multiple iterations).

Any suggestions what would be worth investigating would be very appreciated.

Advertisement

There are two things I can think of:

  1. Not enough iterations. The stretch near the attachment point suggests you are not iterating enough. You roughly need as many iterations as particles (as a rule of thumb)
  2. Collision/Contact are ‘constraints’ as well. So for each iteration you would need solve all distance and contact constraints

I would try this first and see if you can get the look you want to achieve. Ultimately this might be too expensive in practice and there are things you can do. One trick to avoid the stretching are long range constraints as described e.g. here:

https://matthias-research.github.io/pages/publications/LongRangeConstraintsSCA.pdf

Alternatively you can solve the chain using a tridiagonal solver:

https://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm​​

HTH,

-Dirk

Hi Dirk,

Thanks a lot for you suggestions.

Yes this application is quite tricky as we require quite long lines for the simulated sling load operations. I will try to increase the operations, using a fixed amount (around 250) currently, but a longer rope could use 400 nodes or more.

Doing 250 iterations and also integrating the collision checks would probably bee too expensive to do in this application.

I will look into the links you provided as well, too see if they could help.

Advertisement