We were playing around retargeting to show concepts to my team and realized there might be small problems with the retargeting settings. (Also tried in 5.6)
The test was made using UEFN GameSample character and Mannequin, they don’t have the same base pose so it’s a good test case. We are using M_Neutral_Stand_Idle_Loop on the skeleton preview of UEFN and Mannequin. (We do have the same problem in our own projects when doing runtime retargeting for share character)
We would like to understand the necessity of matching reference poses for orientation retargeting. Shouldn’t the orientation from the base animation be applied to the retargeted character irrespective of the reference pose? Since retargeting option is only for translation. Even the “Animation” retargeting mode doesn’t take the base orientation without being compromised by the ref pose.
Our second observation is about “Animation Scaled”, we agree that it’s a desired setting because we might want to scale animation relative to our character size. The problem is that clavicles (_r, _l) moves even if there is no animation on the reference character. Again, just change the clavicle from “AnimationScaled” to “Skeleton” and you will see it move in translation even if there is no translation data from the animation . (And that even if I updated Mannequin to use UEFN ref pose)
Our third observation is that “AnimationRelative” applies some rotation to the retargeting. You can try by doing the same test as above.
Maybe we just misunderstand what is supposed to happen. But some clarification would be appreciated.
On the preview controller, change to Use Specific Animation and play M_Neutral_Stand_Idle_Loop on Mannequin.
Animation will be broken. (First problem?).
Change the preview mesh on the Mannequin Skeleton Preview window to SKM_UEFN_Mannequin.
Hit Asset -> Update Skeleton RefPose.
Change back the preview mesh to SKM_Manny.
Replay the animation, stop at frame 0.
Change clavicle_r/_l from AnimationScaled to Skeleton and to AnimationRelative and see the bone translate for AnimationScaled, and rotate for Animation Relative
The simple retargeting setup is really only meant for handling bonelength/translational differences. The ref pose is taken into account, specifically the orientation of the joints. If they do not match you will run into the cases you’ve mentioned. , and this is by design as this is generally a much older approach, but is useful for handling simple differences between characters. Animation Relative was added for the case you describe with some trade offs, that being that it won’t take the length delta of the bone directly into account for adjusting the animation and you need to really make sure that the ref pose is very similar proportionally. This is an older video from unreal 4, but it does go over the information and the why pretty well.
If you’re looking to handle more complex scenarios where your character skeleton hierarchy or orientations differ, you will need to explore more advanced IK retargeting.
I’ll give a bit more context. We were talking about changing our skeleton to get closer to the epic one to share sample projects, FAB content, or even anim node more easily, and at the same time, use the same ref pose so we can quickly retarget and those assets. (this is mostly for prototyping but still). Our project use humanoid biped character most of the time, so to answer your question, we are not aiming at handling complex thing, we are aiming at finding the most efficient/performant and straight forward way to share across human character (or same hierarchy) .
But we saw that the UEFN and Mannequin ref pose where not the same. The GameSampleProject did use the IkRetargeter for their needs, I guess it’s fine since it’s a tech demo. I doubt the perf is very good when a bunch of character use 2 component and 2 anim graph with the RetargetPoseFromMesh node to update their skeleton transform vs using the runtime solution.
So that’s where our question came from, if the UEFN and Mannequin have a different ref pose, then even from your own sample content, it’s not going to be sharable using the runtime solution, even if some have very similar hierarchy. Is that suggesting everything should go through IkRetargeter now and it’s performant enough to be used on multiple character at all time?
That said, we do rig and re-animate everything for our need, I was more “'thinking out loud” on my observation. We just wanted to provide more freedom to character art because having all the same ref pose can be problematic for some proportion. (Fat, vs muscular, vs thin)
From this, it just confirm that our assumption to make sure the ref poses are all the same from the DCC at export make sense, since runtime retargeting can’t/won’t support different ref pose, and IkRetargeter will/might be too expensive.
That context is helpful and makes sense, thank you! Both the complex and simple options can be baked out as well so you could make batch edits with a FK control rig to do fixups if you like as well.