The solution is already implied in the way you’ve phrased the problem:
blend upper body animations with lower body animations
Since ABP templates are skeleton-agnostic we do not have any knowledge about “lower body” or “upper body”. The template could be used to animate something non-humanoid. So that kind of layering logic does not belong in an ABP template. In fact, any node referring to specific bones should not be used in an ABP template.
Skeleton-specific logic will have to be supplied in a child ABP of that template, either by using LinkedAnimGraph or LinkedAnimLayer.
Granted, currently ABP templates have little support in regards to overriding layers/assets in child blueprints. Hopefully Epic will improve on this and let us override layers directly in the child ABP. For now you’ll just have to link a layer manually.
Here’s my setup in my ABP template:
The layer SkeletonSpecific can then be linked in the concrete child ABP like so:
Or alternatively in C++ in your AnimInstance subclass:
void UMyAnimInstance::NativeBeginPlay()
{
LinkAnimClassLayers(MyDefaultAnimClassLayer);
}
This approach works in principle, but being forced to introduce another layer of linked instances just to override the templates layers is extremely annoying.
As soon as you try to create a nested linked layer (i.e. a layer within a layer) you now have to find the correct anim instance before the link will work. This can result in very hard to track bugs. Honestly I am switching back to plain ABPs until it’s possible to override layers in the child ABP of a template.