I am trying to write a script to rigging character’s hands.
I make a cube controller, use this controller to control hand’s Translate and Rotate.
Right now, controller 's local rotation axis are World XYZ.

That’s not what I want, hand joint has its own rotate orientation, to make the controller rotate the same way like hand joint, I add a parent constraint between controller and hand joint, and then delete parent constraint and add orient constraint, so controller can rotate the same way like hand joint.
But the problem is controller’s Rotate XYZ are not 0.

Why this is a problem?
Because this script will apply to different characters, and these characters’ skeletons are different too.
These two characters’ pose are nearly identical, but Rotate XYZ values are very different.


As a result, when I make controllers for these hands, controllers’ Rotate XYZ are very different.
This means that when I input same Rotate values to controllers, hands make diffrent pose.
In this case, controller’s Rotate XYZ are all 20, but pose are different.


My thought is that if controller’s Rotate XYZ are 0 after rigging, these hands will pose similar when controller Rotate XYZ are the same.
So I am looking for a way to adjust local rotation axis but keep object Rotate XYZ values unchanged.