Highlight for this release is Linking and Caching, and is part 3 out of 4 of the new Markers.
- ADDED Solver Linking Run two or more solvers together as one
- ADDED Solver Caching Run once and update on-demand
- ADDED Marker Limits On par with the previous constraints, but much easier to work with
- ADDED Marker Constraints Including Soft Pin!
- ADDED Cascading Attributes Control an entire simulation from one spot
- ADDED Recording Performance A bit faster recording
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.
Distance Constraint at work.
Pin Constraint working alongside a
Distance Constraint and regular old pose matching.
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.
Markers have one part left before being considered complete, at which point they can completely succeed
Active Rigid and
Until then, here's how you can get started with Markers today.
|01:23||What are markers?|
|03:23||Overview of Input Type and Pose Space|
|03:00||Overview of the two Pose Spaces, local and world|
|02:27||The very basics or Capture and Record|
|04:08||Hierarchy and volume|
|04:05||Kinematic and animation|
|04:30||Self collisions and recording|
|03:00||Capturing the skeleton|
|01:59||Retargeting to IK controls|
|01:59||Record both Translation and Rotation|
|06:53||Fix table and elbow intersection in this dialog performance|
Reference two characters, link their solvers.
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.
This fellow is referenced twice, and get their solvers linked together.
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.
Here are 2 assets, a manikin and a backpack.
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.
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.
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!).
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.
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.
The simplest of limits, allow a limb to rotate along a single axis. Like hinges on a door.
Use this for knees and elbows.
For more complex anatomical limits, such as shoulders and hips, use the "ragdoll" limit for control over each of the 3 rotate axes.
A good place to start is to just play with default settings and get an idea of what it looks like.
In this case, we'll keep the leg from crossing over too far, and from bending too far backwards. Like a real human leg.
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.
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.
Rotationrotates both parent and child frames
Offsetrotates only the parent frame
Parent Frame is the space in which a
Child Frame is allowed to move.
You can now constrain one marker to anothe!
|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
|Distance Constraint||Maintain a minimum, maximum or total distance between two markers.|
|Pin Constraint||Match a position and orientation in worldspace, similar to
Maintain the position and orientation of one marker relative another from the first frame onwards.
A simple but versatile constraint with animatable distance.
Maintain Start Distance
Whatever the distance between two markers, it will be maintained throughout a simulation.
Alternatively, only respond to when two controls get too close.
Conversely, keep markers from getting too far away from each other.
Or go all-in, with both a minimum and maximum distance, for the most complex behavior.
Control at which point on a control to measure the distance.
Both min and max distance, along with stiffness and damping, can be animated for some pretty rad effects.
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.
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.
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!
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.
Here's how you edit just a single marker or constraint.
And here's how you can edit them all.
Guides and Constraints can be animated, however Limits cannot.
This behavior is consistent with the
rdGroup node too, here's the complete attribute hierarchy.
A mere 15% boost to Recording performance.
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.
Markers are almost feature complete. Most if not all things you could do with Rigids are now possible with markers.
- 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.