• Advertisement
Sign in to follow this  

Rotation issues after matrix multiplication

This topic is 2257 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Guys, i have a big headache with this here,

i am exporting bone transformation matrices from max to finally finish the animation system in the engine.

There is one small problem, when doing multiplication - or there is something i understood wrong.




Let's say my model ( Sphere) has one bone in the center as per below:

indoor20.jpg




Now, i store transformation matrices per frame so when animating, my vertex positions are multiplied by transformation matrix of the blended bone at current frame,

and then everything is multiplied (in shader) with the model transformation matrix.




I've seen something like this somewhere on the net:




The transform matrices that we get from the bones are going to have world-space modifiers
applied to them (GetObjTMAfterWSM()).

What we need to do is to obtain the "inverse" of the matrices. By later multiplying the
inverse of the matrice by the original it reverses any world-space
modifiers and brings us back to object space.

[/quote]






Taking this into consideration, this is what i do:




Export scenario:




- Grab the bone Transformation Matrix at frame 0, inverse it



pMatrixBoneInverseMatrix = m_vBones->GetObjTMAfterWSM(0);

pMatrixBoneInverseMatrix.Invert();



- Grab the bone Transformation Matrix at frame X



Matrix3 mMatrixBoneTransformationAtFrame = m_vBones[iBone]->GetObjTMAfterWSM(iFrame * GetTicksPerFrame());



- Multiply Bone Transformation Matrix from frame 0 by Bone Transformation Matrix from frame X




// mTransform translation values get crazy when there is rotation in bone

Matrix3 mTransform = pMatrixBoneInverseMatrix * mMatrixBoneTransformationAtFrame




This works well when i my animation doesn't contain rotations.
Here are some helpful dumps.


1) Animation with translation only returns correct results, dump below:



+ [GeoSphere01] Physique.Bone.Bone01 - name exported
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 0 <Translation: 0.000000,0.000000,0.000000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 1 <Translation: 0.000000,0.000000,2.520000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 2 <Translation: 0.000000,0.000000,9.359999 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 3 <Translation: 0.000000,0.000000,19.440001 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 4 <Translation: 0.000000,0.000000,31.679998 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 5 <Translation: 0.000000,0.000000,45.000000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 6 <Translation: 0.000000,0.000000,58.320004 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 7 <Translation: 0.000000,0.000000,70.559998 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 8 <Translation: 0.000000,0.000000,80.639999 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 9 <Translation: 0.000000,0.000000,87.480003 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 10 <Translation: 0.000000,0.000000,90.000000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 11 <Translation: -1.087494,0.000000,88.767502 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 12 <Translation: -4.200012,0.000000,85.239998 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 13 <Translation: -9.112488,0.000000,79.672501 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 14 <Translation: -15.600006,0.000000,72.320000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 15 <Translation: -23.437500,0.000000,63.437500 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 16 <Translation: -32.399994,0.000000,53.280003 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 17 <Translation: -42.262512,0.000000,42.102501 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 18 <Translation: -52.799988,0.000000,30.160002 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 19 <Translation: -63.787506,0.000000,17.707500 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 20 <Translation: -75.000000,0.000000,5.000001 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 21 <Translation: -86.212494,0.000000,-7.707499 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 22 <Translation: -97.199997,0.000000,-20.160000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 23 <Translation: -107.737503,0.000000,-32.102501 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 24 <Translation: -117.600006,0.000000,-43.279999 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 25 <Translation: -126.562500,0.000000,-53.437500 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 26 <Translation: -134.399994,0.000000,-62.320000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 27 <Translation: -140.887497,0.000000,-69.672501 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 28 <Translation: -145.800003,0.000000,-75.239998 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 29 <Translation: -148.912506,0.000000,-78.767502 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 30 <Translation: -150.000000,0.000000,-80.000000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 31 <Translation: -148.912506,0.000000,-79.419998 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 32 <Translation: -145.800003,0.000000,-77.760002 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 33 <Translation: -140.887497,0.000000,-75.139999 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 34 <Translation: -134.400009,0.000000,-71.680000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 35 <Translation: -126.562500,0.000000,-67.500000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 36 <Translation: -117.600006,0.000000,-62.720005 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 37 <Translation: -107.737503,0.000000,-57.460003 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 38 <Translation: -97.200012,0.000000,-51.840004 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 39 <Translation: -86.212509,0.000000,-45.980003 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 40 <Translation: -75.000000,0.000000,-40.000004 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 41 <Translation: -63.787506,0.000000,-34.020004 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 42 <Translation: -52.800018,0.000000,-28.160002 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 43 <Translation: -42.262512,0.000000,-22.540003 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 44 <Translation: -32.399994,0.000000,-17.280001 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 45 <Translation: -23.437500,0.000000,-12.500001 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 46 <Translation: -15.600006,0.000000,-8.320001 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 47 <Translation: -9.112488,0.000000,-4.860000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 48 <Translation: -4.200012,0.000000,-2.240000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 49 <Translation: -1.087494,0.000000,-0.580000 / 0.000000 -0.000000 -0.000000 1.000000 >









