How to Correctly Apply Additive Blend Animations for Running and Spell Casting

I’m working on additive blending running and spell casting animations. When I blend these animations, the result looks odd. I believe I need to disable foot animations from the spell casting group and upper body animations from the running group to fix this. I want my character spell a cast while running and does not look so weird.

Does anyone have experience with this or know of any PlayGround examples that could help?

Here is the link to my current PlayGround (Update the Spell pose slider): https://playground.babylonjs.com/#6I67BL#506

@PatrickRyan I think you know best, how these animations work. A little guidance would be great.

@ertugrulcetin, what you need is animation masking, which we are working on but it is not in engine yet. This will allow you to mask certain bones in the animation when playing an animation. So you will be able to play one animation on the hips and legs and a different on the arms and head.

Additive animation is not going to work for this as the bone rotations for all animations playing will be added together, so you are double transforming the bind pose for these clips which is why it looks so wrong.

I am not sure when animation masking will be available in engine, so the only thing you will be able to do for now would be to split the animations for upper body and lower body so you have 4 animations.

  • Upper body run
  • Upper body cast
  • Lower body run
  • Lower body cast

Then you would play a combination of animations on your skeleton and blending weight would work as well. This is not ideal by any means, but if you need to overlay a second animation on only part of the skeleton, this is what is required at this moment. The challenge here is that there needs to be no animation on bones that aren’t part of the separated animation. Basically, from root to legs can be one set of animations and from spine1 up to head and hands can be another.

The only other option would be to create a second “moving cast” animation which is not a run, but some other movement - pirouette, hop, stutter step, etc. - for the moving cast which you can blend normally like any other clips.

I know this isn’t an ideal answer, but without masking this is not straight forward. @Evgeni_Popov might have additional thoughts.

1 Like

Thank you @PatrickRyan for detailed answer! I also found AnimationGroupMask class, isn’t this masking for certain targets (bones)? addTargetName is the bone name?

Yes, masking is already in the engine, it’s the layered animation system which is not yet. So, you can use AnimationGroupMask to apply an animation on some specific bones and not on the whole skeleton.

2 Likes

Thanks for the clarification, @Evgeni_Popov! I forgot which parts were in for sure. And sorry for the late-night ping!

1 Like