Skip to content

2021.10.25

Highlight for this release is Linking and Caching, and is part 3 out of 4 of the new Markers.

Showcase

Let's start these notes with some examples of what you can do with all of the new features added. 🥰

Best Friends, No Matter What

Two referenced characters, their solvers linked.

Hang On!

The new Distance Constraint at work.

Dance Baby!

The new Pin Constraint working alongside a Distance Constraint and regular old pose matching.


Manikin Rig

Updated with limits from this release.

As before, this guy can either be opened or referenced into your scene. See Solver Linking for how you can reference multiple characters into the same simulation.

image


New Tutorials

Markers have one part left before being considered complete, at which point they can completely succeed Active Rigid and Active Chain.

Until then, here's how you can get started with Markers today.

Tutorial Duration Description
Markers 101 01:23 What are markers?
Markers 101 - Key Concepts 03:23 Overview of Input Type and Pose Space
Markers 101 - Local and World 03:00 Overview of the two Pose Spaces, local and world
Overlapping Motion I 02:27 The very basics or Capture and Record
Overlapping Motion II 02:21 Animation layers
Full Ragdoll I 04:08 Hierarchy and volume
Full Ragdoll II 04:05 Kinematic and animation
Full Ragdoll III 04:30 Self collisions and recording
IK I 03:00 Capturing the skeleton
IK II 01:59 Retargeting to IK controls
IK III 01:59 Record both Translation and Rotation
Practical Example I 06:53 Fix table and elbow intersection in this dialog performance


Solver Linking

Reference two characters, link their solvers.

image

Until now, you've been able to author physics using Active Chain and combine scenes using the Combine Scene menu item. That would transfer all connected rigids from one scene to another.

But, that feature is destructive. There's no way to "uncombine" and even if you could, there's no record of what was originally combined.

Let me introduce Solver Linking, a lightweight and non-destructive alternative.

Linking

This fellow is referenced twice, and get their solvers linked together.

Unlinking

Unlinking restores their previous behavior exactly.

That's neat, but can you..

I know exactly what you're thinking, I was thinking the same thing.

Can you link a solver to another solver that is also linked? So that I can build a network of simple solvers that all work together to form one complex solver?

Yes. Yes, you can. 🤭 See below.


Example

Here are 2 assets, a manikin and a backpack.

Manikin Backback
image image

The backback and manikin has been combined into one, which is then referenced twice into the final scene for a total of 4 unique solvers.

Non-destructively link solvers

Notice the hierarchy of solvers formed here, enabling you to build complex solvers out of many small solvers.

Non-destructively unlinking too

Likewise, safely deconstruct a network of solvers by just removing the connection.

Technically, a solver is added to another solver in the same manner a marker, group and constraint is added. One big happy family.

image


Solver Caching

image

Ragdoll runs alongside your character animation, but sometimes it can be useful to keep the results from a previous run and stop being so interactive.

Meet Cache and Uncache.

Caching is entirely non-destructive, and in fact leverages the very same cache you've been enjoying all this time whenever rewinding.

The menu commands toggle an attribute on your solver node, called .cache and automatically plays the entire timeline for you. But the same result can be achieved by setting the attribute and playing it yourself.

The minimal HUD will show you what's been cached, and like before once you resume playback from a cached to an uncached frame, Ragdoll will continue filling up the cache as one would expect.

Look forward to a future release where caching happens in the background, as you work. Something that can also be handy from time to time (pun!).


Limitations

The viewport HUD currently draws relative the solver node in your Outliner. Moving this node also moves the HUD, which isn't right. Moving it along the Z-axis can actually cause the HUD to vanish due to being outside of the camera frustrum.

Other than that, if you encounter odd behavior let me know. This should work just fine in all cases where Ragdoll works, since the underlying mechanics are the same.


Marker Limits

Markers now support the limits you've grown accustomed to from chains and constraints. They are much easier to work with, now that they are built-in to each marker and have an understanding for what a "parent" is.

You should find a lot less need to use Edit Pivots from here on, and in the next release you'll also get some interactive manipulators to avoid the Channel Box even more.

