retargeting mocap onto non-standard proportions without destroying the feel

22 views 1 reply

spent the last two weeks fighting retargeting for a creature rig that has a torso roughly twice as long as any human reference in our mocap library. thought it'd be straightforward — just remap bones, adjust offsets, call it a day. it was not that.

the core issue is that ik targets don't care about your proportions. when you retarget a walk cycle from a human skeleton to something with a longer spine and shorter limbs, the ik solvers are still trying to reach positions that made sense in the source skeleton's coordinate space. you end up with feet that clip through the floor or hands that hover uselessly in front of the chest.

what actually helped was doing a two-pass approach:

pass one: retarget FK only, ignoring hands and feet entirely. just get the spine, hips, and shoulders reading correctly. this is mostly a scaling and rotation offset problem and a lot of tools handle it okay if you don't ask them to also do ik at the same time.

pass two: bake ik targets from the FK result, then run a separate ik solve on the destination rig. this means you're not fighting the retargeter's ik interpretation; you're letting the destination rig's own solver figure out how to reach those world-space positions.

in Blender the rough version of this is:

import bpy

# after FK bake, extract world-space hand targets per frame
hand_targets = []
for frame in range(scene.frame_start, scene.frame_end + 1):
    scene.frame_set(frame)
    mat = dest_rig.pose.bones["hand_R"].matrix
    hand_targets.append(mat.translation.copy())

# then apply those as constraints on an empty and let IK solve against it

it's not elegant and you still have to manually clean up contact frames where the hands or feet need to actually touch something, but the overall motion reads way better than letting the retargeter fumble through it.

anyone dealt with this for quadrupeds or more exotic rigs? curious whether there are better tools for the ik re-solve step. haven't tried MotionBuilder's story tool for this particular problem yet.

the two-pass FK then IK approach is what we landed on too. one addition that helped: after the FK bake, run a quick pass that scales the motion curves to match the destination rig's limb lengths. without that scaling step the IK targets end up in positions that are physically unreachable for shorter limbs and you get popping at full extension.