Simplify beahviour and pose space

Hello friends… So I had an idea, im curious if people feel it would be too much of a simplification.

Its basically to replace the Behaviour and Pose Space with one attribute, which at 0 is Kinematic and at 1 is Inherit.

I remember that the stumbling block when learning the tool. And the more I use the tool, Im finding I only really use kniematic or inherit.

Thoughts ? : )

Thanks for suggesting this! behaviours and pose spaces are the most complicated parts to explain and is something I’m actively looking for better way of communicating. Both through attributes and attribute names or tutorials.

I started typing up a reply, and I’ll leave this below. But it deserves more attention, so I’ll revisit this in the next few days with a better answer.

Inherit v Dynamic

First things first, when we say that a marker has a Behaviour = Inherit that means it will “inherit” whatever Behaviour it’s parent group has, which is typically Dynamic. So for the remainder of the text below, Inherit is equal to Dynamic.

Next, let’s consider what blending between Kinematic and Dynamic means.

Here’s blending between two positions with a Dynamic behaviour.

And here’s blending between the same two positions with a Kinematic behaviour.

Both have the same start and end positions, and are animated to transition between frames 10-20.

In the Kinematic case, things are simple. We know where to start, and where to end. Our animation curve is in control over the percentage between these two positions.

In the Dynamic case however, things are not so simple. :blush: We know the starting position, and we know the end. But we can’t simply interpolate between these positions anymore. Not even in this simple case. Instead, Ragdoll looks at the start and end positions and tries to figure out “what force can I apply to this real-world box, with mass and momentum, such that it takes me in the direction of the target position?”.

In the Kinematic case, there is momentum, no mass, no constraints or joints and no obstacles. So it’s trivial to figure out how to get 50% along the way. Or 25%. Or 99%. But also notice how in the Dynamic case, we don’t actually end up at the target position by frame 20. It takes another 20 to 30 frames to actually arrive.

Yeah that all kind of makes sense so far. The first video is exhibiting the kind othing Im describing.

So…. Does this mean we could remove inherit ? And just have dynamic and kinematic

When a marker is set to Behaviour = Inherit it means Dynamic or Kinematic depending on what the parent group is set to. It will “inherit” that value from the group.

Another way to think of it is that when Behaviour = Dynamic on a marker, that value will override whatever value is set on the Group. So if the Group.Behaviour = Kinematic but the Marker.Behaviour = Dynamic then the Marker will win. If the Marker.Behaviour = Inherit then the Group will win.

A typical usecase is to have your entire character in a single group, and animating the Group.Behaviour value between Kinematic and Dynamic, thus affecting all markers of that character.

That mechanic is probably not something we’d want to remove, but I haven’t been able to think of a better way to communicate it. Does this make sense so far? How would you explain it to someone else?

Ah right I understand. My confusion was that inherit is basically the same as dynamic. I think im following now.

Id still probably not explain it well : )

My adivce is to stick to inherit, unless you want full control, then set it to Kinematic

Thanks so much for taking the time to go over it all Marcus.

So returning to your original question about having just a single value between 0 and 1 - which I agree would be much simpler - what would you expect the system to do at a value of 0.5?

Let’s say 0 = Kinematic and 1 = Dynamic.

I suppose im imagining its what it looks like when the sim is baked to an anim layer.

0 being no sim. Just the keyfames. Kinematic. . And 1 having the sim. Dynsmic.

So .5 would be half of the sim layered on top.

The good news is that there can be an attribute like that. It would work exactly like that animation layer weight attribute.

The bad news however is that it would be an additional attribute, as it could not replace what kinematic currently does. Which is passing animation into the simulation.

Consider this example.

Here the manikin is animated from Kinematic to Dynamic, and then from Pose Space = Local to Pose Space = Custom, and finally back to Kinematic.

It might be useful to add this kind of attribute - e.g. Blend Simulation - but I am slightly worried it might make things even more complicated to explain. :sweat:

1 Like

Yeah i understand

I think : )

So the next thing on the map to try and address the complexity of spaces, is to remove the spaces.

That is, to leave Pose Space = Local and remove it. That would make Pose Stiffness consistent and easier to understand, as it relates to the pose, no matter where the character is in the scene or whether it’s upside down or whatever.

That’d remove the advantage of Pose Space = World, which is useful in the above case of blending from simulation back to animation. So to rectify that, I’ll add 2 new attributes.

  • Pin Stiffness
  • Pin Damping

These would work like the Pin constraint, which is exactly what Pose Space = World was. So this is mostly a renaming, but I think it clarifies the meaning of the two different kind of stiffnesses, and most of the time you can forget about Pin Stiffness (maybe even leave it hidden per default) and you’d be left with one less attribute (i.e. Pose Space) to worry about.

Does/would that make sense? :thinking: I still have yet to experiment with this myself.

Yeah for sure. Simplifying that would be helpful.

3 options for behaviour and 3 options for pose boggled my mind a little : )

And setting those two were always my first steps.Less options at the beginning are preferable to me.

So yeah sounds great !