Hello there!
I recently ran into this problem myself and found this thread. I appreciate iLef’s pull request, but it didn’t really do what I wanted it to do, so I made my own pull request which works more like @**CanadianGuy43 **'s suggestion as this was closer to what I was imagining as well. I considered adding a full duplicate of the controls as well, but decided against it when I had a look at the code. There are a lot of moving parts in the code that handles the blend crossfade duration and this crossfade itself drives their state machine objects, so adding a second duration would require heavily modifying the state machine itself or even duplicating it, which would be very bug prone.
I instead opted to only add another optional blend curve for root motion:
This “Custom Root Motion Blend” will use the transition alpha as input and output the root motion pose scale. So if you make a curve that goes from (0, 1) to (1, 1); the root motion from the next pose will be used throughout the entire transition. A curve of (0, 0) to (1, 0) would use the root motion from the previous pose throughout the transition etc.
This approach should still be able to solve the situation where you want different blend lengths for the animation part and the root motion part by specifying the duration of the transition to be max(rootblendtime, animationblendtime) and using custom blend curves for both the animation and root motion. You would simply reach target blend faster for the curve that you want to finish earlier.
Anyhow, this works for my purposes in 4.21, so anyone who is interested is welcome to use my changeset, whuch can be found on this branch:
https://github.com/Temaran/UnrealEngine/tree/4.21-BlendRootAnimationSeparately
Best regards,
Temaran