2021.05.10
Highlight for this release is Mimic!
- ADDED Mimic Clean separation between simulation and animation
- ADDED Bake Simulation Fresh out the oven!
- ADDED Import Additions More control over the import process
- ADDED Sleep Greater performance by putting rigids to sleep
- ADDED Textures Visualise mass, friction and restitution
- ADDED Vertex Limit Less vertices, more performance
- IMPROVED Collide Off Improved handling of disabled collisions
- IMPROVED Quality of Life Can never have too much of these
- FIXED Startup Crash Were you one of the 2% of users having Maya crash on startup?
- FIXED Scene Drawing in 2018 Maya 2018 and 2019 were acting up, no more!
- FIXED Initial State One less thing to worry about
- FIXED Qt Another less to worry about
Some awesome simulations, courtesy of Jason Snyman, a.k.a. The Wizard. xD
Facial Rigging
Move lips, pull muscles. Collides with the teeth too!
Ragdolls have feelings too
Zilla is nothing with Kong, Kong is nothing without Zilla.
Wreck-it Zilla
Old recovered footage from the 60s!
Wreck-it Warm-up
Ever wondered how Zilla prepares for world domination?
Mimic
Transition in and out of physics, in both pose-space and world-space, with the newly added Mimic.
Options In-Depth
A step-by-step guide on what each option mean, there's quite a few of them!
Production Rig Example
A closer look at the Fire Wolf.
Courtesy of Truong CG Artist
Multiple Mimic
Mimic is a replica of your control hierarchy, and there's no limit to the number of replicas you can make. The final force applied to your rigid bodies is the sum of constraints applied.
Order Independent
The controls in character rigs typically don't form a linear hierarchy. They're in some offset group, or in a different part altogether hanging together with constraints. That are animated, for space switching and what not.
Mimics don't mind.
Partial Chain
Sometimes you only want a little bit of control.
Bake Simulation
You can now convert physics into keyframes with Bake Simulation
.
I did not edit this GIF, it really was that fast! :D
Tutorial
Bake Duration
It'll tell you how much time was spent baking too.
Bake Options
There are a few more options to choose from, with more to come.
Import Additions
The import mechanic got an upgrade, you're now able to choose whether or not to re-apply changes to attributes and more finely import onto part of a larger chain hierarchy.
Preserve Attributes
You now have the option to preserve attributes when importing, for when you'd rather stick with the default values.
Preserve Roots
Exported files now remember what their original roots were.
The original root of chains aren't important to Ragdoll. Whether the spine was a chain followed by the left and right arm, or whether the spine and left arm were part of one chain followed by the neck and right arm makes no difference.
Consider these two characters.
Notice how in the front character, one chain starts at the hip and goes out into the arm, whereas in the back character the spine is a single chain as you may expect?
Regardless of how you authored it, to Ragdoll these characters are identical. Ragdoll doesn't bother with hierarchies, everything happens in worldspace. The hierarchy is between you and Maya.
However
What if you wanted to import just one of the roots? You can import only onto the selected controls, but you can't import part of a network of chains like a full ragdoll. It's either a complete character, or no character at all.
In the case of the foreground character, you could import the screen-left arm, but not the screen-right. Not without importing the whole spine.
This release preserves the original root, such that you can isolate an import onto the same chain you originally authored.
Sleep
It is now possible to reap additional performance benefits in situations where one or more rigids remain immobile for a given number of frames.
The behavior can be tuned via two attributes on each rdRigid
node.
Attribute | Description |
---|---|
Wake Counter |
How many frames of inactivity before I fall asleep? |
Sleep Threshold |
How low of a force should be applied before I start counting? |
In practice, you'll likely only want to tweak the Wake Counter to some reasonable value like 5 or 20 frames of immobility. The default value of 0 means they'll never fall asleep. Like a proper insomniac or new parent.
Caveat
Currently, the wake counter is not reset when you rewind, so it's possible to have them fall asleep on frame 20, rewind to frame 19 and have the counter reset and keep them awake past frame 20. It's unlikely to affect you, and will be addressed in a later release.
Textures
As you author your ragdolls, the distribution of mass can play a big role. But it can be tricky to balance something you cannot see, smell or touch.
With this release, you're able to see (but not smell, I promise) the masses in each rigid using the handy new Texture
attribute and when your viewport is set to Textured mode (the 6
key on your keyboard).
Thanks to Jason Snyman for the idea!
Normalised Distribution
Notice how the colors even out to always give you pure white for the maximum weight in any of the rigids in the scene they are part of, and approaching black for anything less. No need to manually specify min/max values!
Friction and Restitution
These can be visualised too.
Maya 2018 Caveat
In Maya 2018, consolidation is disabled to facilitate this shader. It shouldn't affect anything of value, you probably don't even know what it is. But if you'd rather it didn't do that, untick the "Maya 2018 Consolidate World Fix" in the Ragdoll Preferences and reload the plug-in or restart Maya.
Vertex Limit
Meshes are the slowest to compute and have an upper-limit of 256 vertices. You can now lower this limit for meshes that would normally result in 256 for greater performance.
Collide Off
Rigids have always been able to ignore contacts with Collide: Off
The problem here is subtle, but has been present since the beginning of Ragdoll. It mostly makes itself known once there is a constraint between a rigid with Collide: On
and a rigid with Collide: Off
.
Notice how with Collide: Off
the upper part of the "creature" is more wobbly? As if the effect of the constraint has somehow dimished? That's not right. Unless there are contacts involved, disabling them shouldn't have an effect on the simulation.
With this release, it behaves as you would expect.
Quality of Life
A number of improvements were made to make working with Ragdoll more pleasant!
Translate Limit Rendering
The translate limit is making an appearance!
This should make it just a tiny bit easier to work with, now that it's clear which axes are actually free. Letting you see whether they are constrained in 3D, 2D or 1D. All the D's!
Edit Limit
Using the same method as editing rotate limits, they can be rotated (and moved!).
Soft Limit
Like rotate limits, these can also be made soft!
Constraint Rendering
Have you ever noticed constraints looking real nervous?
You now needn't lose any more sleep over it, as they now render flicker-free. :D
Before
After
Constraint Interactivity
You may also have noticed how when you edit one of two constrained rigids, how things get all whack?
Before
Best case you'd at least get constraints to stick together as you make changes.
After
And oh golly how ugly it was. No more! Yay! 🤩
Constraint Colors
When rigids have multiple constraints, it can be hard to tell them apart visually given they all share the same red/green colors. And if you're amongst the colorblinds things are even more challenging.
This release enables you to give some extra flare to your constriants, by editing the Twist
(X-axis) and Swing
(YZ-axes).
Trajectory on Selected
There's now an option to isolate trajectories to selected rigids only.
Less Explosive
Overlaps are resolved by moving one or both rigids away from each other. The force with which that resolution happens could be infinite, resulting in what looks like explosions.
This release addresses this, by compromising between realism and aesthetics.
Before
After
Editable
The behavior can be restored or tweaked further by adjusting the Max Depenetration Velocity
attribute of the rigid.
Load on File Open
There are 3 ways to load Ragdoll.
- Maya's Plug-in Manager
- Python's
cmds.loadPlugin("ragdoll")
- Opening a file with Ragdoll in it
When Ragdoll is loaded, it appends to a special environment variable Maya uses to look for icons in the Outliner called XBMLANGPATH
. Because of course that's what it is called, why do you have that look on your face?
Anyway, as it happens, if the Outliner was given a chance to draw icons before Ragdoll added this variable then it'd go ahead and draw a generic, non-pleasant-looking icon like this.
This release fixes that. 🥰
Before | After |
---|---|
Upgrade on File Open
Like above, there was another issue when loading the plug-in alonside opening of scenes, which had to do with upgrades.
Normally, what happens is this.
- Scene is opened
- Ragdoll checks to see if any nodes are older than the version you use
- If they are, it then checks to see whether any of them need upgrading
- If any are, it upgrades those
- Scene open complete
But since the plug-in is loaded during scene open, Ragdoll wasn't given a chance to check it first.
This has now been fixed.
Install on Idle
This changes the initialisation mechanism somewhat, if this causes any issues for you, set the RAGDOLL_INSTALL_ON_IDLE
environment variable to revert to the old behavior. It won't be able to upgrade on scene open unless you load the plug-in first, but that's the only thing you're missing out on.
Node Editor Icons
Our precious icons now appear in the node editor too!
Before | After |
---|---|
Passive Initial State
Here's a subtle one.
In previous releases, the initial state is automatically updated on the 2nd frame of the simulation to wherever a rigid was on the 1st frame. Even if you modified the position interactively with manipulators, or via curves in the Graph Editor, or the channel box, and so on.
It even updated when a rigid was affected by passive input, like a Hard Pin, which meant you lost track of the original initial state whenever you disabled the hard pin.
This release addresses that by only automatically updating the initial state if a rigid is active on the start frame.
Notice how I can disable Hard Pin and have the rigids return to where they were before they got pinnned? It's what you would expect.
Passive to Active and Back Again
Ragdoll tries to clean up after itself by removing constraints no longer in use. When a rigid is passive, it can no longer be affected by constraints, so those constraints are deleted.
However, active rigids can still be influenced by a passive rigid, and Ragdoll was a little too aggressive in removing those constraints too.
This release fixes that.
Undo and Attribute Order
Whenever you delete physics and undo, the order in which proxy attributes would appear on your controllers would go all whack.
This is basic-Maya, it loves doing this. But now love goes both ways, and we are much happier. 🥰
Before
After
Control Rendering
Controls give you a preview of what the rigid they control look like.
These are special in that Maya doesn't actually need them. Ragdoll doesn't actually need them either. They are exclusively for-your-eyes-only.
And due to Maya only updating things it absolutely needs to whenever rendering anything, these won't get updated unless Ragdoll explicitly tells them to. So far, they've been told to update whenever the selection changed, which can end up looking bad.
This has now been improved!
Before
After
Fixed Startup Crash
On plug-in load, Ragdoll would check your licence. Under rare circumstances (2 out of 100 users reported it happening) this would be enough to put Maya under, instantly and without warning.
This has now been fixed.
Fixed Initial State
An error was introduced between 2021.04.23 and 2021.04.28 leading to an issue with updating the initial pose via the Channel Box or Graph Editor.
This got addressed on the same day and released unofficially as 2021.04.30, and is now officially part of the latest version.
Thanks to Niels Dervieux for reporting this bug!
Before
After
Fixed Qt
Whenever you clicked Import Physics
in the Import Physics Option Window, it would needlessly shout at you.
# RuntimeError: Internal C++ object (WidgetHoverFactory) already deleted.
No more!
Scene Drawing in 2019
Maya was misbehaving in 2018-2019, refused to draw the scene visualisation correctly. No longer!
Before
After