How to tell an animation to be LowerBody only?

I’m using a marketplace asset called SmartAI which utilizes a very complex system in the AnimBP to blend between various states and poses. It’s also already set up to use caching and upper body, full body animation states.
Smart AI Anim Graph:


Smart AI State Example:

I’m trying to simply add in my own Jetpacking state but the problem I’m running into is that it’s using this animation as a full body anim rather than lower body only.
JetpackBlend

How does one tell a specific blend space or animation to be Lower Body only?

1 Like

Hey @TorQueMoD,

To make an animation only affect part of the skeleton, you’ll want to use a Layered Blend Per Bone node. You can see these nodes being used to great effect in the AnimBP of your marketplace asset. Essentially, you want to get the cached upper body and blend that with the full body animation of your jetpacking.

In this case, try setting your BS_Jetpack as the base pose and your Upper Body Cache as the blend pose, with a blend weight of 1.

You can read more about blend nodes here. When working with marketplace assets, it is often a good idea to reach out to the creator as well; they may be able to assist further.

I hope this information helps, and good luck!

Thanks for the reply. Yeah, I’ve watched a video on how to do this, but I’m still confused. I thought the caches could only be used in the AnimGraph. If I try to use it inside the Jetpacking state, I get errors. Either “Infinite recursion detected” or if I use the Upper Body Slot instead of the cache, I get “Source was visible but ignored”


Hey @TorQueMoD,

My apologies, I missed the part where you are making a new state machine. I will look into this further and get back to you as soon as I have more information.

Thanks. I was thinking maybe I could use a blend by bool and use the same bool that triggers the Jetpacking state, but I’m not sure how to set it up properly in the AnimGraph so that it uses the rest of the animation as normal when not jetpacking.

I’m pretty sure in an anim montage you can tell it which slot you want to use (upper body, lower body etc). Is there no way to do this with an anim file so the engine knows to only use the lower portion of the animation? I assumed this would be a lot easier to achieve.

Hey @TorQueMoD!

Your blend poses in the node are specifically the poses you want to combine, the top pose being your base pose. You can select bones you want to manipulate in your details panel when “Layered blend per bone” is selected.

What you are missing from your slot “upper body” is your source animation.

Here is a fantastic non-Epic affiliated video that breaks that node down and how to apply it:

Layered Blend Per Bone | Adv. Anim Application [UE4/UE5]

I hope the above solution works for you!

Thanks Quetz,
Yeah, this is all stuff I’ve already watched a half dozen times, but I must be missing something.
So if I ignore all of the setup from this marketplace asset with the FullBody, UpperBody, Left and Right Arm caches and just use my own Layered blend per bone node with spine_01 set as the bone, Locomotion Cache as the base pose and a Local Space Ref Pose as the Blend Poses 0, it actually works. My Jetpacking animation will only use the lower body and the upper body remains in an A pose. However, I can’t get this to work with his caches. As soon as I leave the AnimGraph as he has it set up, the Jetpack animation plays as if it’s a full body animation. But in this asset, his characters are using upper and lower body animations because the characters will walk and reload or fire their guns at the same time. I just can’t for the life of me figure out how he’s achieving this, and he’s not replying to my support questions about it.

I was overcomplicating things. I thought that you always had to use a State Machine to transition to different states, and while that can be true of full-body animations, if you’re using a layered blend per bone, then you need to set things up inside the Anim Graph.
So what I did was added my blend space to the anim graph and saved that as a cache, then used BlendPosesByBool to switch between using the Jetpack’s lower body animations, or the regular full body ones as the default state which becomes the lower body animation set when using the UperBody cache.