2021.07.02
Highlight for this release is quality of life.
- ADDED Replace Mesh Swap one mesh for another
- ADDED Freeze Evaluation Optimise performance by excluding nodes from evaluation
- ADDED Scene Management Extract, move and merge rigids across scenes
- ADDED Ignore Contact Constraint Surgical control over which rigid two interacts with each other
- ADDED Bake Selected Scenes Limit bake to one or more scenes
- ADDED Multi-mesh Shapes Mesh, Curve and Surface, as one?
- FIXED Edit Constraint and Chain Connection to Pose Strength is now preserved
- FIXED Constraints and Focus F-key no longer blows you away
- FIXED Skinweight Painting No long an issue!
- FIXED Referenced Physics Can now be mixed with new physics
- FIXED Two Users, One Machine More capable of rare production occurrences
- FIXED Export Initialisation You can now export without first playing back
- FIXED Center Of Mass Visualisation This vanished, and is now back!
- FIXED Something Went Wrong Less of these pesky errors
- FIXED More Accurate Auto Mass 1x1x1m = 1,000kg, as god intended
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 intordRigid.inputMesh
nurbsCurve
nodes plug intordRigid.inputCurve
nurbsSurface
nodes plug intordRigid.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
. 👏
Here's a more practical example, of a dynamic joint being replaced with the mesh of a car wheel.
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.
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
After
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
After
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.