Position based dynamics second order integration with inequality constraints

Recommended Posts


In reference to position based dynamics survey section 4.2.5: http://matthias-mueller-fischer.ch/talks/2017-EG-CourseNotes.pdf

The second order integration method they derive works very well for conserving energy.  The original PBD integration loses a lot of energy, and it is especially apparent during rotation of groups of constrained particles. With the second order method, it looks almost perfect.

However, I'm seeing bouncing and generally inconsistent reactions when this method is paired with any inequality constraints, but most importantly, collisions. They mention that no changes are required to the inner solve loop, but it seems as though inequality constraints will have to be treated specially for this type of integration to work. I don't understand the math enough to know how or why it isn't working.

Does anyone know how to treat inequality constraints (collisions) properly with second order integration in position based dynamics?

My current attempt to fix it is to change collisions to equality constraints, and essentially pull the colliding object back towards the collision point (like a distance constraint). This works and no longer bounces. However, now the problem is how to determine when to destroy the constraint...




Edited by coderchris

Share this post

Link to post
Share on other sites

Interesting link, thanks! I just checked the course slides and they just say  "Non-smooth events (contact) need special handling" (slide 29). Sadly they don't say what that special handling is though.  It might be they don't have a solution yet themselves. I would reach out to Mueller or Bender and ask directly.


Edited by Dirk Gregorius

Share this post

Link to post
Share on other sites

Ah interesting, hadn't seen those slides. In the slides they reference this paper (https://www.cs.ubc.ca/~rbridson/docs/english-siggraph08-cloth.pdf) which talks about performing an explicit velocity correction to counteract the effect. I'm guessing this correction would have to go after the velocity is computed. I will experiment with it some.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now