Vehicle Data/Burnout 3
Layout (Version 0x17)
Offset | Name | Type | Value | Notes |
---|---|---|---|---|
0x00 | Version number | uint | 0x17 | |
0x04 | Loaded state | int | 0x00 | |
0x08 | File size (bytes) | int | ||
0x0C | Body Part count | byte | ||
0x0D | Wheel count | byte | ||
0x0E | Minimum LOD | short | ||
0x10 | Maximum LOD | short | ||
0x14 | Object radius | float | ||
0x18 | Wheel radius | float | ||
0x1C | Wheel scales | float[6] | ||
0x34 | Body part radii | float[6] | ||
0x4C | LOD database offsets | LOD Database*[5] | ||
0x60 | Vehicle texture offset | Texture* | ||
0x64 | Shadow body object offset | Vehicle Object* | ||
0x68 | Shadow wheel object offset | Vehicle Object* | ||
0x6C | Texture colour overlay offset | Texture* | ||
0x70 | Chassis bone deform matrices | Matrix3x4[20] | ||
0x570 | Chassis skin-to-bone deform matrices | Matrix3x4[20] | ||
0xA70 | Chassis bone lengths | float[20] | ||
0xAC0 | Chassis bone rig type | EBoneRigType | 0x00 = normal bone rig 0x01 = large bone rig 0x02 = no bone rig | |
0xAC4 | Body part types | EBodyPartType[6] | 0x00 = Wheel 0x01 = Body part | |
0xADC | Hinge axes | byte[6] | ||
0xAE2 | Body part bone indices | byte[6][2] | ||
0xAEE | Wheel bone indices | byte[6][2] | ||
0xAFC | Hinge max angles | float[6] | ||
0xB14 | Body part bone weights | float[6][2] | ||
0xB44 | Wheel bone weights | float[6][2] | ||
0xB80 | Wheel matrices | Matrix3x4[6] | ||
0xD00 | Body part matrices | Matrix3x4[6] | ||
0xEA0 | Body part attach points | Vector3[6] | ||
0x1060 | Hull | Vehicle Hull | ||
0x1660 | Hull exists? | Bool32 | ||
0x1664 | Tag points | Tag Point*[18] | ||
0x16AC | Tag point counts | byte[18] | ||
0x16C8 | Number of payload sets | sbyte | ||
0x16C9 | Number of payloads | sbyte | ||
0x16CA | Current payload set | sbyte | -1 if not set | |
0x16DC | ESM offsets | Engine Sound Model*[2] |
LOD Database
The LOD Database format stores a given vehicle's LOD model.
LODs, or Levels of Detail, are lower-poly, lower-detail (hence the name) models that games use for objects that are far away from the player, to keep framerates smooth. BGVs contain 4 LOD Databases, which in turn each contain one LOD model of minimum (LOD 3), low (LOD 2), medium (LOD 1) and high (LOD 0) quality.
It seems a LOD Database can contain a maximum of 12 vehicle objects, though it's unknown if this rule is enforced by the game or if it can be larger than that.
Offset | Name | Type |
---|---|---|
0x00 | Body object offset | Vehicle Object* |
0x04 | Body part offsets | Vehicle Object*[5] |
0x18 | Wheel object offsets | Vehicle Object*[4] |
Vehicle Object
Offset | Name | Type | Description |
---|---|---|---|
0x00 | Mesh count | sbyte | |
0x01 | Glass mesh index | sbyte | |
0x04 | Mesh array offset | Vehicle Mesh*[] | Pointer to an array of Vehicle Meshes |
0x08 | Normal shift | float |
Vehicle Mesh
The format for a Vehicle Mesh definition differs by platform.
PS2
Offset | Name | Type | Description |
---|---|---|---|
0x00 | Render data (first) | byte* | |
0x04 | Render data (rest) | byte* | |
0x08 | Mesh flags | ushort | |
0x0A | Alpha1 | byte | |
0x0B | Texture index | byte | |
0x0C | Source opacity | byte | |
0x0D | Current opacity | byte | |
0x0E | Shininess | byte | |
0x0F | Unused | byte |
Xbox
Offset | Name | Type | Description |
---|---|---|---|
0x00 | unk0 | float | |
0x04 | unk1 | float | |
0x08 | unk2 | float | |
0x0C | Render Data | byte* | |
0x10 | Render Data Size | int | |
0x14 | unk3 | int | |
0x18 | unk4 | byte | |
0x19 | unk5 | byte | |
0x1A | unk6 | byte | |
0x1B | unk7 | byte |
Engine Sound Model
This format contains playback parameters and pitching info for a given vehicle's engine sound effects, stored mostly as floating-point numbers. BGVs use two of these files for high and low speed ranges. The files were merged into the BGV starting with revision 0x17; prior to this, they were stored externally in the same folder as the BGV, with the file extensions .HSM
and .LSM
.