Vehicle Animation: Difference between revisions

From Burnout Wiki
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.


=== Header ===
=== 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 models ||
| 0x8 || 0x4 || uint32_t || ? || Number of parts ||
|-
|-
| 0xC || 0x4 || [[#Model|Model]]* || ? || Models ||
| 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 || [[#Animation|Animation]]* || ? || Animation data ||
| 0x14 || 0x4 || [[#BrnWorld::BrnVehicleAnimation|BrnVehicleAnimation]]* || ? || Animation data ||
|-
|-
| 0x18 || 0x4 || uint32_t || ? || Number of modifier entries ||
| 0x18 || 0x4 || uint32_t || ? || Number of state entries ||
|-
|-
| 0x1C || 0x4 || [[#Animation modifier|Animation modifier]]* || ? || Modifier/attribute data ||
| 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 || || || padding ||
| 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 models ||
| 0x8 || 0x4 || uint32_t || ? || Number of parts ||
|-
|-
| 0xC || 0x4 || || || padding ||
| 0xC || 0x4 || || || Padding ||
|-
|-
| 0x10 || 0x8 || [[#Model|Model]]* || ? || Models ||
| 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 || || || padding ||
| 0x1C || 0x4 || || || Padding ||
|-
|-
| 0x20 || 0x8 || [[#Animation|Animation]]* || ? || Animation data ||
| 0x20 || 0x8 || [[#BrnWorld::BrnVehicleAnimation|BrnVehicleAnimation]]* || ? || Animation data ||
|-
|-
| 0x28 || 0x4 || uint32_t || ? || Number of modifier entries ||
| 0x28 || 0x4 || uint32_t || ? || Number of state entries ||
|-
|-
| 0x2C || 0x4 || || || padding ||
| 0x2C || 0x4 || || || Padding ||
|-
|-
| 0x30 || 0x8 || [[#Animation modifier|Animation modifier]]* || ? || Modifier/attribute data ||
| 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 || || || padding ||
| 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
|}
|}


=== Model ===
=== BrnWorld::BrnAnimationPart ===
{{todo|Research the non-primary indices.}}
{{todo|Research the non-primary indices.}}


Line 78: Line 86:
|}
|}


=== Animation ===
=== 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 || ? || Modifier part model index? || Refers to modifier part model on cops but not others. See [[#Animation modifier|animation modifier]]
| 0x2 || 0x1 || int8_t || ? || State part model index? || Refers to state part model on cops but not others. See [[#BrnWorld::BrnVehicleStateAnimation|state]]
|-
|-
| 0x3 || 0xD || || || padding ||
| 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 || || || padding ||
| 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
aka {{{othernames}}}
No Example
Resource names *_VANM
*Vehicle ID, e.g. PUSMC01
Type ID 0x10023
Category Game-specific
(Burnout Paradise)
Memory
distribution
Main Memory only
Imports Unknown
Imported by Unknown
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

Hmmm...
Hmmm...
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

Hmmm...
Hmmm...
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

Hmmm...
Hmmm...
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

Hmmm...
Hmmm...
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