2) Things get weird if i add rotation to the sphere, dump below ( see translation values they grow up to 600 even! )



+ [GeoSphere01] Physique.Bone.Bone01 - name exported
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 0 <Translation: 0.000000,0.000000,0.000000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 1 <Translation: 0.223053,0.000000,14.834320 / 0.000328 -0.018109 0.018109 0.999672 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 2 <Translation: 3.354431,0.000000,57.002029 / 0.004933 -0.070062 0.070062 0.995067 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 3 <Translation: 15.855774,0.000001,122.058395 / 0.023317 -0.150909 0.150909 0.976683 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 4 <Translation: 46.266052,0.000004,202.911880 / 0.068038 -0.251812 0.251812 0.931962 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 5 <Translation: 102.552063,0.000008,288.348511 / 0.150812 -0.357865 0.357865 0.849188 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 6 <Translation: 188.744293,0.000014,362.822418 / 0.277565 -0.447798 0.447798 0.722435 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 7 <Translation: 301.595642,0.000023,408.384064 / 0.443523 -0.496800 0.496800 0.556477 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 8 <Translation: 428.686066,0.000032,408.869751 / 0.482691 0.630421 0.369579 -0.482691 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 9 <Translation: 549.468018,0.000042,355.291779 / 0.393841 0.808041 0.191959 -0.393841 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 10 <Translation: 639.853271,0.000049,250.274902 / 0.235698 0.940961 0.059039 -0.235698 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 11 <Translation: 675.084351,0.000051,112.048393 / 0.032424 0.998948 0.001052 -0.032424 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 12 <Translation: 642.071777,0.000050,-31.180161 / 0.178206 0.032836 0.967164 -0.178206 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 13 <Translation: 546.762146,0.000044,-151.663940 / 0.355388 0.148291 0.851709 -0.355388 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 14 <Translation: 408.130463,0.000035,-227.766937 / 0.467304 0.322161 0.677839 -0.467304 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 15 <Translation: 252.485626,0.000025,-249.769623 / 0.481596 0.499661 -0.499661 0.518404 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 16 <Translation: 105.811829,0.000015,-221.182007 / 0.298547 0.457621 -0.457621 0.701453 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 17 <Translation: -12.695648,0.000008,-155.621719 / 0.154271 0.361208 -0.361208 0.845729 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 18 <Translation: -93.748230,0.000003,-71.216110 / 0.059782 0.237083 -0.237083 0.940218 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 19 <Translation: -137.399246,0.000001,14.886925 / 0.012354 0.110460 -0.110460 0.987646 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 20 <Translation: -150.000000,0.000000,89.999939 / 0.000000 0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 21 <Translation: -144.784607,15.218539,145.173615 / 0.007312 -0.110912 0.110407 0.987651 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 22 <Translation: -129.789551,55.804020,178.793625 / 0.017485 -0.244119 0.235481 0.940558 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 23 <Translation: -102.252777,110.565613,195.318329 / 0.010324 -0.394805 0.350136 0.849368 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 24 <Translation: -59.601852,164.582932,201.924484 / -0.030808 -0.553967 0.417086 0.719869 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 25 <Translation: -5.160080,201.874878,206.981659 / -0.109247 -0.703278 0.398354 0.578600 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 26 <Translation: 49.626190,210.084564,216.401535 / 0.917990 -0.319309 0.108109 -0.208921 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 27 <Translation: 88.513710,185.465927,229.872406 / 0.034998 0.099892 0.992109 0.067203 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 28 <Translation: 98.200729,135.107300,240.369720 / -0.110258 -0.254170 0.945981 -0.168407 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 29 <Translation: 75.653374,74.312080,238.589264 / -0.329515 -0.643295 -0.356590 0.591975 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 30 <Translation: 29.724976,20.000019,219.853149 / -0.264301 -0.440961 -0.440960 0.735699 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 31 <Translation: -19.930954,-16.255831,182.980164 / -0.175883 -0.241343 -0.410304 0.861667 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 32 <Translation: -56.376755,-31.720451,132.902817 / -0.094431 -0.092580 -0.299197 0.944983 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 33 <Translation: -74.319092,-31.181686,81.126846 / -0.038035 -0.014040 -0.164073 0.985615 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 34 <Translation: -75.412994,-22.609947,35.659370 / -0.008805 0.006092 -0.052972 0.998539 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 35 <Translation: -64.984161,-12.891096,-0.712730 / 0.001382 -0.003723 0.012134 0.999919 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 36 <Translation: -48.700958,-5.730233,-28.783466 / 0.002499 -0.017061 0.034470 0.999257 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 37 <Translation: -31.039246,-1.853891,-50.285591 / 0.001238 -0.020498 0.030304 0.999330 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 38 <Translation: -15.308716,-0.359720,-66.192055 / 0.000304 -0.013887 0.016572 0.999766 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 39 <Translation: -4.180023,-0.021524,-76.372955 / 0.000022 -0.004405 0.004610 0.999980 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 40 <Translation: 0.000000,0.000026,-79.999977 / 0.000000 -0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 41 <Translation: 0.000000,0.000026,-77.759979 / 0.000000 -0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 42 <Translation: 0.000000,0.000026,-71.679977 / 0.000000 -0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 43 <Translation: 0.000000,0.000026,-62.719986 / 0.000000 -0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 44 <Translation: 0.000000,0.000026,-51.839985 / 0.000000 -0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 45 <Translation: 0.000000,0.000026,-39.999985 / 0.000000 -0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 46 <Translation: 0.000000,0.000026,-28.159981 / 0.000000 -0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 47 <Translation: 0.000000,0.000026,-17.279980 / 0.000000 -0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 48 <Translation: 0.000000,0.000026,-8.319980 / 0.000000 -0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 49 <Translation: 0.000000,0.000026,-2.239979 / 0.000000 -0.000000 0.000000 1.000000 >






