Hello,
I get a problem when reading the .x file used in C++. I think I know the concept of the skeleton
M(final) = M(skinWeight) * M(toRootBone) * M(toRootAnimation);
But I can't understand the skeleton hierarchy of .x File .
Such like this:
SkinWeights
{
FrameTransformMatrix
{
}
}
Frame Bip01 {
FrameTransformMatrix {
0.000000,0.000000,-0.147123,0.000000,0.000000,0.147123,0.000000,0.000000,0.147123,0.000000,0.000000,0.000000,0.200000,31.119664,0.000000,1.000000;;
}
Frame Bip01_Pelvis {
FrameTransformMatrix {
0.790879,6.484227,-0.702893,0.000000,5.782636,-0.606852,0.908243,0.000000,0.815851,-0.714321,-5.671677,0.000000,0.200000,31.119664,0.000000,1.000000;;
}
Frame Bip01_Spine {
FrameTransformMatrix {
0.000001,6.978283,-0.472847,0.000000,7.576138,-0.000002,-0.000011,0.000000,-0.000011,-0.512183,-7.558806,0.000000,0.200000,34.142230,0.133791,1.000000;;
}
Frame Bip01_Spine1 {
FrameTransformMatrix {
-0.275423,6.163119,0.136391,0.000000,7.509542,0.356326,-0.936851,0.000000,-0.943564,0.124167,-7.516126,0.000000,0.200613,41.120429,-0.334181,1.000000;;
}
I also know the M(x, y, z, w) x, y ,z is the direction of the skeleton and the w is the position. But why the w of child of the Bip01 is so
large. 0.200613,41.120429,-0.334181,1.000000
If it multiply the parent's ToRoot Matrix. The final Matrix is large. And it is impossible.
If you have some ideas, please tell me. I am glad to hear that.