I run into an issue with bone roll when i want to retarget two rigs with different bone roll conventions. I actually am able to do the correct retarget by using a Python script. So, problem solved ...

However, when it comes to retarget a complete animation, then the scripted version is simply too slow. Hence i am now looking at retarget with bone rotation constraints. while this works perfect when the two rigs use the same bone roll conventions, it fail as soon as the conventions differ.

Here is an image of what i mean. The upper part shows the rigs before adding the bone copy rotation constraints (target rig is green). The lower part shows the situation after the copy rotation constraints have been enabled:

enter image description here

Unfortunately the bone roll change also propagates down to all children and it ends with the hands and fingers rotated by 90 degree (target rig is green):

enter image description here

The problem is that i can not fix the bone roll on the target rig, because that must be preserved. And i can not fix the bone roll on the source rig because that destroys the animation.

The only solution i could find so far is rather odd, that is adding bone drivers to fix the roll in the target system. But i doubt this is a correct and efficient solution as it again involves scripting the drivers... So what else can i do?


1 Answer 1


You could create a copy of the source rig bones which have a bad bone roll, adjust the roll as desired, make them child of the respective original bone and retarget from them to the target rig.

  • $\begingroup$ this is a nice and easy solution :) thanks for this! $\endgroup$
    – Gaia Clary
    Jan 23, 2022 at 18:29

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .