Compression Table:
Code: Select all
CODEC #0 _no_compression_codec AVERAGE KEY RATIOS Rot:1.00, Trs:1.00, Scl:1.00
CODEC #1 _uncompressed_static_data_codec AVERAGE KEY RATIOS Rot:1.00, Trs:1.00, Scl:1.00
CODEC #2 _uncompressed_animated_data_codec AVERAGE KEY RATIOS Rot:1.00, Trs:1.00, Scl:1.00
CODEC #3 _8byte_quantized_rotation_only_codec AVERAGE KEY RATIOS Rot:1.00, Trs:1.00, Scl:1.00
CODEC #4 byte_keyframe_lightly_quantized AVERAGE KEY RATIOS Rot:0.22, Trs:0.26, Scl:1.00
CODEC #5 word_keyframe_lightly_quantized AVERAGE KEY RATIOS Rot:1.00, Trs:1.00, Scl:1.00
CODEC #6 reverse_byte_keyframe_lightly_quantized AVERAGE KEY RATIOS Rot:0.27, Trs:0.64, Scl:0.12
CODEC #7 reverse_word_keyframe_lightly_quantized AVERAGE KEY RATIOS Rot:0.07, Trs:0.14, Scl:1.00
CODEC #8 _blend_screen_codec AVERAGE KEY RATIOS Rot:1.00, Trs:1.00, Scl:1.00
Code: Select all
//Header
AnimationCodec - Byte
RotatedBonesCount - Byte
MovedBonesCount - Byte
ScaledBonesCount - Byte
Unknown - Int32?
AnimationPlaybackRate - float
DataSize - Int32
DataSize - Int32
RotatedBonesBlockSize - Int32
MovedBonesBlockSize - Int32
ScaledBonesBlockSize - Int32
//Data
//Compression #0
//Compression #1
//Compression #2
//Compression #3
//Compression #4
//Compression #5
//Compression #6
//Compression #7
//Compression #8
public struct RotatedBone
{
public float i, j, k, w; //Rotation I believe
public float i, j, k, w;
public float i, j, k, w; //It's based on 3 Quaterions
}
We need to figure out what bones are being rotated and when. Looking at Compression 8, I can't seem to find an Index, maybe one of the Quaterions is the coords of a bone, but that seems like a waste of space. We also need to figure out how the compression works. I've looked up quantized compression, and it is a form of lossy compression, so we might need to look for a compression matrix :hmm2:
App
Download
It shows info on the animations Raw Blocks, and Calls. It also can extract a raw block, note you will still need to goto the animations call's offset which is with in the block. Do this by extracting the Raw Block, then going to the call's offset. Archive includes source and build. Now get researching!!!