IK Retargeter is not retargeting IK bone information

I’m trying to retarget a set of animations designed for the UE skeleton to my character’s skeleton. My skeleton has the same structure with some extra bones and information transfers well to the deform bones so the animation looks good. The source animations have animated IK bones, however I cannot seem to get this information to transfer to my skeleton’s IK bones. I’ve tried a few different set ups for the IK Rigs and Retargeter so far, and it has only yielded some rotation information on the IK bones. I’m not certain that these rotations are correct, they look a bit funny.

I’m using Advanced Locomotion System as a template for movement on my custom skeleton, the ik_foot bones determine foot planting during locomotion and idle. Without this info the feet will just stick to the ground at all times. There are a few work arounds I’ve thought of / read about, but none are ideal:

  1. Retarget using the legacy retargeting method in UE4 then transfer over to UE5. This might work but I find the IK retargeting really helpful in producing better retargeting results than the legacy method.

  2. Blend out the IK foot placement when the character is moving. This works but looks a bit janky at times and you lose foot placement on slopped surfaces while in motion.

  3. Bake the retargeted animation to a full fk control rig, copy the information from the bones in question (feet, hands, etc.) to their respective ik_bone controls. Then created a linked animation sequence and use that instead. This would effectively regenerate the ik_bone info. Not sure if the animation would be 100% preserved through this process and it might lose curve information as well.

On a side note: The IK Retargeter is not applying base poses to additive animations (about half of them had the correct base pose and the other half just had no base pose). The Retargeter also seems to have trouble copying animation curves to new animation assets, it would occasionally duplicate some curves and omit others. I think both of these things are simply bugs, and had to be fixed manually.

Ideally the IK bone information loss problem is just a bug that’s fixed in future patches but I’m not sure if this is just user error since I’m not an animator by trade. Does anyone know how to use the IK Retargeter to get IK_bone information to transfer properly?

Here is the IK Rig set up that got some rotation information (though it seemed to be bad rotation information).


8 Likes

Use virtual bones,but it seems that only the Ik bones of the feet can be created, and the hands cannot be created because the conversion channel of the root bones is already occupied

Before retargeting, click on root bone and set translation mode to ‘globally scaled’.

2 Likes

Applying globally scaled to the root had no effect, but setting the IK bones themselves to globally scaled did produce some results but it caused the IK bone to match the source instead of the target (my mesh). Since my foot was a little bit smaller than the source, it produced a miss-match in the translation. Either that or the foot IK of the retargeter was the culprit. Either way, the better solution appears to be using virtual bones.

Though the virtual bones had their own issue which I do not understand. I had created virtual bones pre-emptively and then retargeted the animations. For whatever reason, these virtual bones did not move with the skeleton, they just kept their initial positions. I then deleted the virtual bones and re-created them exactly as they were before (naming was the same as well). These bones moved with the skeleton. It’s working now, so I guess that’s all that matters

1 Like

It is good to know you found a solution. There is something not very clear with these new IK solvers, mainly in the Lyra Starter Game. If you play as UE4 Mannequin (TinplateUE4), in a vanilla game, you’ll notice the hands lags to follow the weapon’s position. I assume that the logic of using an invisible mesh driving animation works only for fast-pace, multiplayer games. Also, I noticed retargeting average and short height metahuman causes stretching in spine and shoulders, which doesn’t look good. I hope Epic will explain better how to take advantage of the new retargeting system in a live stream.

Unfortunately, the solution was a bit premature. It was working last night, all virtual bones were functional and so were the foot ik mechanisms driving the foot placement. However, almost all virtual bones stopped working when I opened up the project today. This is true for all animations except for the forward walk animation, which maintains proper virtual bone movement during the animation. In all other animations, the virtual bones behave oddly, the feet virtual bones don’t move from their original positions, but the hand virtual bones still move properly.

Walk animation where the virtual bones are still working:

Strafe animation where the feet have stopped working:

And then to thicken the plot, I remade a new walk forward animation to see if it was consistent. It wasn’t, not only did the feet stop working but the hand iks stopped working as well:

It looks like the origin of the hand ik bones moves with the skeleton since they are children of the hands, but the targets of those hand ik bones (the other hand) do not update their position. The foot ik system is parented to the root, and since it doesn’t update the end position of the virtual bone, they never move. I don’t know why the virtual bones would exhibit this behavior and I definitely don’t understand why it would change from last night.

VB Curves = targeting root
VB ik_foot_root = targeting root
VB ik_foot_l/r = targeting foot_L/R
VB ik_foot_l/r_Offset = targeting foot_L/R
VB ik_knee_target_l/r = targeting calf_L/R
VB foot_target_l/r = targeting foot_L/R

I’ve tried to delete and create the bones since that worked last night but that did not do anything this time around. I’ve opened and closed the project a few times but noticed no changes in behavior. Virtual bones don’t really seem to have any settings, I’m not sure how I’d have user error with them since there is nothing really to tinker with. Is this just pure bug territory?