3) Animation with Rotation only dump below,



+ [GeoSphere01] Physique.Bone.Bone01 - name exported
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 0 <Translation: 0.000000,0.000000,0.000000 / 0.000000 -0.000000 -0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 1 <Translation: 0.500458,-10.908937,-2.040618 / -0.000250 0.019115 -0.019118 0.999634 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 2 <Translation: 3.982544,-42.277386,-7.724289 / -0.003786 0.073912 -0.074070 0.994503 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 3 <Translation: 15.707733,-91.321114,-15.901518 / -0.018018 0.158735 -0.160387 0.974040 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 4 <Translation: 42.669098,-153.244629,-24.096876 / -0.052975 0.262722 -0.271157 0.924470 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 5 <Translation: 91.351257,-220.068848,-27.852432 / -0.118406 0.366841 -0.395567 0.833627 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 6 <Translation: 164.798737,-280.231506,-20.879972 / -0.219851 0.443621 -0.518359 0.697259 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 7 <Translation: 259.638885,-319.639038,3.396965 / -0.354352 0.461694 -0.620863 0.525169 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 8 <Translation: 364.400696,-324.464752,48.873985 / 0.306018 0.761464 0.412372 0.395570 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 9 <Translation: 460.623962,-285.264099,113.294762 / 0.192914 0.929768 0.204139 0.237998 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 10 <Translation: 527.411499,-201.120499,186.123734 / 0.007934 0.999904 0.006639 0.009218 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 11 <Translation: 548.337341,-82.010864,249.694397 / -0.226079 0.931584 -0.147872 -0.243254 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 12 <Translation: 517.885071,52.148937,284.295990 / -0.384351 -0.229559 0.812045 -0.374379 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 13 <Translation: 444.144348,176.131546,275.623932 / -0.247553 -0.218975 0.919826 -0.211394 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 14 <Translation: 346.026001,266.395386,221.169495 / -0.489915 -0.575823 -0.068860 0.650899 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 15 <Translation: 246.107727,307.893646,132.117676 / -0.312351 -0.462365 0.025728 0.829454 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 16 <Translation: 162.596451,298.045227,29.497021 / -0.153796 -0.278539 0.057433 0.946290 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 17 <Translation: 104.195404,246.432571,-63.584278 / -0.036514 -0.079675 0.028238 0.995752 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 18 <Translation: 69.751160,170.676819,-129.797470 / 0.032864 0.085831 -0.044124 0.994789 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 19 <Translation: 51.833618,90.470299,-162.049057 / 0.060935 0.190493 -0.132417 0.970806 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 20 <Translation: 41.660645,22.187078,-163.229477 / 0.061216 0.230549 -0.208515 0.948484 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 21 <Translation: 32.844543,-24.228352,-142.399811 / 0.047612 0.219401 -0.250899 0.941619 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 22 <Translation: 22.807373,-45.692711,-109.840767 / 0.030348 0.177126 -0.248534 0.951807 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 23 <Translation: 12.214508,-44.489342,-73.115219 / 0.015062 0.121287 -0.200693 0.972001 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 24 <Translation: 3.562164,-26.142368,-35.162067 / 0.004288 0.061803 -0.114153 0.991530 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 25 <Translation: 0.000000,2.141183,5.630895 / 0.000000 -0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 26 <Translation: 5.225006,35.812893,53.719090 / 0.006193 -0.070956 0.136304 0.988103 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 27 <Translation: 24.405151,74.240921,108.599998 / 0.029234 -0.151961 0.291915 0.943843 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 28 <Translation: 62.363098,114.180351,165.639435 / 0.074962 -0.236190 0.453717 0.856000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 29 <Translation: 121.964294,151.153809,218.443039 / 0.146856 -0.314215 0.603601 0.717892 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 30 <Translation: 202.893250,179.858261,259.437225 / 0.244555 -0.374861 0.720101 0.530214 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 31 <Translation: 300.800232,194.967926,281.016083 / 0.811127 0.211818 -0.406899 0.362821 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 32 <Translation: 407.198425,192.214325,277.083496 / 0.208912 0.829390 0.327739 -0.401317 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 33 <Translation: 510.362366,169.492035,244.632675 / 0.184101 0.894333 0.202984 -0.353655 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 34 <Translation: 597.204407,127.665497,184.898163 / 0.138319 0.949044 0.097885 -0.265709 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 35 <Translation: 655.775024,70.781418,103.659241 / 0.075991 0.985998 0.026897 -0.145978 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 36 <Translation: 677.763062,5.540462,10.485477 / 0.004458 0.999953 0.000089 -0.008564 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 37 <Translation: 660.298584,-59.895676,-82.967033 / -0.067332 0.989089 0.020959 0.129343 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 38 <Translation: 606.528198,-117.467583,-165.188278 / -0.130535 0.955370 0.085733 0.250756 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 39 <Translation: 524.804810,-160.733398,-226.978271 / -0.178077 0.904039 0.184340 0.342084 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 40 <Translation: 426.754944,-185.940948,-262.978333 / -0.205831 0.842402 0.302742 0.395397 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 41 <Translation: 324.810272,-192.415619,-272.225098 / 0.795295 -0.213042 0.409250 0.393234 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 42 <Translation: 229.881485,-182.249893,-257.706879 / 0.855035 -0.201994 0.388027 0.278476 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 43 <Translation: 149.726746,-159.478470,-225.185928 / 0.181527 0.340215 -0.653547 0.651290 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 44 <Translation: 88.269867,-129.037735,-181.711990 / 0.107147 0.276205 -0.530585 0.794173 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 45 <Translation: 45.825836,-95.804451,-134.249908 / 0.055734 0.206272 -0.396244 0.892937 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 46 <Translation: 19.960541,-63.919701,-88.713737 / 0.024360 0.139146 -0.267296 0.953204 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 47 <Translation: 6.637482,-36.476826,-49.521248 / 0.008161 0.081352 -0.156277 0.984324 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 48 <Translation: 1.351990,-15.541109,-19.621922 / 0.001698 0.037253 -0.071562 0.996739 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 49 <Translation: 0.078644,-2.392330,-0.843513 / 0.000111 0.009552 -0.018348 0.999786 >









