PATH (File Format)
This file format needs more research The BSP tables at the end need research |
The PATH format is used to store an area's wikipedia:Navigation Mesh in the Metroid Prime series. Like navigation meshes in many other game engines (Unity, Source, etc...), the PATH format represents an n-gon mesh partitioned into a BSP tree for rapid queries.
Format
Data Type | Description | Notes |
---|---|---|
long | Version | Always 0x4 in GM8E-0-00 and Trilogy release. |
long | Vertex count | |
#Vertex Entry | Vertex Table | |
long | Edge count | |
#Edge Entry | Edge Table | |
long | Polygon count | |
#Polygon Entry | Polygon Table | |
Unknown | BSP Tables |
Vertex Entry
Offset | Length | Data Type | Description | Notes |
---|---|---|---|---|
0x0 | 12 | float3 | Vertex Position | |
0xC | 12 | float3 | Vertex Normal |
Edge Entry
Offset | Length | Data Type | Description | Notes |
---|---|---|---|---|
0x0 | 4 | long | Polygon A index | |
0x4 | 4 | long | Polygon B index | |
0x8 | 4 | float | Edge Length | |
0xC | 4 | float | Unknown Normalized [0,1] Value | Speculation: Cost of edge traversal (i.e. edge steepness). Characters may have a set threshold when selecting edges to traverse. |
Polygon Entry
Offset | Length | Data Type | Description | Notes |
---|---|---|---|---|
0x0 | 4 | long | Vertex Count | Specifies range of vertices |
0x4 | 4 | long | Vertex Start Index | References into #Vertex Table |
0x8 | 4 | long | Edge Count | Specifies range of edges |
0xC | 4 | long | Edge Start Index | References into #Edge Table |
0x10 | 2 | short | Unknown | Range [1,7] |
0x12 | 2 | short | Unknown meta-data | Possible Values (1,2,4) |
0x14 | 4 | float | Polygon area | |
0x18 | 12 | float3 | Polygon normal | |
0x24 | 4 | long | Self-index | References polygon's own index in table |
0x28 | 12 | float3 | AABB-min | |
0x34 | 12 | float3 | AABB-max | |
0x40 | 12 | float3 | Polygon center position | |
0x4C | 4 | long | Self-index | A duplicate of the 0x24 value for some reason |