OBD:AKVA

From OniGalore
Revision as of 12:31, 18 April 2007 by Neo (talk | contribs)
Jump to navigation Jump to search
ONI BINARY DATA
AKOT << Other file types >> BINA
AKVA : BNV Node Array
switch to XML:AKVA page
Overview @ Oni Stuff
OBD.png

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.


akva_a.gif


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
00 00 00 00 0 BNV's ID (same as index in array)
00 00 00 00 0 index into AKBA array ("from"?)
06 00 00 00 6 index into AKBA array ("to"?)
FF FF FF FF unknown index in array of child BNV
FF FF FF FF unknown index in array of sibling BNV
FF FF FF FF unknown 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 47 3A A0 offset of the pathfinding grid data in the RAW file
F7 01 00 00 503 size of the pathfinding grid data in the RAW file (in bytes)
00 00 80 40 4.000000 tile size of the pathfinding grid
00 00 20 41 10.000000 xmin
00 00 58 C1 -13.500000 ymin
00 80 2A C4 -682.000000 zmin
00 40 47 44 797.000000 xmax
00 00 22 42 40.500000 ymax
00 00 19 C4 612.000000 zmax
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 floor is sloped, bit 16 see below
00 00 00 00 0.000000 x-component of floor normal if sloped, 0 if horizontal
00 00 00 00 0.000000 y-component of floor normal if sloped, 0 if horizontal
00 00 00 00 0.000000 z-component of floor normal if sloped, 0 if horizontal
00 00 00 00 0.000000 bottom plane D coefficient if sloped
00 00 00 00 0.000000 top plane D coefficient if sloped
xmin, ymin, zmin, xmax, ymax, zmax
BNVs are axis-aligned boxes, so the coordinates of two opposed corners define a BNV completely.
It makes sense to specify a "minimal" corner and a "maximal" corner, in that order.
Still unknown and probably important
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 only unknown is the offset of the grid with respect to the center of the BNV's base.
I suppose it's specified by some of the unknown floats. Didn't check.
I don't remember seeing a rotated BNV, but there could be some of those.
geyser 20:02, 28 December 2006 (CET)
What about them, really? Maybe some of the "unknown; always 0" fields?
... (much later) well, they could also be 0 by default (hardcoded)
geyser 23:20, 16 April 2007 (CEST)
Floor normal
ssg's observations; didn't check. geyser
Children and siblings
Those occur when smaller BNVs are 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.
No raw part
Only one example of a BNV that has an x-z grid size but no grid data: BNV 165 in level4 (far side of tarmac, behind the fence)
Notably, that one BNV also has the 16 flag set (see above, before the floor normal).



ONI BINARY DATA
AKOT << Other file types >> BINA
AKVA : BNV Node Array
Level file