3D model format: Difference between revisions

From Trickstart wiki
No edit summary
No edit summary
Line 67: Line 67:
|'''0x2c'''
|'''0x2c'''
|'''0xc0'''
|'''0xc0'''
|vertex data?
|[[3D model format#Vertex|vertex]] data?
|-
|-
|'''4'''
|'''4'''

Revision as of 19:02, 10 January 2021

Stores 3D models, more investigation needed.

Thanks to Martin for initial format reversing.

  • Magic - PMD V1.83
    • some files use version 1.82 instead, but they aren't used by the game, the engine in PC version won't recognise anything other than 1.83
    • There is one unused mention of PMD V1.71 in the game binary
Offset Size Description
0x0 0x18? Magic - PMD V1.83
0x18 0x4 Type - 0 = shadow & skybox; 1 = track; 2 = car
0x1C 0x4 Zeroes?
0x20 0x94? offsetsTable
0xB4 0x94? offsetsTable sizes

offsetsTable

You have to add 0x148 to each value to get proper pointers

Bold IDs are in all files, rest of them are specific for tracks

Some of these are either unused or possibly repurposed

All blocks seems to be 32-bit alignedIf the offset/size address is empty it's always set to zero

ID offset size offset Description
0 0x20 0xb4 Martin think it might be some sort of colider
1 0x24 0xb8 polygons data?
2 0x28 0xbc UV texture data?
3 0x2c 0xc0 vertex data?
4 0x30 0xc4 faces data?
5 0x34 0xc8 Textures names
6 0x38 0xcc Offsets to texture names, absolute addresses in file
7 0x3c 0xd0 Each element is 16B long, ?, ?, float, float
8 0x40 0xd4 Holds IDs of elements in 7
9 0x44 0xd8 surface transforms data?
10 0x48 0xdc surfaces data?
11 0x4c 0xe0
12 0xe4 for non-tracks it's size of 1 divided by 16, unknown for tracks
13 0x54 0xe8
14 0x58 for tracks offset marks end of file
15 0x5c 0xf0
16 0x60 0xf4
17 0x64 0xf8
18 0xfc stores size of 20 divided by 0x90
19 0x100
20 0x70 0x104
21 0x74 0x108
22 0x78 0x10c
23 0x7c 0x110
24 0x80 0x114
25 0x84 0x118
26 0x88 0x11c
27 0x8c 0x120
28 0x90 0x124
29 0x94 0x128
30 0x98 0x12c
31 0x9c 0x130
32 0xa0 0x134
33
34
35
36

Basic elements

Vertex

Offset Type Description
0x0 float X
0x4 float Y
0x8 float Z
0xC float unknown, might be weight

Polygon

UV mapping

Face

Transform

Surface

Probably not surface, Martin used that name in his script, but it feels more like a singular mesh by the look of binary file itself