OBD:AKVA: Difference between revisions
Jump to navigation
Jump to search
m (nearly final revision ^^) |
m (woohoops, forgot how to transclude ^^) |
||
Line 161: | Line 161: | ||
:Those occur when smaller BNVs are completely included into larger ones. | :Those occur when smaller BNVs are completely included into larger ones. | ||
:The bigger BNV only links to its first child. If there are several children, the sibling link is used to define the series. | :The bigger BNV only links to its first child. If there are several children, the sibling link is used to define the series. | ||
::Examples: lobby in | ::Examples: lobby in {{C3}} (level3), big hall under main power line in {{C8}} (level10). | ||
;0x1C - Pathfinding grid | ;0x1C - Pathfinding grid | ||
:The RAW format is rather complex (see [[OBD:AKVA 0|HERE]]). It requires the X and Z size for parsing. | :The RAW format is rather complex (see [[OBD:AKVA 0|HERE]]). It requires the X and Z size for parsing. |
Revision as of 23:58, 19 April 2007
|
- BNVs are volumes that have a pathfinding grid assigned to them.
- The grid itself is in the RAW, while its overall parameters are in the DAT.
Hex | Translation | Meaning |
01 4E 02 00 | 590 | 00590-.AKVA |
01 00 00 06 | 3 | level 3 |
AD DE | dead | not used |
1E 01 00 00 | 286 | 286 BNV nodes in array |
First BNV node (black outline) | ||
00 00 00 00 | 0 | index into AKBP array : BSP tree for this BNV |
00 00 00 00 | 0 | BNV's ID (same as index in array) |
00 00 00 00 | 0 | index into AKBA array : "side" range start |
06 00 00 00 | 6 | index into AKBA array : "side" range end |
FF FF FF FF | -1 | index in array of child BNV |
FF FF FF FF | -1 | index in array of sibling BNV |
FF FF FF FF | -1 | unknown, always -1 |
C9 00 00 00 | 201 | size of the pathfinding grid along x : 201 tiles |
16 00 00 00 | 22 | size of the pathfinding grid along z : 22 tiles |
A0 3A 47 00 | 0x473AA0 | offset of the pathfinding grid data in the RAW file : 0x473AA0 |
F7 01 00 00 | 503 | size of the pathfinding grid data in the RAW file : 503 bytes |
00 00 80 40 | 4.000000 | tile size of the pathfinding grid |
00 00 20 41 | 10.000000 | AABB X- |
00 00 58 C1 | -13.500000 | AABB Y- |
00 80 2A C4 | -682.000000 | AABB Z- |
00 40 47 44 | 797.000000 | AABB X+ |
00 00 22 42 | 40.500000 | AABB Y+ |
00 00 19 C4 | 612.000000 | AABB Z+ |
FE FF | 64534 | unknown, always -2 |
FE FF | 64534 | unknown, always -2 |
00 00 00 00 | 0 | BNV's ID again |
00 00 00 00 | 0 | unknown, always 0 |
00 00 00 00 | 0 | unknown, always 0 |
00 00 00 00 | 0 | unknown, always 0 (was a raw file offset once?) |
04 00 00 00 | 4 | bit 4 always set, bit 1 set if "sloped", bit 16 see below |
00 00 00 00 | 0.000000 | if "sloped", x-component of floor/ceiling normal |
00 00 00 00 | 0.000000 | if "sloped", y-component of floor/ceiling normal |
00 00 00 00 | 0.000000 | if "sloped", z-component of floor/ceiling normal |
00 00 00 00 | 0.000000 | if "sloped", distance of floor plane to origin |
00 00 00 00 | 0.000000 | if "sloped", distance of ceiling plane to origin |
- 0x00 - AKBP tree
- This binary space partition (BSP) tree is used for a refined check against a character's position.
- 0x08 - AKBA range
- The "sides" of a BNV define the quads by which an AI can transit to adjacent BNVs.
- 0x10 - Children and siblings
- Those occur when smaller BNVs are completely included into larger ones.
- The bigger BNV only links to its first child. If there are several children, the sibling link is used to define the series.
- Examples: lobby in CHAPTER 03 . PUZZLE PIECES (level3), big hall under main power line in CHAPTER 08 . AN INNOCENT LIFE (level10).
- 0x1C - Pathfinding grid
- The RAW format is rather complex (see HERE). It requires the X and Z size for parsing.
- BNV 165 in level4 (far side of tarmac, behind the fence) has a non-zero X-Z grid size but no RAW data.
- Notably, that one BNV also has the 16 flag set at 0x5C (see below).
- The grid usually "bleeds" outside the (x,z) extent of the BNV.
- The amount of bleeding is defined by the grid's size (in tiles) and by the size of a tile.
- The grid seems to be always centered of the "floor" of the BNV's AABB (see above).
- 0x30 - AABB
- The axis-aligned bounding boxes are used for a first, quick check against a character's position.
- 0x5C - Floor and ceiling
- Bitset:
- the 4 bit is always set (meaning unknown)
- the 16 bit is set only for BNV 165 of level4 (no RAW part, see above)
- the 1 bit is set for BNVs involving "sloped" floors and ceilings
- (typical environment requiring this feature is compact staircases)
- The sloped floor and ceiling are used to apply a final cut to the volume defined by the AKBP tree
- (the walls of which are typically vertical (possibly not axis-aligned) and horizontal)
- When the "sloped" bit isn't set, all 5 floats are always zero (and are probably ignored anyway).
- The 3 power lines in level10 have all 5 floats equal to zero even though the "sloped" bit is set
- (possibly a design error: interestingly, BNV detection and pathfinding work fine for those 3).
ONI BINARY DATA |
---|
AKOT << Other file types >> BINA |
AKVA : BNV Node Array |
Level file |