Skip to content

2021.05.10

Highlight for this release is Mimic!


Some awesome simulations, courtesy of Jason Snyman, a.k.a. The Wizard. xD

Facial Rigging

Move lips, pull muscles. Collides with the teeth too!

konggif3

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.

multimimic


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.

mimicorderindependent


Partial Chain

Sometimes you only want a little bit of control.

partialmimic


Bake Simulation

You can now convert physics into keyframes with Bake Simulation.

bakesimulation

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.

headsupmessage

Bake Options

There are a few more options to choose from, with more to come.

image


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.

preserveattr


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.

image

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.

sleep


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!

massvis1

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!

massvis2

Friction and Restitution

These can be visualised too.

massvis3

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.

maxvertexconvex


Collide Off

Rigids have always been able to ignore contacts with Collide: Off

disablecollide3

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.

disablecollide1

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.

disablecollide2


Quality of Life

A number of improvements were made to make working with Ragdoll more pleasant!

qol


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!

translatelimit3

Edit Limit

Using the same method as editing rotate limits, they can be rotated (and moved!).

linearlimitedit1

Soft Limit

Like rotate limits, these can also be made soft!

linearlimitsoft


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

aliasingbefore

After

aliasingafter

Constraint Interactivity

You may also have noticed how when you edit one of two constrained rigids, how things get all whack?

Before

consraintsdrawbefore

Best case you'd at least get constraints to stick together as you make changes.

constraintsdrawafter

After

And oh golly how ugly it was. No more! Yay! 🤩

constraintrendering

perfectconstraints


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).

constraintcolors3 customconstraintcolor2


Trajectory on Selected

There's now an option to isolate trajectories to selected rigids only.

drawselected


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

overlapbefore

After

overlapafter

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.

  1. Maya's Plug-in Manager
  2. Python's cmds.loadPlugin("ragdoll")
  3. 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
image image


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.

  1. Scene is opened
  2. Ragdoll checks to see if any nodes are older than the version you use
  3. If they are, it then checks to see whether any of them need upgrading
  4. If any are, it upgrades those
  5. 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
image image


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.

initialstatekinematic

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.

passiveandback


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

deleteorderbad deleteattr

After

undofixed


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

controlrenderin

After

controlrendering21


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

initialstatebug_before

After

initialstatebug_afte


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

image

After

image