Vehicle Data: Difference between revisions
No edit summary |
m (→Version 0x17) |
||
Line 31: | Line 31: | ||
! Notes |
! Notes |
||
|- |
|- |
||
| 0x00 || Version number || |
| 0x00 || Version number || uint || 0x17 || |
||
|- |
|- |
||
| 0x04 || Loaded state || int || 0x00 || |
| 0x04 || Loaded state || int || 0x00 || |
Revision as of 15:57, 31 January 2021
The Burnout Vehicle file format is used to store data for a particular vehicle in all Burnout games from Takedown to Dominator. It uses the file extension .bgv, or .btv for traffic vehicles. It is the successor to Point of Impact's Burnout 2 Race Car file format.
This format contains most of the data related to any given vehicle, including mesh data, Level of Detail models, texture data, pointers to external files, deformation matrices, collision detection parameters and physics configuration info.
Versions
Burnout Vehicle version | |||||
---|---|---|---|---|---|
0x14 | 0x17 | 0x1D | 0x1F | 0x25 | |
Date | Apr 2004 | Jul 2004 | May 2005 | Jul 2005 | Jan 2006 |
Games | Takedown (Early Demo) | Takedown Legends Dominator (PSP) |
Revenge (2005, Early Demo) | Revenge (2005) Dominator (PS2) |
Revenge (360) |
Body parts | |||||
Max body parts | 6 | 6 | 8 | 8 | 8 |
- Version 0x1D and onward store deformation matrices in a different order to previous revisions.
Header
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 offset(s) | 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 | ||
0xAC4 | Body part types | EBodyPartType[6] | ||
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 | HSM offset | Engine Sound Model* | ||
0x16E0 | LSM offset | Engine Sound Model* |
Subtypes
Being a container format, Burnout Vehicle uses quite a few internal resource types to store its data.
LOD Database
The LOD Database format stores both a given vehicle's LOD model as well as the model's rendering parameters.
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 0), low (LOD 1), medium (LOD 2) and high (LOD 3) quality.
It seems the maximum amount of submeshes a LOD Database can contain is 12, though it's unknown if this rule is enforced by the game or if it can be larger than that.
Version Differences
- The LOD Database version present in revision 0x14 BGVs are the only version to use global pointers for their submesh tables. These point to the exact location in the file of each submesh, whereas local pointers, used in all subsequent versions of the format, use offsets relative to the beginning of the LOD. For example, a pointer to offset 0x1820 in a 0x14-era LOD Database would appear to point to 0x140 in all other versions.
Layout
Offset | Type | Description |
---|---|---|
0x00 | Submesh*[12] | Submesh offset(s) |
Engine Sound Model (ESM)
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
.