1 Like

This is really concerning and looks like a bug issue. Can you show a print screen of your IK Rig and IK Retarget? Those are still the same from your previous post? Are you updating the IK goal locations before retargeting? The tricky is the ‘foot IK goals’ and ‘hand IK goals’ take the world space location of toes (balls) and hands, which can be taken from the skeleton pane. There, change the location to world space and copy & paste. Based on your previous screenshot, your foot goals are taking location of feet bones rather than toes.

From my initial attempts, I noticed I couldn’t create both IK hands and Ik feet at the same skeleton. Maybe I missed something in that time. I’ll run my own tests next week and share here what I find.

1 Like

The IK rigs are the same as the one in the first post of this thread. To elaborate on the IK / goals set up, I opted for using 4 limb IKs. Using a full body IK caused the clavicles to move too much and produced some poor looking animations for the arms. I isolated the clavicle from the arm chain and make a limb IK that goes from the upperarm to the hand. Originally I had the leg chain go from thigh to toes, with a IK goal on the toes. It produced some foot placement issues, though I don’t remember enough about what exactly it did (I think the heel was lifting off the ground at odd times). I ended up doing something similar with the arms, isolating the toes from the leg chain and making a leg IK from thigh to foot. I found this set up got the best behavior from the IKs and it produced animations that are nearly identical to the source animations. I did get some issues with the feet IK until I set the hinge axis in the IK Rig → Limb IK → Two Bones → Hinge Rotation Axis. I did this for the arms as well, though they rotated around the Z axis based on my skeleton’s set up.

Limb IK 3/4 (feet) IK Rig settings:

As far as the IK Retargeter goes, I just use default settings for all the IKs. I only adjust the base pose of my skeleton and fix the toes chain mappings (the auto chain mapper doesn’t know toes == ball, so it instead attributes it to the thigh). I have tried the animation retargeting with the blend to source of the feet set to 1. Since my heel isn’t as high as the mannequin, my foot raises a bit. I used the z offset to correct it and get it back on the floor. This produced results nearly identical to what the foot IK gives me with blend to source set to 0, so I just turned it back off / deemed it unnecessary.

Arm IK Retargeter settings:

Leg IK Retargeter settings:

The project settings are very simple, I basically just started the project in UE5. All it has in it is Advanced Locomotion System V4 from the UE Marketplace and my custom mesh from Blender. I’m not sure why, but you can’t add ALS directly to a project, so I had to make a 5.0 project for ALS and then migrated the folder over to my project. ALS is working just fine, so I think the migration happened without issue.

1 Like

Your IK setup seems to be very detailed. I believe now you start getting more refined retargeting. From what I’ve learned so far, the new retargeting system will make better retargeting for custom characters, even with different body proportions and binding poses.

Your project setup sounds like an interesting project. ALS is my all-time favorite for locomotion. Keep up the good work.

A virtual skeleton is just a storage space for converting data and calculations, not an actual bone, so don’t select it when redirecting. In fact, I have a better solution, delete the virtual skeleton and then use the controller rig

Don’t select an IK bone when redirecting, as you don’t actually have an iK bone

I’ve abandoned trying to get ik_bone data from the source skeleton, and have since removed the actual ik_bones from my rig in Blender. The problem I’m having now is virtual bones don’t appear to function on the rig, which is unrelated to the retargeting process. The virtual bone for my rig do not follow the rig’s motion, they just stay in their initial positions. I’ve since retargeted other animations from a different source (not ALS) and the virtual bones still do not work. I have been unable to resolve the problem so far

The first VB must be attached to the root bone. Does your rig have a proper root bone or it is the Armature renamed as root?

The rig has a proper root bone in Blender, but the armature is name Armature in Blender as well. I guess I could try to re-name the armature to rule out that name change being a issue. The skeleton in unreal does oddly capitalize the Pelvis bone, even though its lower case in Blender.

Blender armature set up:
image

Try to import the UE4 Mannequinn to Blender and study its bone hierarchy.

the IK Rig"IK_UE4_Mannequin" and IK Retargeter"RTG_UE4Manny_UE5Manny" have the same ik-bone issue when retargeting the “Jog_Fwd” Animation Sequence. These assets are all from the UE5 new Third Person Template Content Pack.

2 Likes

Great to know, so that suggests this retargeting system is still in ‘beta’.

I’m having the same problem! Did you ever come up with a good solution?

Unfortunately no, my assessment has been the issue is a bug in UE5 skeleton or the IK Retargeting system. I’ve since submitted a bug report but have not heard anything about it, it might get more traction if more people submit the same bug. I have not tried my most recent post about re-naming the armature in Blender. I’ve basically tabled the issue until later and have been working on level design as of late. My hope is by the time I need to start animating again, the bug (if it exists) will have been fixed in a future patch.

Jeez, I hope not! Thanks for the reply, though. I’m going to play around with the IK Retarget today, and I’ll let you know if I find a solution.