Now the question is if the above approach is right do i need to do anything else with those matrices to fix that 'rotation' issue?
It only happens when rotation is applied to the bone as you can see in the video below.






There is something interesting that i've found, when i multiply the matrices in inversed order :

Instead of

Matrix3 mTransform = pMatrixBoneInverseMatrix * mMatrixBoneTransformationAtFrame


I do

Matrix3 mTransform = mMatrixBoneTransformationAtFrame * pMatrixBoneInverseMatrix



It seems to fix the issue, but i need to be 100% SURE this is the correct way to multiply them..

Here are some facts from this approach.







1) Here is a "Rotation Only" Dump when my matrices multiplication is swapped:



+ [GeoSphere01] Physique.Bone.Bone01 - name exported
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 0 <Translation: 0.000000,0.000000,0.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 1 <Translation: 0.000000,0.000000,0.000000 / 0.000259 0.016080 -0.015984 0.999743 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 2 <Translation: 0.000000,0.000000,0.000000 / 0.003918 0.062125 -0.060704 0.996213 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 3 <Translation: 0.000000,0.000000,0.000000 / 0.018599 0.133313 -0.126839 0.982748 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 4 <Translation: 0.000000,0.000000,0.000000 / 0.054423 0.221140 -0.203212 0.952281 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 5 <Translation: 0.000000,0.000000,0.000000 / 0.120624 0.311798 -0.274887 0.901482 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 6 <Translation: 0.000000,0.000000,0.000000 / 0.220912 0.386427 -0.325116 0.834369 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 7 <Translation: 0.000000,0.000000,0.000000 / 0.348655 0.424388 -0.339386 0.763643 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 8 <Translation: 0.000000,0.000000,0.000000 / 0.484209 0.409559 -0.310494 0.708093 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 9 <Translation: 0.000000,0.000000,0.000000 / 0.597142 0.337736 -0.242409 0.685998 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 10 <Translation: 0.000000,0.000000,0.000000 / 0.654625 0.221560 -0.150572 0.706898 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 11 <Translation: 0.000000,0.000000,0.000000 / 0.633970 0.089351 -0.057590 0.766017 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 12 <Translation: 0.000000,0.000000,0.000000 / 0.533844 -0.023408 0.014356 0.845137 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 13 <Translation: 0.000000,0.000000,0.000000 / 0.377747 -0.087180 0.051145 0.920376 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 14 <Translation: 0.000000,0.000000,0.000000 / 0.206482 -0.090149 0.050956 0.972955 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 15 <Translation: 0.000000,0.000000,0.000000 / 0.062354 -0.042714 0.023482 0.996863 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 16 <Translation: 0.000000,0.000000,0.000000 / -0.027131 0.027602 -0.014931 0.999139 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 17 <Translation: 0.000000,0.000000,0.000000 / -0.057912 0.088049 -0.047516 0.993295 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 18 <Translation: 0.000000,0.000000,0.000000 / -0.046767 0.113297 -0.061952 0.990524 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 19 <Translation: 0.000000,0.000000,0.000000 / -0.020255 0.093147 -0.052496 0.994061 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 20 <Translation: 0.000000,0.000000,0.000000 / -0.001899 0.033028 -0.019533 0.999262 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 21 <Translation: 0.000000,0.000000,0.000000 / -0.003752 -0.051155 0.032338 0.998160 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 22 <Translation: 0.000000,0.000000,0.000000 / -0.024799 -0.140092 0.096447 0.985118 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 23 <Translation: 0.000000,0.000000,0.000000 / -0.054804 -0.216647 0.165533 0.960552 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 24 <Translation: 0.000000,0.000000,0.000000 / -0.080368 -0.268286 0.232010 0.931523 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 25 <Translation: 0.000000,0.000000,0.000000 / -0.090424 -0.286788 0.286788 0.909576 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 26 <Translation: 0.000000,0.000000,0.000000 / -0.089057 -0.282452 0.336472 0.893911 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 27 <Translation: 0.000000,0.000000,0.000000 / -0.083970 -0.266319 0.393192 0.876027 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 28 <Translation: 0.000000,0.000000,0.000000 / -0.073874 -0.234299 0.452170 0.857431 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 29 <Translation: 0.000000,0.000000,0.000000 / -0.058002 -0.183958 0.506804 0.840205 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 30 <Translation: 0.000000,0.000000,0.000000 / -0.036432 -0.115549 0.549268 0.826816 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 31 <Translation: 0.000000,0.000000,0.000000 / -0.010322 -0.032738 0.571702 0.819743 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 32 <Translation: 0.000000,0.000000,0.000000 / 0.018067 0.057303 0.567793 0.820975 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 33 <Translation: 0.000000,0.000000,0.000000 / 0.045610 0.144657 0.534420 0.831498 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 34 <Translation: 0.000000,0.000000,0.000000 / 0.068813 0.218249 0.472839 0.850914 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 35 <Translation: 0.000000,0.000000,0.000000 / 0.084486 0.267954 0.389003 0.877348 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 36 <Translation: 0.000000,0.000000,0.000000 / 0.090404 0.286725 0.292785 0.907685 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 37 <Translation: 0.000000,0.000000,0.000000 / 0.085797 0.272112 0.196221 0.938132 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 38 <Translation: 0.000000,0.000000,0.000000 / 0.071496 0.226757 0.111207 0.964936 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 39 <Translation: 0.000000,0.000000,0.000000 / 0.049726 0.157712 0.047259 0.985099 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 40 <Translation: 0.000000,0.000000,0.000000 / 0.023586 0.074806 0.009928 0.996870 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 41 <Translation: 0.000000,0.000000,0.000000 / -0.003608 -0.011443 0.000228 0.999928 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 42 <Translation: 0.000000,0.000000,0.000000 / -0.028944 -0.091797 0.015088 0.995243 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 43 <Translation: 0.000000,0.000000,0.000000 / -0.050347 -0.159681 0.048567 0.984687 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 44 <Translation: 0.000000,0.000000,0.000000 / -0.066769 -0.211763 0.093387 0.970555 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 45 <Translation: 0.000000,0.000000,0.000000 / -0.078119 -0.247763 0.142355 0.955116 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 46 <Translation: 0.000000,0.000000,0.000000 / -0.085046 -0.269731 0.189357 0.940296 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 47 <Translation: 0.000000,0.000000,0.000000 / -0.088622 -0.281074 0.229825 0.927537 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 48 <Translation: 0.000000,0.000000,0.000000 / -0.090049 -0.285599 0.260703 0.917801 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 49 <Translation: 0.000000,0.000000,0.000000 / -0.090399 -0.286710 0.280100 0.911685 >






