Skip to content

2021.07.02

Highlight for this release is quality of life.


Showcase

In preparation for the upcoming website, there are 4 new animations in progress. Here's just a taste. :)


Replace Mesh

When you turn a mesh dynamic, the vertices are plugged into the rigid node.

  • mesh nodes plug into rdRigid.inputMesh
  • nurbsCurve nodes plug into rdRigid.inputCurve
  • nurbsSurface nodes plug into rdRigid.inputSurface

But what if you wanted a different mesh? What if there was no mesh, such as for a joint or empty transform?

I give you, Replace Mesh. 👏

replacemesh

Here's a more practical example, of a dynamic joint being replaced with the mesh of a car wheel.

replacemeshpractical


Freeze Evaluation

Rigid bodies have an Enabled state to exclude it from a simulation, but it will still partake in most evaluation and still cost precious CPU cycles.

In Maya 2016, an attribute was introduced for exclude nodes from Parallel Evaluation called .frozen. Ragdoll now supports this attribute to a limited extent.

This operation is completely non-destructive and affects nothing but the nodes you select.

Important

The more you freeze, the more performance you gain, and that includes Maya's native nodes. So go ahead and freeze the controls as well.

Caveat

The optimisations are coming from deep within Maya and is mostly outside of our control. And it isn't perfect. How Maya chooses to evaluate nodes is sometimes a mystery, and sometimes even frozen nodes get included in evaluation. For the technically minded, you can read more about the attribute and behavior here.


Scene Management

Sometimes, you find yourself with rigid bodies that could run separately, in parallel. Either for performance, or because they could benefit from independent solver settings like iterations and substeps, or time scale and more.

Now you can extract rigid bodies from one scene into a new scene, akin to extracting polygons from one mesh into another.

Extract

Move one or more rigids out of one scene, and into another.

Move

Move one rigid between two scenes.

Merge

Collapse two or more scenes into the first-selected scene.

Constraints

For constraints to work, both rigids must be in the same scene and currently extracting only one rigid from a constrained pair would break the constraint. In a later version, the rigid will automatically become a Passive rigid in the extracted scene, such that it can still be constrained albeit indirectly.

This will enable you to extract parts of a simulation, like muscle and cloth, from an overall dynamic character without breaking anything.


Ignore Contact Constraint

You can now select two rigids and say "Hey, ignore each other, ok?"

Technically, this is just a constraint but with both the Limit and Guide disabled, and Allow Overlap kept enabled.


Bake Selected Scenes

The Bake Simulation tool now allows you to bake either all or selected scenes.

image


Multi-mesh Shapes

The rdRigid node has an attribute called .inputMesh which takes a normal Maya mesh, like a polyCube, and turns it into a volume suitable for simulation. It's also got a .inputCurve and .inputSurface attribute, to treat NURBS curves and surfaces in the same way.

Until now, only one of these could be connected at a time. Connecting to one when another was already connected would lead to undefined behavior. In this release, the behavior is defined! If you want two meshes, you can have'm!


Edit Constraint and Chain

When you make a chain, attributes from rigids and constraints are mapped to the original animation control as attributes. When you then want to edit the constraint pivot of any of those constraints, it would overwrite that connection so as to make it easier/possible to edit values directly from the locators that appear representing the pivots.

This no longer breaks your connections, at the expense of having to edit values on the original constraints instead. This will be addressed in a future release, once we get a proper manipulator in place instead of the makeshift Maya transform.


Constraints and Focus

The F-key zooms and centers and object in the viewport. But trying that on constraints would have you flying through the cosmos until NaN appears in your channel box.

Before

boudningbox2

After

constraintboundingbox


Skinweight Painting

Any joint with a shape causes the right-click menu to stop working. It's typical Maya, and has been the case for years.

Ragdoll nodes are mostly shapes of the control they drive, including joints. As a result, you weren't able to right-click on a dynamic joint to select its skinweights..

Before

skinweights1

After

skinweights2


Referenced Physics

The previous releases tried adding any new physics added to a referenced physics scene, but was unable to! This release fixes that.


Two Users, One Machine

When Ragdoll starts for the first time, a file is written into your temp-directory. The undo plug-in for cmdx. The file is written using the permissions of the currently logged on user and cannot be touched by anyone else.

When another user logs in to the same machine, Ragdoll will attempt to overwrite this file but cannot! It doesn't have permission! The result is a limit of 1 user able to leverage Ragdoll per machine. And that's no good.

This release fixes that!


Export Initialisation

If you author physics and immediately export, without playing back, the results could be incomplete. 🤔 The reason is that Maya only evaluates what it has to, and until you actually run the simulation a lot of things are left unevaluated. To Ragdoll, it's as if they never existed in the first place.

This has now been fixed.


Center Of Mass Visualisation

With the recent upgrade and performance improvements to rendering, a small but necessary visualisation feature of the rigid bodies was the COM or center of mass.

This has now been restored!


Something Went Wrong

The order in which Maya evaluates Ragdoll nodes is important, and whenever it tries doing that in some unexpected way it'll tell you.

# Warning: ragdoll._on_cycle() - Something is not right!

The reason it happens is difficult to say. The evaluation order is something Maya dynamically generates on the first frame of your animation, and it's based on the way nodes are connected. Cycles are the most common culprit. Ragdoll cannot stand cycles.

But another reason was discovered in this release which was that when you constrain A to B but then delete B, A is left constrained to a broken constraint. This could throw off evaluation, and break the scene.

This particular situation has now been fixed!


More Accurate Auto Mass

Rigid bodies have an option to have their masses automatically computed from their initial shape. This value was 10,000x wrong, and is now roughly 1-2x wrong. It is 100% accurate for boxes, but diverges from there as it does not take into account the negative volume within its bounding box.

Choose Density

Be like water, my friend.

Responds to Scale

The computed mass will respect the size of the object, and the overall scene scale.

Important

Remember that large mass differences between two rigids that interact can result in instabilities.

In the real world, an object with the density of air under a much heavier object with the density of water would crumble. However, it cannot do that here. Instead, it will bounce around and act unnaturally.

The recommended max difference is 10x. E.g. one rigid can weigh 10 kg, whereas the other can weigh 100 kg. That's at the edge of what the solver (and the real-world) considers manageable.