Community Project: Animations
Posted: Sat Feb 07, 2009 7:26 pm
I've been doing some research on animations and I've found quite a lot. Now I need you to help me help you
Here is a compression table, all the info I found, and a research app to help you out. I need people to help me with this, there is only so much I can do by myself. It doesn't matter if you don't know anything about animations, models, or raw. If you can use a hexeditor thats all you need.
Compression Table:
Raw Data Layout:
What we Need:
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!!!

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!!!