Limit Type

image


Hinge Limit

The simplest of limits, allow a limb to rotate along a single axis. Like hinges on a door.

Use this for knees and elbows.


Ragdoll Limit

For more complex anatomical limits, such as shoulders and hips, use the "ragdoll" limit for control over each of the 3 rotate axes.

Defaults

A good place to start is to just play with default settings and get an idea of what it looks like.

Customise

In this case, we'll keep the leg from crossing over too far, and from bending too far backwards. Like a real human leg.


Custom Limit

The Hinge and Ragdoll limits should cover the vast majority of limit needs, but sometimes you need more control. The Custom limit lets you control the parent and child frames independently, similar to the "traditional" Rigid constraints let you do.

Here's an example of replicating the Ragdoll constraint with a custom limit.


Axis

Specify the "main" axis for your limit.

Different rigs follow different conventions, and this attribute enables you to keep Ragdoll in the loop. It should typically align with whatever axis your joint or control points in the direction of the child joint or control.


Rotation vs Offset

You can either rotate or offset the limit.

  • Rotation rotates both parent and child frames
  • Offset rotates only the parent frame

Remember

The Parent Frame is the space in which a Child Frame is allowed to move.


Marker Constraints

You can now constrain one marker to anothe!

Constraint Type Description
Weld Constraint Simplest of constraints, welds two markers together; no change to their distance or relative orientation is allowed. This is akin to the Maya Parent Constraint
Distance Constraint Maintain a minimum, maximum or total distance between two markers.
Pin Constraint Match a position and orientation in worldspace, similar to Drive Space = World.


Weld

Maintain the position and orientation of one marker relative another from the first frame onwards.


Distance

A simple but versatile constraint with animatable distance.

Maintain Start Distance

Whatever the distance between two markers, it will be maintained throughout a simulation.

Minimum Distance

Alternatively, only respond to when two controls get too close.

Maximum Distance

Conversely, keep markers from getting too far away from each other.

Custom Distance

Or go all-in, with both a minimum and maximum distance, for the most complex behavior.

Offsets

Control at which point on a control to measure the distance.

Animated Distance

Both min and max distance, along with stiffness and damping, can be animated for some pretty rad effects.

Hard Distance

A Stiffness = -1 means the constraint is "hard". It will not accept any slack or "springiness".

In this example, the distance is animated whilst soft, and transitioned into a hard constraint. Notice how it snaps into place once hard.

Limitation

A limitation of a hard constraint is that the distance cannot be animated whilst hard. You can however animate it between values of -1 and above, to transition to and from hard to soft.


Pin

Similar to the Soft Pin used with Rigids, this creates a new position and orientation a marker will try and reach. It's exactly what you get using Guide Space = World on the markers themselves, but with the convenience of a new transform you can animate. They will both try and pull on the marker, greatest stiffness wins!


Cascading Attributes

Sometimes, you want to tweak the overall look of an entire simulation at once, rather than tweaking or modifying individual nodes. Now you can.

All guides, limits and constraints now have their values combined with equivalent values on the solver node.

image

Edit One

Here's how you edit just a single marker or constraint.

Edit Many

And here's how you can edit them all.

Animation

Guides and Constraints can be animated, however Limits cannot.

This behavior is consistent with the rdGroup node too, here's the complete attribute hierarchy.

hierarchy2


Recording Performance

A mere 15% boost to Recording performance.

Before

After

More was expected, and odds are there's room to optimise this further. But, the bottleneck is writing keyframes which cannot happen across multiple threads. It also needs to happen alongside evaluating your rig, which is dirtied with setting of each key, else it cannot take into account the various constraints, offset groups and IK solvers happening in there.

On the upside, the more complex your rig, the more benefit you should see from this optimisation. What happens in the above examples are extremely lightweight rigs with no animation, hence the difference is minor.


Remainder

Markers are almost feature complete. Most if not all things you could do with Rigids are now possible with markers.

Except for:

  • Forces
  • Export & Import

These will be addressed in an upcoming release. The next release will focus on getting those darn shape and limit attributes out of the Channel Box and into the viewport for interactive control.