Ephemeral rigging spotted in the wild!

Do you recall that bygone time, the halcyon days of about four months ago? I made a promise then, as a foolish young man. Specifically, I promised I’d keep updating this blog on a regular basis.

And then, uh, I didn’t.

In my defense, the reason why I didn’t is that super exciting things are happening! Unfortunately, I can’t tell you about any of these super exciting things yet. So instead, let's talk about some sightings of ephemeral rigging in the wild!

Both UE and Cascadeur are using forms of ephemeral rigging! In both cases we have methods of manipulating the character that are instantaneous (ie. they modify the characters pose but don’t create relationships that persist in the scene). In the case of Unreal, those are Proxy controls, while Cascaduer seems to generally operates on the principle that posing and interpolation are separate concerns. But neither of them are really the same thing as the ephemeral system that Tagore and I are building.

This has caused me to think a lot about how to identify the differences between the systems. When other systems mostly weren’t ephemeral*, it was easy to put all the concepts we’re playing with under the heading of “ephemeral rigging.” But clearly, the term “ephemeral” isn’t quite enough to describe what our ephemeral system is trying to achieve anymore, since these two systems satisfy some of the ways I’ve previously defined the term while accomplishing something very different. This also comes as we’re abandoning the term “interpolationless.” The problem with “interpolationless” is that it’s not really true–sure, we’re not doing continually recalculated interpolation using curves like most animation systems, but interpolation still occurs when you drag the breakdown slider or generate inbetweens.

So here’s what I’ve come up with: In addition to being ephemeral, our system is also contextual, stateless, and multi-pose.

It’s contextual because all rig behavior depends on context–context in this case meaning modes, options, and current selection. Unreal’s proxy controls would be an example of something that’s ephemeral but not contextual–you author the ephemeral aspects of the rig to behave in a specific, predefined manner. In our system, you don’t define any specific behavior in response to a particular interaction–instead, you define a web of possible relationships between the controls in your rig, and what actually happens depends on context.

One really important point about this is that it lets you define a lot of quite complex rig behavior very simply–there are so many possible permutations to your web of possible relationships that a single contextual rig basically “unfolds” to hundreds, or possibly thousands in extreme cases, of conventional rigs.

Our system is also stateless because there is no rig state that changes over time. Cascadeur would be an example of a system that allows for ephemeral interaction, but is not stateless–you can manipulate your character ephemerally (with the assistance of machine learning, in this case) but you are still choosing specific states of the character that affect its behavior over time (ie. setting an IK key).

One of the things that people find most difficult to get their heads around when I demo ephemeral rigging and animation is that statelessness implies that nothing is ever “set” in the rig. When setting glue groups, for instance, you do not say “these controls are glued together at this particular time”. You just glue them together, and when you’re doing something that requires them to not be glued, you turn it off. This is vastly more flexible then a system that changes state over time, as it does not lock you into any particular assumptions about what should be attached to what at what time.

And finally, being multi-pose means that interaction can occur across time. Like this:

That’s the latest version of the ephemeral system, moving multiple poses at once! And that works for any ephemeral behavior. As an example, take a look at this video of me polishing motion ephemerally:

We’re finally starting to approach the workflow I’ve always been aiming for–one where you can “sculpt” motion directly as easily as you can pose!

These attributes have some interesting interactions. For instance, a rig can’t be entirely contextual unless it’s also stateless–if you have state changing over time then that would need to override the context of your settings and selection in some way in order to be reflected in the rig’s behavior. And while multi-pose editing of dense animation data is possible with a rig that isn’t contextual or stateless, it would be pretty awkward. You really need all three to get the full benefit of the approach we’re taking.

* You can make an argument that FBIK and even Biped could be considered sort of ephemeral given this definition, as they also evaluate the rig on interaction in a way that can differ from how the rig interpolates. Defining things is hard!