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:
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):
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?