When stiffness stops having an effect

Got a question recently about when stiffness stops having any noticeable effect, and figure I’d share the answer. Ideally, it would be more obvious why but these are things that are difficult to make visual in the viewport and make tutorials for.

Here’s what they were seeing.

See how stiffness has some effect, but certainly not in proportion to the different amounts?

The reason this happens is because there is a ceiling to how high stiffness can go. That ceiling is determined by the number of Substeps and Iterations on the solver node.

  • With default values, that ceiling is around 10-100
  • Double the substeps and iterations, and the ceiling is around 100-1000

The reason I can’t say it’s exactly 100 or 1000 is because there is one more factor, and which is the number of constraints in the system. And by “constraints” I include the connection between markers but also the number of contacts; these are all the same mechanism internally.

The way to think about the Iterations attribute is as a total sum of available computations Ragdoll will spend solving your simulation, and they are divided semi-equally amongst each Marker.

With double the amount of markers, each of them get half the number of time spent on each one.

The Substsps attribute splits each frame into multiple smaller frames. It essentially makes your animation go in slow-motion internally, which makes it less challenging to figure out when things come into contact. There is a limit to how high this can go as well, as the slower something goes the close things get to the floating-point limit of the numbers Ragdoll uses to solve your simulation.

Beyond 8 Substeps and 8 Iterations is normally of no use, although in rare occasions I have seen 12-16 have at least some difference.

There’s one more thing about this scene in particular that makes a big difference, and that’s the shapes; in this case, these long thin shapes are the hardest to stiffen up. Double radius and you will see a much stronger effect.

Think of Stiffness as being the strength of a physical motor, sitting between each marker. The Stiffness determines how strong this motor is. But for a very thin shape, that motor will also be very tiny. Such a tiny motor would need to be significantly stronger to keep up. Another way to think about it is like cycling on a bike with really really small wheels.

2 Likes

I’m having a similar issue and none of the solver settings changes anything.

The hair immediately floats up into the air on simulating.

I want it to NOT sim so erratically but to somewhat maintain original positions of the braids. The only thing that brings me close to the desired outcome is reducing Bend in the solver. Bend however makes the braids look more choppy and they bend in an elbow like fashion.

OK I think I got it working. I assigned and connect the FK controls as opposed to before where I had done the joints.

Welcome to the forums @Ross_Daniel :partying_face:

Looks like the markers might be a little too close to each other, overlapping with their grandparents and grandchildren. Try either disabling self collisions, or collisions altogether. Or, reduce the length of the capsules such that they don’t overlap. Or, reduce the number of capsules, such as assigning to ever 2nd or 4th control.

Let me know how it goes!

@Ross_Daniel just checking in on this, did you manage to figure it out?

I made some examples of the issue here.

Self Intersecting

Here’s what happens under normal circumstances when two Markers intersect on the start frame. Notice how they slowly de-intersect.

Parent and Child intersection

When Markers are connected, contacts between them are ignored. This way you can create an air-tight seal between the two just like human body parts.

Parent and Grandchild Intersection

Now we’ll spice things up a bit, and intersect not just the child, but the grand child too. Notice the Markers that are very tightly packed here. This will still simulate fine, because self-collisions are disabled per default.

Self Collisions

Now notice what happens if we enable self collisions. Parents and grandchildren will start to try and repel each other, but can’t; because they are connected. In this scenario, Ragdoll does not know what to do; should it respect their connection or their collisions?

Debug and Collision Group

You can investigate whether this happens for you by enabling display of collisions. When you have it confirmed you can either leave Self Collision turned Off, you can disable Collide on individual Markers specifically, or you can surgically choose which Markers should not collide with each other using Collision Groups.

Hope it helps!

1 Like

Everything worked as expected when I assigned the markers to the FK controls.

1 Like