2) Here is a Translation + Rotation dump,



+ [GeoSphere01] Physique.Bone.Bone01 - name exported
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 0 <Translation: 0.000000,0.000000,0.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 1 <Translation: 0.000000,0.000000,-0.700806 / 0.000259 0.016080 -0.015984 0.999743 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 2 <Translation: 0.000000,0.000000,-2.726410 / 0.003918 0.062125 -0.060704 0.996213 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 3 <Translation: -0.000001,0.000000,-5.961609 / 0.018599 0.133313 -0.126839 0.982748 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 4 <Translation: -0.000001,0.000000,-10.291199 / 0.054423 0.221140 -0.203212 0.952281 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 5 <Translation: -0.000001,0.000001,-15.600006 / 0.120624 0.311798 -0.274887 0.901482 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 6 <Translation: -0.000002,0.000001,-21.772797 / 0.220912 0.386427 -0.325116 0.834369 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 7 <Translation: -0.000002,0.000001,-28.694397 / 0.348655 0.424388 -0.339386 0.763643 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 8 <Translation: -0.000003,0.000002,-36.249603 / 0.484209 0.409559 -0.310494 0.708093 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 9 <Translation: -0.000004,0.000002,-44.323212 / 0.597142 0.337736 -0.242409 0.685998 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 10 <Translation: -0.000004,0.000002,-52.799988 / 0.654625 0.221560 -0.150572 0.706898 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 11 <Translation: -0.000005,0.000003,-61.564789 / 0.633970 0.089351 -0.057590 0.766017 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 12 <Translation: -0.000006,0.000003,-70.502411 / 0.533844 -0.023408 0.014356 0.845137 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 13 <Translation: -0.000006,0.000004,-79.497589 / 0.377747 -0.087180 0.051145 0.920376 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 14 <Translation: -0.000007,0.000004,-88.435196 / 0.206482 -0.090149 0.050956 0.972955 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 15 <Translation: -0.000008,0.000004,-97.199997 / 0.062354 -0.042714 0.023482 0.996863 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 16 <Translation: -0.000009,0.000005,-105.676804 / -0.027131 0.027602 -0.014931 0.999139 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 17 <Translation: -0.000009,0.000005,-113.750397 / -0.057912 0.088049 -0.047516 0.993295 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 18 <Translation: -0.000010,0.000005,-121.305603 / -0.046767 0.113297 -0.061952 0.990524 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 19 <Translation: -0.000010,0.000006,-128.227203 / -0.020255 0.093147 -0.052496 0.994061 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 20 <Translation: -0.000010,0.000006,-134.399994 / -0.001899 0.033028 -0.019533 0.999262 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 21 <Translation: -0.000010,0.000006,-139.708801 / -0.003752 -0.051155 0.032338 0.998160 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 22 <Translation: -0.000011,0.000006,-144.038406 / -0.024799 -0.140092 0.096447 0.985118 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 23 <Translation: -0.000011,0.000006,-147.273605 / -0.054804 -0.216647 0.165533 0.960552 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 24 <Translation: -0.000011,0.000007,-149.299194 / -0.080368 -0.268286 0.232010 0.931523 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 25 <Translation: -0.000011,0.000007,-150.000000 / -0.090424 -0.286788 0.286788 0.909576 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 26 <Translation: -0.000011,0.000007,-150.000000 / -0.089057 -0.282452 0.336472 0.893911 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 27 <Translation: -0.000011,0.000007,-150.000000 / -0.083970 -0.266319 0.393192 0.876027 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 28 <Translation: -0.000011,0.000007,-150.000000 / -0.073874 -0.234299 0.452170 0.857431 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 29 <Translation: -0.000011,0.000007,-150.000000 / -0.058002 -0.183958 0.506804 0.840205 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 30 <Translation: -0.000011,0.000007,-150.000000 / -0.036432 -0.115549 0.549268 0.826816 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 31 <Translation: -0.000011,0.000007,-150.000000 / -0.010322 -0.032738 0.571702 0.819743 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 32 <Translation: -0.000011,0.000007,-150.000000 / 0.018067 0.057303 0.567793 0.820975 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 33 <Translation: -0.000011,0.000007,-150.000000 / 0.045610 0.144657 0.534420 0.831498 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 34 <Translation: -0.000011,0.000007,-150.000000 / 0.068813 0.218249 0.472839 0.850914 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 35 <Translation: -0.000011,0.000007,-150.000000 / 0.084486 0.267954 0.389003 0.877348 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 36 <Translation: -0.000011,0.000007,-150.000000 / 0.090404 0.286725 0.292785 0.907685 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 37 <Translation: -0.000011,0.000007,-150.000000 / 0.085797 0.272112 0.196221 0.938132 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 38 <Translation: -0.000011,0.000007,-150.000000 / 0.071496 0.226757 0.111207 0.964936 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 39 <Translation: -0.000011,0.000007,-150.000000 / 0.049726 0.157712 0.047259 0.985099 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 40 <Translation: -0.000011,0.000007,-150.000000 / 0.023586 0.074806 0.009928 0.996870 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 41 <Translation: -0.000011,0.000007,-150.000000 / -0.003608 -0.011443 0.000228 0.999928 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 42 <Translation: -0.000011,0.000007,-150.000000 / -0.028944 -0.091797 0.015088 0.995243 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 43 <Translation: -0.000011,0.000007,-150.000000 / -0.050347 -0.159681 0.048567 0.984687 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 44 <Translation: -0.000011,0.000007,-150.000000 / -0.066769 -0.211763 0.093387 0.970555 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 45 <Translation: -0.000011,0.000007,-150.000000 / -0.078119 -0.247763 0.142355 0.955116 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 46 <Translation: -0.000011,0.000007,-150.000000 / -0.085046 -0.269731 0.189357 0.940296 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 47 <Translation: -0.000011,0.000007,-150.000000 / -0.088622 -0.281074 0.229825 0.927537 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 48 <Translation: -0.000011,0.000007,-150.000000 / -0.090049 -0.285599 0.260703 0.917801 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 49 <Translation: -0.000011,0.000007,-150.000000 / -0.090399 -0.286710 0.280100 0.911685 >










