0
$\begingroup$

Why can´t I get this sausage to land in the pan with the right sausage-bouncyness?

I have tried with different push/pull, bending, plasticity, high/low-poly. Every time it just ends up deforming to a flat pancake..!?

$\endgroup$
0

1 Answer 1

0
$\begingroup$

First thing let's do, to make your simulation run at a reasonable speed: let's take off the subdiv modifier, and let's replace the frying pan with a plane.

Now, how a soft body simulation works, is that it tries to keep the lengths of edges the same. That's all it does. It does not exert pressure from the inside of a mesh. With "bending" it merely creates virtual edges between neighbor-of-neighbor vertices, which it then tries to maintain the length of; but with 32 vertices per loop of your sausage, neighbor-of-neighbor isn't going to cut it.

What we need to do is create some extra edges to maintain the volume of your sausage. For each loop on the sausage, select that loop, create a face (f), poke that face (alt p) to create a center vertex for the face, and then delete the selected faces. You've now created a bridge spanning the volume of your sausage. Let's look at what that wireframe looks like:

enter image description here

We could add more or fewer edges. We could create internal edges spanning the length, rather than just the circumference. I did it this way because it was easy. The more vertices you have, the jigglier your soft body is going to be; the more edges you have, the more rigid your soft body is going to be.

After that, I ran the simulation and tweaked parameters. I set springs (push and pull) to 0.6. I reduced your bending to 1.0 (think about how many more neighbors-of-neighbors there are now!) And I was pretty happy with that as a sausage sim. Let's look at those settings, along with one other thing that's worth noticing:

enter image description here

Those are our new settings on the right-- but what happened to our sausage?? What happened was that I put the subdiv modifier back on. All of those new edges are going to impact it. Now, in this case, I could mark the loose, central verts with a vertex group and use a mask modifier to delete them before the subdiv.

But what's better practice is, always think of your rendering world as separate from your physics world. This is a good demonstration why: rendering works best with certain topology; physics works best with certain topology; but those are not the same topologies.

We are not going to render this mesh. Or subdivide it all. Instead, we'll copy our old sausage in, but instead of running physics on our old sausage, we'll just surface deform it from our new sausage. Then, we can set the new sausage to be disabled in renders. Now we can use subdiv on our old sausage just fine:

enter image description here

Here, the surface deform was a bit unhappy with the tied-off sausage ends on the physics mesh, which weren't so clean, so I just chopped those off and filled the hole. But we can see our old sausage, subdivided, following the physics mesh just fine.

Is there anywhere else this principle can be useful? Absolutely. Let's also replace the collision on our high poly frying pan with another, non-rendering mesh with fewer vertices:

enter image description here

Now our entire simulation runs at a reasonable speed, as an added, unasked for improvement.

Note-- an alternative here is, don't use soft body. Use cloth physics with pressure instead. This answer is offered because you mentioned soft body specifically, and because this solution to soft body pressure problems exists.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .