Animation Collection

From Burnout Wiki
AnimationCollection
aka {{{othernames}}}
No Example
Resource names *_ANIM
*Vehicle ID, e.g. PUSMB01
Type ID 0x51
Category Generic
Memory
distribution
Main Memory only
Imports Unknown
Imported by Unknown
Editor
available?
No

Animation collections are used for character animations on bikes. Each bike's VEH_*_AT.BIN bundle contains one animation collection.

Structures

Hmmm...
Hmmm...
To do:
In-game testing has not yet been conducted. It is required to understand the data. Many field descriptions are currently guesswork.

Header

32-bit

Offset Length Type Name Description Comments
0x0 0x2 uint16_t ? Version number 1
0x2 0x2 uint16_t ? Number of animations Always 32
0x4 0x4 uint32_t ? Resource size
0x8 0x4 ?** ? Animation data See animation
0xC 0x4 ?* ? Joint data See joint data

64-bit

Offset Length Type Name Description Comments
0x0 0x2 uint16_t ? Version number 1
0x2 0x2 uint16_t ? Number of animations Always 32
0x4 0x4 uint32_t ? Resource size
0x8 0x8 ?** ? Animation data See animation
0x10 0x8 ?* ? Joint data See joint data

Animation

Because the pointers in this structure are only set at runtime, the data is read sequentially after the end of the structure in the following order:

  • Vectors
  • Matrices
  • Packed data

32-bit

Offset Length Type Name Description Comments
0x0 0x4 uint32_t ? Number of keyframes
0x4 0x4 uint32_t ? Number of joints Always 45
0x8 0x4 uint32_t ? Packed joint data size
0xC 0x4 uint32_t ? Combined size of all joint data for one keyframe Equal to packed joint data size * number of joints
0x10 0x4 uint32_t ? Matrix data size
0x14 0x4 uint32_t ? Total size of this structure
0x18 0x4 uint32_t ? Always 1
0x1C 0x4 float ? Animation rate Keyframes per second
0x20 0x4 uint32_t ? 0, 5 or 10 in samples. No bearing on data?
0x24 0x4 Vector4* ? Positions Set at runtime
0x28 0x4 Matrix44* ? Movement? Set at runtime
0x2C 0x4 uint32_t* ? Packed joint data Coordinates? Movement changes?
Set at runtime

64-bit

Offset Length Type Name Description Comments
0x0 0x4 uint32_t ? Number of keyframes
0x4 0x4 uint32_t ? Number of joints Always 45
0x8 0x4 uint32_t ? Packed joint data size
0xC 0x4 uint32_t ? Combined size of all joint data for one keyframe Equal to packed joint data size * number of joints
0x10 0x4 uint32_t ? Matrix data size
0x14 0x4 uint32_t ? Total size of this structure
0x18 0x4 uint32_t ? Always 1
0x1C 0x4 float ? Animation rate Keyframes per second
0x20 0x4 uint32_t ? 0, 5 or 10. No bearing on data?
0x24 0x4 Padding
0x28 0x8 Vector4* ? Positions Set at runtime
0x30 0x8 Matrix44* ? Movement? Set at runtime
0x38 0x8 uint32_t* ? Packed joint data Coordinates? Movement changes?
Set at runtime

Joint data

Because the pointers in this structure are only set at runtime, the data is read sequentially after the end of the structure in the following order:

  • Joint info
  • Special indices
  • Joint IDs

32-bit

Offset Length Type Name Description Comments
0x0 0x4 ?* ? Joint info See joint info
Set at runtime
0x4 0x4 uint32_t* ? Special indices Always matches the following:
  • Right ankle
  • Left ankle
  • Right wrist
  • Left wrist

Set at runtime

0x8 0x4 CgsID* ? Joint IDs Examples include MAN_HIPS, MANL_FEMUR_J, and MANR_WRIST_J.
"MANL" and "MANR" refer to the left and right sides of the character.
"_J" indicates a joint.
Set at runtime
0xC 0x2 uint16_t ? Number of joints Always 45
0xE 0x2 uint16_t ? Number of special indices Always 4

64-bit

Offset Length Type Name Description Comments
0x0 0x8 ?* ? Joint info See joint info
Set at runtime
0x8 0x8 uint32_t* ? Special indices Always matches the following:
  • Right ankle
  • Left ankle
  • Right wrist
  • Left wrist

Set at runtime

0x10 0x8 CgsID* ? Joint IDs Examples include MAN_HIPS, MANL_FEMUR_J, and MANR_WRIST_J.
"MANL" and "MANR" refer to the left and right sides of the character.
"_J" indicates a joint.
Set at runtime
0x18 0x2 uint16_t ? Number of joints Always 45
0x1A 0x2 uint16_t ? Number of special indices Always 4
0x1C 0x4 Padding

Joint info

Offset Length Type Name Description Comments
0x0 0x10 Vector4 ? Initial position?
0x10 0x10 uint32_t[4] ? Connecting joint indices? -1 if no connection