Humanoid Animation Rigging vs Animation Jobs Samples (Fullbody IK, Humanstream)

As it stands, animation rigging uses practices that are a little different from the animation jobs samples.

The latter seems to be a bit more robust in terms of its implementation, especially with regards to its compatibility with the Animator built in functionality for humanoids.

One example - if any AnimationClipPlayable in the graph has FootIK enabled, it will always override any animation rigging constraints applied to the legs. In the FullBody IK component in the Animation Jobs sample, it operates on AnimationHumanStream, which allows you to make a pass after the built-in animator FootIK. Is it correct that this FullBodyIK sample also operates on the playable, before the results are written to the scene?

Second example is, the binding of scene transforms to the animator. This FullBody IK sample allows you to have a non-root animator - something that currently can't be done without a workaround. It also allows you to have dynamic effectors (instantiated in runtime). Is there a reason why the Animation Rigging hasn't made use of this functionality?

I think the animation rigging package would benefit greatly from these improvements. Please let me know if I'm missing something in my analysis, or if there are specific reasons why certain implementations were chosen.

Are there any plans to implement this functionality?

Cheers,
-K

Hi Ragoo,

[quote=“LudiKha”, post:1, topic: 764702]
The latter seems to be a bit more robust in terms of its implementation, especially with regards to its compatibility with the Animator built in functionality for humanoids.
[/quote]

Can’t say I agree with that statement. Animation Rigging is more predictive in regards to when it is scheduled to be evaluated and how it post processes results from the Animator State-Machine, Timeline or custom Playable Graph.

As for how current Animation Rigging constraints work with humanoid, mixing FootIK and constraints on legs are bound to create issues. Animation Rigging (and animation jobs) will evaluate on the ProcessAnimation stage of the evaluation loop. Humanoid IK and Foot IK always evaluate after and have their own goals for evaluating IK. For more details, refer to the execution order of systems in Unity: https://docs.unity3d.com/Manual/ExecutionOrder.html.

While constraints in Animation Rigging were implemented to support both humanoid and generic characters, the FullBodyIK character is a good example of a constraint that was tailored made to work with humanoid character. If you want to extend the Animation Rigging framework, it’s possible to write custom constraints that would work with humanoid character by setting IK goals in the humanoid stream instead of transform rotations on the FK hierarchy.

[quote=“LudiKha”, post:1, topic: 764702]
This FullBody IK sample allows you to have a non-root animator - something that currently can’t be done without a workaround.
[/quote]

There is a bug in the current Animation C# Jobs implementation which prevents you from having nested Animator hierarchies. This is a known issue. You can track the progress here if you want: https://issuetracker.unity3d.com/issues/animation-stream-binding-animationstream-handles-on-a-nested-animator-hierarchy-triggers-an-exception

[quote=“LudiKha”, post:1, topic: 764702]
It also allows you to have dynamic effectors (instantiated in runtime). Is there a reason why the Animation Rigging hasn’t made use of this functionality?
[/quote]

We avoid creating GameObject effectors at runtime as it’s not always how you want to set your constraint. Multiple constraints may use the same effectors, or constraints may use effectors that are in different hierarchies in scene, so we avoid making assumptions. Otherwise, have a look at the effectors visuals we provide in the package to customize your rig: https://docs.unity3d.com/Packages/com.unity.animation.rigging@0.2/manual/index.html

Hi, I used the animation rigging package. I used two-bone IK constraint for arms and legs. I used the multi referential constraint for the pelvis. But now, All I can do is start in T-pose in the Play mode. How can I edit an existing animation, like in the ninja demo?

I agree with homnislash regarding some example of C# interaction with Animation Rigging to provide motion.
The only one i found as a procedural test was the crane sample
thanks

1 Like