Vehicle Animation: Difference between revisions
Content added Content deleted
(Updated enumerations and changed descriptions to indicate ties to part models. (Thanks Matt)) |
(Added infobox and normalized some content.) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{ParadiseResourceTypeInfobox |
|||
| name = VehicleAnimation |
|||
| resourcenames = *_VANM<br /><sup><small>*Vehicle ID, e.g. PUSMC01</small></sup> |
|||
| id = 0x10023 |
|||
| category = Game-specific<br />(Burnout Paradise) |
|||
| memdist = Main Memory only |
|||
}} |
|||
The vehicle animation resource type stores per-vehicle user-triggered animations, working in conjunction with a [[Body Part Remap Data]] resource. |
The vehicle animation resource type stores per-vehicle user-triggered animations, working in conjunction with a [[Body Part Remap Data]] resource. |
||
Line 4: | Line 12: | ||
'''Note:''' This type has no available debugging symbols. All structures are based on user research and are unconfirmed. |
'''Note:''' This type has no available debugging symbols. All structures are based on user research and are unconfirmed. |
||
=== |
=== Vehicle animation resource === |
||
==== 32-bit ==== |
==== 32-bit ==== |
||
{| class="wikitable" |
{| class="wikitable" |
||
Line 13: | Line 21: | ||
| 0x4 || 0x4 || uint32_t || ? || Version number || 1 |
| 0x4 || 0x4 || uint32_t || ? || Version number || 1 |
||
|- |
|- |
||
| 0x8 || 0x4 || uint32_t || ? || Number of |
| 0x8 || 0x4 || uint32_t || ? || Number of parts || |
||
|- |
|- |
||
| 0xC || 0x4 || [[# |
| 0xC || 0x4 || [[#BrnWorld::BrnAnimationPart|BrnAnimationPart]]* || ? || Parts || |
||
|- |
|- |
||
| 0x10 || 0x4 || uint32_t || ? || Number of animation data entries || |
| 0x10 || 0x4 || uint32_t || ? || Number of animation data entries || |
||
|- |
|- |
||
| 0x14 || 0x4 || [[# |
| 0x14 || 0x4 || [[#BrnWorld::BrnVehicleAnimation|BrnVehicleAnimation]]* || ? || Animation data || |
||
|- |
|- |
||
| 0x18 || 0x4 || uint32_t || ? || Number of |
| 0x18 || 0x4 || uint32_t || ? || Number of state entries || |
||
|- |
|- |
||
| 0x1C || 0x4 || [[# |
| 0x1C || 0x4 || [[#BrnWorld::BrnVehicleStateAnimation|BrnVehicleStateAnimation]]* || ? || State data || |
||
|- |
|- |
||
| 0x20 || 0x4 || int8_t[4] || ? || Wheel part model indices || Order: Front left, front right, rear left, rear right<br />-1 if unused; no animation displays |
| 0x20 || 0x4 || int8_t[4] || ? || Wheel part model indices || Order: Front left, front right, rear left, rear right<br />-1 if unused; no animation displays |
||
|- |
|- |
||
| 0x24 || 0xC || || || |
| 0x24 || 0xC || || || Padding || |
||
|- |
|- |
||
| 0x30 || 0x100 || [[Matrix44Affine]][4] || ? || Wheel positions || Order: Front left, front right, rear left, rear right<br />Animation only; real positions in deformation resource |
| 0x30 || 0x100 || [[Matrix44Affine]][4] || ? || Wheel positions || Order: Front left, front right, rear left, rear right<br />Animation only; real positions in [[Streamed Deformation|deformation]] resource |
||
|} |
|} |
||
Line 40: | Line 48: | ||
| 0x4 || 0x4 || uint32_t || ? || Version number || 1 |
| 0x4 || 0x4 || uint32_t || ? || Version number || 1 |
||
|- |
|- |
||
| 0x8 || 0x4 || uint32_t || ? || Number of |
| 0x8 || 0x4 || uint32_t || ? || Number of parts || |
||
|- |
|- |
||
| 0xC || 0x4 || || || |
| 0xC || 0x4 || || || Padding || |
||
|- |
|- |
||
| 0x10 || 0x8 || [[# |
| 0x10 || 0x8 || [[#BrnWorld::BrnAnimationPart|BrnAnimationPart]]* || ? || Parts || |
||
|- |
|- |
||
| 0x18 || 0x4 || uint32_t || ? || Number of animation data entries || |
| 0x18 || 0x4 || uint32_t || ? || Number of animation data entries || |
||
|- |
|- |
||
| 0x1C || 0x4 || || || |
| 0x1C || 0x4 || || || Padding || |
||
|- |
|- |
||
| 0x20 || 0x8 || [[# |
| 0x20 || 0x8 || [[#BrnWorld::BrnVehicleAnimation|BrnVehicleAnimation]]* || ? || Animation data || |
||
|- |
|- |
||
| 0x28 || 0x4 || uint32_t || ? || Number of |
| 0x28 || 0x4 || uint32_t || ? || Number of state entries || |
||
|- |
|- |
||
| 0x2C || 0x4 || || || |
| 0x2C || 0x4 || || || Padding || |
||
|- |
|- |
||
| 0x30 || 0x8 || [[# |
| 0x30 || 0x8 || [[#BrnWorld::BrnVehicleStateAnimation|BrnVehicleStateAnimation]]* || ? || State data || |
||
|- |
|- |
||
| 0x38 || 0x4 || int8_t[4] || ? || Wheel part model indices || Order: Front left, front right, rear left, rear right<br />-1 if unused; no animation displays |
| 0x38 || 0x4 || int8_t[4] || ? || Wheel part model indices || Order: Front left, front right, rear left, rear right<br />-1 if unused; no animation displays |
||
|- |
|- |
||
| 0x3C || 0x4 || || || |
| 0x3C || 0x4 || || || Padding || |
||
|- |
|- |
||
| 0x40 || 0x100 || [[Matrix44Affine]][4] || ? || Wheel positions || Order: Front left, front right, rear left, rear right<br />Animation only; real positions in deformation resource |
| 0x40 || 0x100 || [[Matrix44Affine]][4] || ? || Wheel positions || Order: Front left, front right, rear left, rear right<br />Animation only; real positions in [[Streamed Deformation|deformation]] resource |
||
|} |
|} |
||
=== |
=== BrnWorld::BrnAnimationPart === |
||
{{todo|Research the non-primary indices.}} |
{{todo|Research the non-primary indices.}} |
||
Line 78: | Line 86: | ||
|} |
|} |
||
=== |
=== BrnWorld::BrnVehicleAnimation === |
||
{{todo|Research types/flags, understand connection between byte at 0x2 and secondary data.}} |
{{todo|Research types/flags, understand connection between byte at 0x2 and secondary data.}} |
||
Line 88: | Line 96: | ||
| 0x1 || 0x1 || int8_t || ? || Animation type || See [[#Animation type|animation type]] |
| 0x1 || 0x1 || int8_t || ? || Animation type || See [[#Animation type|animation type]] |
||
|- |
|- |
||
| 0x2 || 0x1 || int8_t || ? || |
| 0x2 || 0x1 || int8_t || ? || State part model index? || Refers to state part model on cops but not others. See [[#BrnWorld::BrnVehicleStateAnimation|state]] |
||
|- |
|- |
||
| 0x3 || 0xD || || || |
| 0x3 || 0xD || || || Padding || |
||
|- |
|- |
||
| 0x10 || 0x30 || [[Matrix33]] || ? || || |
| 0x10 || 0x30 || [[Matrix33]] || ? || || |
||
|} |
|} |
||
=== BrnWorld::BrnVehicleStateAnimation === |
|||
=== Animation modifier === |
|||
{{todo|Understand the animation type/action field.}} |
{{todo|Understand the animation type/action field.}} |
||
Line 107: | Line 115: | ||
| 0x2 || 0x1 || bool || ? || Loop animation || |
| 0x2 || 0x1 || bool || ? || Loop animation || |
||
|- |
|- |
||
| 0x3 || 0xD || || || |
| 0x3 || 0xD || || || Padding || |
||
|- |
|- |
||
| 0x10 || 0x20 || [[Vector4]][2] || ? || || |
| 0x10 || 0x20 || [[Vector4]][2] || ? || || |
||
Line 133: | Line 141: | ||
=== Animation trigger === |
=== Animation trigger === |
||
{| class="wikitable" |
{| class="wikitable" |
||
|+ Caption text |
|||
|- |
|||
! Name !! Value !! Comments |
! Name !! Value !! Comments |
||
|- |
|- |
Latest revision as of 21:44, 4 October 2023
VehicleAnimation | |
---|---|
Resource names | *_VANM *Vehicle ID, e.g. PUSMC01 |
Type ID | 0x10023 |
Category | Game-specific (Burnout Paradise) |
Memory distribution |
Main Memory only |
Editor available? |
No |
The vehicle animation resource type stores per-vehicle user-triggered animations, working in conjunction with a Body Part Remap Data resource.
Structures
Note: This type has no available debugging symbols. All structures are based on user research and are unconfirmed.
Vehicle animation resource
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | uint32_t | ? | Resource size | |
0x4 | 0x4 | uint32_t | ? | Version number | 1 |
0x8 | 0x4 | uint32_t | ? | Number of parts | |
0xC | 0x4 | BrnAnimationPart* | ? | Parts | |
0x10 | 0x4 | uint32_t | ? | Number of animation data entries | |
0x14 | 0x4 | BrnVehicleAnimation* | ? | Animation data | |
0x18 | 0x4 | uint32_t | ? | Number of state entries | |
0x1C | 0x4 | BrnVehicleStateAnimation* | ? | State data | |
0x20 | 0x4 | int8_t[4] | ? | Wheel part model indices | Order: Front left, front right, rear left, rear right -1 if unused; no animation displays |
0x24 | 0xC | Padding | |||
0x30 | 0x100 | Matrix44Affine[4] | ? | Wheel positions | Order: Front left, front right, rear left, rear right Animation only; real positions in deformation resource |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | uint32_t | ? | Resource size | |
0x4 | 0x4 | uint32_t | ? | Version number | 1 |
0x8 | 0x4 | uint32_t | ? | Number of parts | |
0xC | 0x4 | Padding | |||
0x10 | 0x8 | BrnAnimationPart* | ? | Parts | |
0x18 | 0x4 | uint32_t | ? | Number of animation data entries | |
0x1C | 0x4 | Padding | |||
0x20 | 0x8 | BrnVehicleAnimation* | ? | Animation data | |
0x28 | 0x4 | uint32_t | ? | Number of state entries | |
0x2C | 0x4 | Padding | |||
0x30 | 0x8 | BrnVehicleStateAnimation* | ? | State data | |
0x38 | 0x4 | int8_t[4] | ? | Wheel part model indices | Order: Front left, front right, rear left, rear right -1 if unused; no animation displays |
0x3C | 0x4 | Padding | |||
0x40 | 0x100 | Matrix44Affine[4] | ? | Wheel positions | Order: Front left, front right, rear left, rear right Animation only; real positions in deformation resource |
BrnWorld::BrnAnimationPart
To do: Research the non-primary indices. |
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x1 | int8_t | ? | Part model index | Primary index from the graphics resource |
0x1 | 0x1 | int8_t | ? | Second part model index? | From the graphics resource. -1 if unused |
0x2 | 0x1 | int8_t | ? | Third part model index? | From the graphics resource. -1 if unused |
BrnWorld::BrnVehicleAnimation
To do: Research types/flags, understand connection between byte at 0x2 and secondary data. |
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x1 | int8_t | ? | Part model index | From the graphics resource |
0x1 | 0x1 | int8_t | ? | Animation type | See animation type |
0x2 | 0x1 | int8_t | ? | State part model index? | Refers to state part model on cops but not others. See state |
0x3 | 0xD | Padding | |||
0x10 | 0x30 | Matrix33 | ? |
BrnWorld::BrnVehicleStateAnimation
To do: Understand the animation type/action field. |
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x1 | int8_t | ? | Part model index | From the graphics resource |
0x1 | 0x1 | int8_t | ? | Animation trigger | See animation trigger |
0x2 | 0x1 | bool | ? | Loop animation | |
0x3 | 0xD | Padding | |||
0x10 | 0x20 | Vector4[2] | ? |
Enumerations
Animation type
To do: Values such as 3 are used; explore what they do and determine if these are flags or not. |
Name | Value | Comments |
---|---|---|
? | 0 | None |
? | 1 | Rotate |
? | 2 | Transform |
? | 3 | |
? | 4 | Rotate (reversed)? |
? | 5 | Rotate once and return to origin |
Animation trigger
Name | Value | Comments |
---|---|---|
? | 0 | |
? | 1 | Turning |
? | 2 | |
? | 3 | |
? | 4 | |
? | 5 | |
? | 6 | Front right wheel rotation |
? | 7 | Front left wheel rotation |
? | 8 | Rear right wheel rotation |
? | 9 | Rear left wheel rotation |
? | 10 | Brake |
? | 11 | Throttle |
? | 12 | |
? | 13 | Speed |
? | 14 | RPM |
? | 15 | |
? | 16 | |
? | 17 | |
? | 18 | |
? | 19 | |
? | 20 | Hover |
? | 21 | Boost |