Let me express myself.
In terms of a local space, when you have a set of canonical basis vectors for
this space describing where x, y and z are going to go. Say x is going right,
y is going up and z is going outward (Left-handed system),
and you don't translate it or rotate it
it has some sort of matrix to describe it with respect to a origin, hasn't it?
(I draw this conclusion because there is always a transformation describing the local frame of a bone in my character mesh)
say the identity matrix of
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Then the basis vectors are (1,0,0), (0,1,0), (0,0,1)
Now I got a non-canonical local space with the basis vectors pointing
into various directions.
Then the basis vectors may be pointing to somewhat different than the canonical basis vectors
How do I find those vectors?
And how can I use quaternions or matrix to transform it to turn it into a space that is canonical?
The problem I got on hand is I have a frame hierarchy which I want to map a bvh file to it.
But the frame hierarchy's local frame are oriented in many different ways, I can't tell if their
local basis vectors are canonical, because I don't know how to test them, so I can say
the basis vecs are pointing 0,1,1 for the x etc and it is rotating 1.45 radians about that axis
for example. Now I want to twist it back to the T-pose so that the frame hierarchy local transformations and the bvh local transformations match and I can copy the transformations over.
Is there a way to find this offset to twist the local transformations to identity and the basis
vectors are canonical?
I am not sure I speak all the terminology correctly.
If I am not, please correct me
BTW:
the only way I can think of to turn back a rigged character into T-pose is to perform the parent-child matrix combination process in reverse order.
Is that right?
Thanks
Jack