I'm trying to reverse an animation file from a commercial multiplayer game, whose format was recently updated. The problem lies within joint rotation information, which changed from a 128bit format to a 48 bit format.
The old format actually was using a quaternion representation with 32 bit floats for each component (32 * 4 = 128 bit)
The new format was probably added for quantization purposes (serving better multiplayer performance). I played around trying to apply an euler angle representation (3 x 16 bit integers or 3 x 16 bit half floats) but i failed miserably so I think it should be still a quaternion representation of some sort.
I have located a model which has not changed at all structurally but obviously the model files have been updated to the newest format.
So I do have the byte data, I know the correct rotation angles (again from game data) that correspond to those values as well as the quaternion values from the old version of the files.
New Format Bytes Rotation(deg) X,Y,Z Quaternion 41 ED 3F ED 41 6D 0, 90.0, 89.99 0.5, 0.5, 0.5, 0.5 85 F7 2C A0 85 77 59.64, 90, 0 0.3516, 0.61347, -0.351634, 0.61347 AE CE FF BF FF 3F -180, 0, 18.54 0.98 0.16 0 0 40 ED BE 92 BE 12 0,-90,90 0.5, -0.5, -0.5, 0.5 DE 40 DA 42 CA 3C -1.017, -3.633, 4.091 -0.009633918, -0.03154902, 0.03542599, 0.9988277
I'm currently searching the web for quaternion quantization techniques and I'm experimenting with different stuff, so if I find anything I'll make sure to update. Thanks in advance