Code: Select all
RpHAnimAnimation .anm
HAnimAnimation chunk header (0x1B)
RwInt32 0x100
RwInt32 interpolation type id (1 = RpHAnimStd)
RwInt32 numFrames
RwInt32 flags
RwReal duration
numFrames*sizeof(keyFrame) key frames
serialized format of RpHAnimStdKeyFrame:
RwReal time
RtQuat q // quaternion describing rotation
RwV3d t // position
RwInt32 prev // should be offset of previous key frame from beginning of frame data but appears to be junk
PS2 .ska (skeletal animation) are almost the same format.
They have no chunk header nor the first two ints (so a file starts at numFrames directly).
In key frames the time comes after t, not before q.My data is
Code: Select all
1B 00 00 00 3C 09 00 00 65 00 02 1C 00 01 00 00
03 11 00 00 74 00 00 00 00 00 00 00 89 88 88 3D
C6 B4 96 BE 8D 33 DD BE 27 D1 91 BD 00 00 80 3F
4E 4E 11 40 00 00 80 3F ...Code: Select all
1B 00 00 00 - chunk id (Anim Animation)
3C 09 00 00 - size (without this header, after version) - 2364
65 00 02 1C - engine version 3.7.0.1
00 01 00 00 - Version: animation's version format (in all GTAs - 1.0 (0x100))
03 11 00 00 - Type: defines the frame format, 0x01 - normal, 0x02 - compressed, but what this (03 11) means?
74 00 00 00 - Frames: number of frames defined in the container - 116
00 00 00 00 - Flagsif type 0x01 then 36 bytes per frame, if 0x02 then 22 bytes per frame, but i have only 20
File example in attachment

