🎉 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!

Plastic deformation using PBD

Started by
5 comments, last by JoeJ 4 years, 11 months ago

I want to simulate a metal car chassis deformation using Particle Based Dynamics.

I'm wondering to know what constraints should I have in order to make the particles stay rigid until some crash.

Currently I'm Integrating with Verlet, but It's not enough with distance constraints and bend constraints to behave realistically, everything looks very soft.

Thanks.

Advertisement

I've done car body Sim with verlet before, and to stiffen it up, created more layers of points with more distance constraints between the layers, including diagonal connections.

It's kind of like if you nail four planks into a square, it won't keep its shape very well, but if you add two more planks across the diagonals, it will be much more rigid.

I've extended the particles to have orientation, so angular constraints became possible (helped also with flipping / inversions that diagonal extra constraints could not prevent).

You can also have lower resolution constraint mesh (with orientation), and the high res mesh (without orn) is connected to this coarser version. This increases stiffness much more than lots of solver iterations.

6 hours ago, JoeJ said:

I've extended the particles to have orientation, so angular constraints became possible (helped also with flipping / inversions that diagonal extra constraints could not prevent).

You can also have lower resolution constraint mesh (with orientation), and the high res mesh (without orn) is connected to this coarser version. This increases stiffness much more than lots of solver iterations.

How do you know each particle orientation? How it should be the integration step to do so? (If you could provide some code)

I've tried to do so using duality methods, where each point of the lower resolution constraint mesh is between three points of the other high constraint mesh, so I can get the normal orientation. But it is very inefficient to iterate over it.

Thanks!

9 hours ago, Hodgman said:

I've done car body Sim with verlet before, and to stiffen it up, created more layers of points with more distance constraints between the layers, including diagonal connections.

It's kind of like if you nail four planks into a square, it won't keep its shape very well, but if you add two more planks across the diagonals, it will be much more rigid.

At this moment, I have all the points connected between them, so there are already too many connections in the simulation. And I'm doing about 10 iteration steps.

Even though, It looks a little bit soft.

What do you mean with layers of points? ( do you mean having separated node structures actuating on the same chassis mesh? )

Thanks!

10 hours ago, miqvp22 said:

How do you know each particle orientation? How it should be the integration step to do so?

I did this like with usual rigid bodies, so each body stores orientation together with position. Angular velocity (or angular verlet displacement) needs to be integrated, and joints have given direction for both particles together with distance.

In contrast to rigid bodies i did not use nonuniform inertia but just the mass of the particle, so the prformance is better but still much worse than simple particles.

Before i decided to support orientation i tried some other things like plane constraints (particle can not cross the plane defined by 3 other particles), or tetrahedron constraints (4 particles keep that given shape and can not flip). But orientation ended up faster and more robust in the end for me. 

This topic is closed to new replies.

Advertisement