3) Here is the Translation only dump



+ [GeoSphere01] Physique.Bone.Bone01 - name exported
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 0 <Translation: 0.000000,0.000000,0.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 1 <Translation: 0.000000,-0.389167,-0.605377 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 2 <Translation: 0.000000,-1.515703,-2.357758 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 3 <Translation: -0.000001,-3.318161,-5.161591 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 4 <Translation: -0.000001,-5.735092,-8.921265 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 5 <Translation: -0.000001,-8.705051,-13.541199 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 6 <Translation: -0.000002,-12.166590,-18.925812 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 7 <Translation: -0.000002,-16.058258,-24.979523 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 8 <Translation: -0.000003,-20.318613,-31.606750 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 9 <Translation: -0.000003,-24.886206,-38.711884 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 10 <Translation: -0.000004,-29.699587,-46.199371 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 11 <Translation: -0.000004,-34.697311,-53.973602 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 12 <Translation: -0.000005,-39.817932,-61.938995 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 13 <Translation: -0.000006,-44.999996,-70.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 14 <Translation: -0.000006,-50.182064,-78.061005 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 15 <Translation: -0.000007,-55.302681,-86.026398 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 16 <Translation: -0.000008,-60.300407,-93.800644 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 17 <Translation: -0.000008,-65.113785,-101.288116 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 18 <Translation: -0.000009,-69.681374,-108.393265 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 19 <Translation: -0.000009,-73.941734,-115.020477 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 20 <Translation: -0.000010,-77.833405,-121.074188 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 21 <Translation: -0.000010,-81.294937,-126.458801 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 22 <Translation: -0.000010,-84.264900,-131.078751 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 23 <Translation: -0.000010,-86.681831,-134.838409 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 24 <Translation: -0.000010,-88.484291,-137.642242 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 25 <Translation: -0.000010,-89.610825,-139.394623 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 26 <Translation: -0.000010,-89.999992,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 27 <Translation: -0.000010,-89.139168,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 28 <Translation: -0.000010,-86.655083,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 29 <Translation: -0.000010,-82.695305,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 30 <Translation: -0.000010,-77.407402,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 31 <Translation: -0.000010,-70.938942,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 32 <Translation: -0.000010,-63.437492,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 33 <Translation: -0.000010,-55.050632,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 34 <Translation: -0.000010,-45.925915,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 35 <Translation: -0.000010,-36.210930,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 36 <Translation: -0.000010,-26.053236,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 37 <Translation: -0.000010,-15.600395,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 38 <Translation: -0.000010,-4.999992,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 39 <Translation: -0.000010,5.600418,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 40 <Translation: -0.000010,16.053244,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 41 <Translation: -0.000010,26.210945,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 42 <Translation: -0.000010,35.925938,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 43 <Translation: -0.000010,45.050640,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 44 <Translation: -0.000010,53.437508,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 45 <Translation: -0.000010,60.938957,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 46 <Translation: -0.000010,67.407410,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 47 <Translation: -0.000010,72.695320,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 48 <Translation: -0.000010,76.655098,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >
+ [GeoSphere01] Bone.Bone01 transformation matrix in frame 49 <Translation: -0.000010,79.139183,-140.000000 / 0.000000 0.000000 0.000000 1.000000 >







So, it looks like multiplication order issue - can somebody please confirm what should be the order in this case please?
I've seen people doing :







- Inverse * Transformation matrix




// This has been used in GTCD, they use Inverse * Transformation Matrix - what fails in my case ( rotation issues )

Matrix3 mTransform = RemoveScaling(pMatrixInverses * m_vBones->GetObjTMAfterWSM(i * GetTicksPerFrame()));




- Transformation Matrix * Inverse




but i don't really know which one of those is the correct one?





















Here is the vid, presenting what's going on exactly basing on the dumps above:





[media]
[/media]

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement