Hi, unfortunately, this is a side effect of the new retarget from source pose pin functionality relying on the compatible skeletons system to generate the input pose that goes into the retargeter.
The compatible skeleton system is what allows us to use an animation sequence in an animation blueprint that targets a different skeleton to the one that the animation was originally authored for. In that setup, when the animation is sampled by the animation player node, the bone data has a pre-transformation applied, which accounts for differences in the ref pose between the source skeleton and the target/compatible skeleton. This is the only way that we’re able to play back animations on different skeletons to the ones that they were authored for and maintain a reasonable pose. If we just played the animation directly on the target skeleton without the compatible skeleton pre-transformation, then the animation would break the proportions/orientations of the target skeleton when applied.
But this does mean that the transforms from the animation have been modified by the compatible skeleton system. So the pose won’t be identical to the pose if the animation is played on the source skeleton. And that’s where the discrepancy in this case originates. It’s not that the retargeter is generating a different pose, it’s that the input pose to the retargeter is different when using the ‘retarget from source pose pin’ functionality (via an animation using compatible skeletons) vs using ‘retarget from source mesh component’.
You can see that to an extent in this screenshot. The overlapping meshes on the left are just playing the same animation. There’s no retarget going on, just compatible skeletons allowing the animation that was authored for Manny to be played on the Metahuman. On the right, we are using the retarget from source pose pin to retarget the animation which is already being played via compatible skeletons on the MH mesh. You can see how on the right, the retargeter maintains the proportional offsets between the different meshes that was introduced by the compatible skeleton system:
[Image Removed]Whereas in this screenshot, I’m retargeting directly from the source Manny mesh to the MH mesh. There’s no compatible skeleton offset being introduced here.
[Image Removed]Unfortunately, we don’t have a solution apart from using the retarget pose from source mesh option, or performing the retarget offline in the editor so that the source animation targets the MH skeleton directly. Long term, our solution for this is to be able to play animations on arbitrary skeletons (with no fixup) which will be possible via the new Unreal Animation Framework. However, it’ll still be some time before it reaches a point where it’s viable for use in production projects.
There are some other options here, but they would require code changes. You could add a flag onto bones in the skeleton to specify whether they should use the compatible skeleton pre-transformation or not (in a similar way to how we have flags for the ue4 style/translational retargeting per-bone). But that wouldn’t be trivial. You could also try just changing the skeleton that the animation sequence targets (‘r-click > assign skeleton’ in the asset browser) but I think that’ll probably break the animation since the Manny and Metahuman skeletons are quite different.
Happy to discuss this further if you’ve got questions.
[Attachment Removed]