Using layered blend per bone doubles the root motion translation

I’m not sure if this is a bug, but if you use Root Motion for Everything and on the anim graph you use layered blend per bone (in my case i used spine_01 with 0 blend depth) with 2 walk animations (with root motion enabled) on Base Pose and Blend Poses 0, when you play the game you walk twice as fast. It’s like the root motion translation is being added from both animations instead of just using the speed from the Base Pose. Is this the intended behavior?

Hi -

Thank you for your report. We have assigned this issue to a member of our support staff, and they will begin investigation as soon as possible. If we are unable to reproduce the issue, or we need additional information, our staff member will comment here with additional questions. Otherwise, we will post an ‘Answer’ once we have logged the issue in our bug database or we have a solution for it.

In the meantime, please be sure to review our suggestions for how to report a bug, and feel free to edit your post if you have additional information to provide:

Thank you -

Eric Ketchum

Hi xkar8or,

I was able to recreate your issue, however, due to the nature of root motion taking control over capsule movement first with the first animation than adding to that movement with the second animation, the result would be expected.

If you can describe what you are ultimately trying to do by setting this up that way, we may be able to suggest a workaround.

Thanks

I’m trying to have 2 state machines, one for the upper body and another for the lower body connected with a Layered blend per bone, because there are certain animations that i want to use the bottom part and have a different upper part (anim montages doesn’t do what i want). The problem is when sometimes i want to use the same animation in top and bottom and with that i get the doubled root motion. I can try duplicating animations and remove root motion on the upper one, that might work.

Please try duplicating animations as you described and post whether that works or not. If not, I’ll try to find another solution. Thanks.

My biggest problem is that i’m doing a multiplayer game and according to the documentation it’s not recommended to use Root Motion for Everything. I have so many movement animations with different speeds that making them all look 1:1 with the character movement would be very troublesome.

You wrote: “The problem is sometimes i want to use the same animation in top and bottom and with that i get the doubled root motion.” If I understand you correctly, in these cases you would use a just that single animation designated as a separate state in the state machine (not blended/combining the same animations) -but only for these special situations.

I use the top and bottom state machines for stabilization purposes. The animations i have were made for third person shooters and i’m doing a full body experience fps. The problem is that the animations from that perspective move too much in the upper part, so my idea was create the top part with the weapon idle to stay steady and the bottom part does the walking/running, except for the sprint where both parts are the same.

Since you are “doing a full body experience fps” I think the best way to set it up is like they do in the Shooter Game, which is set up to be a multiplayer game. -Except where they have arms (only) you would use full body (no head) and make your camera stationary like in the FPS Blueprint Template instead of bobbing up and down with the body animations. Then make your FPS assets visible only to player.

The problem is mainly the arms, they swing a lot, that’s why i was trying to use the idle animation for the top part.

Previously you wrote: “[The problem] is that the animations from that perspective move too much in the upper part, so my idea was create the top part with the weapon idle to stay steady and the bottom part does the walking/running, except for the sprint where both parts are the same.”

This sounds feasible: You would use a blend per bone node to blend your idle (top) animations and (locomotion) bottom animations for walking/running and while aiming your rifle, using in-place animations with the character’s capsule driving the movement.

When the character breaks into a sprint you would enter a sprint state in the state machine with just a single sprint with rifle animation, (using root motion if desired but not necessary.) In other words, whatever you use to initiate a sprint could also cause the capsule speed to increase and thus, cause the character to sprint. (The same way you blend from idle_walk_run, you can blend bewtween idle_walk_run_sprint)

As for the issue of “so many movement animations with different speeds that making them all look 1:1 with the character movement would be very troublesome.” You can easily change the rate of playback on any animation, making a copy and keeping the original if need be.

If you need further recommendations on how to approach this, I recommend posting on our where there are many animators that are likely using similar assets and have run into similar issues.

I dont have a state for sprint, i use a blendspace for all the locomotion. Either way, i apply the layered blend per bone after both state machines execute, so when i sprint both top and bottom will play sprint and with that it applies the double root motion.

Right now the only way im seeing to fix this is to duplicate all the animations on the top and disable root motion for them.