OBD:OTLF: Difference between revisions

944 bytes removed ,  12 September 2007
m
design
No edit summary
m (design)
Line 1: Line 1:
[[Main Page]] >> [[OBD:Oni Binary Data|Oni Binary Data]] >> [[OBD:File types|File Types]] >> OTLF File
{{OBD_File_Header | type=OTLF | prev=OTIT | next=PLEA | name=Oct Tree Leaf Node Array | family=Level | align=center}}




<CENTER>[[OBD:OTIT|<==]] <FONT SIZE=5>OTLF File</FONT> [[OBD:PLEA|==>]]<BR>
[[image:otlf_a.gif]]
<FONT SIZE=2>Oct Tree Leaf Node Array - Level File</FONT></CENTER>




http://www6.fh-eberswalde.de/user/dkriesch/onistuff/images/otlf_a.gif
{{Table}}
{{OBDth}}
{{OBDtr| 0x00 | res_id  |FF0000| 01 45 02 00 | 581              | 00581-.OTLF }}
{{OBDtr| 0x04 | lev_id  |FFFF00| 01 00 00 06 | 3                | level 3 }}
{{OBDtr| 0x08 | char[20] |00FF00| AD DE      | dead            | unused }}
{{OBDtr| 0x1C | int32    |00FFFF| 03 49 00 00 | 18691            | array size }}
{{OBDtrBK}}
{{OBDtr| 0x00 | int12-20 |FFC8C8| 00 00 00 00 | 0, 0            | bits 0-11 (12 bits) contain the number of gunk quads that intersect this leaf, bits 12-31 (20 bits) contain the index of the gunk quad list; see details below }}
{{OBDtr| 0x04 | int32hb  |FFFFC8| FF FF FF FF | -1              | negative x neighbour }}
{{OBDtr| 0x08 | int32hb  |C8FFC8| 01 00 00 80 | 1, high bit      | positive x neighbour }}
{{OBDtr| 0x0C | int32hb  |C8FFFF| FF FF FF FF | -1              | negative y neighbour }}
{{OBDtr| 0x10 | int32hb  |FFC8FF| 02 00 00 80 | 2, high bit      | positive y neighbour }}
{{OBDtr| 0x14 | int32hb  |FFC800| FF FF FF FF | -1              | negative z neighbour }}
{{OBDtr| 0x18 | int32hb  |C800C8| 04 00 00 80 | 4, high bit      | positive z neighbour }}
{{OBDtr| 0x1C |int9-9-9-5|C87C64| 7F FE FC 39 | 127, 127, 127, 7 | bits 0-8 (9 bits) contain the index of max x, bits 9-17 (9 bits) contain the index of max y, bits 18-26 (9 bits) contain the index of max z and bits 27-31 (5 bits) contain the index of the size of this leaf; see details below }}
{{OBDtr| 0x20 | int8-24  |B0C3D4| 00 00 00 00 | 0, 0            | bits 0-7 (8 bits) intersected BNV count, bits 8-31 (24 bits) BNV list index; see details below }}
|}


{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0
|- ALIGN=CENTER BGCOLOR="#FFDDBB"
| WIDTH=15% | <B>Hex</B>
| WIDTH=15% | <B>Translation</B>
| WIDTH=70% | <B>Meaning</B>
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| BGCOLOR="#FF0000" | 01 45 02 00
| 581
| ALIGN=LEFT | 00581-.OTLF
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| BGCOLOR="#FFFF00" | 01 00 00 06
| 3
| ALIGN=LEFT | level 3
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| BGCOLOR="#00FF00" | AD DE
| dead
| ALIGN=LEFT | not used
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| BGCOLOR="#00FFFF" | 03 49 00 00
| 18691
| ALIGN=LEFT | 18691 packages follow (one package is edged in black)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#000000"
| COLSPAN=3 | <FONT SIZE=2 COLOR="#FFFFFF">Below follows the first package.</FONT>
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| BGCOLOR="#FFC8C8" | 00 00 00 00
| 0, 0
| ALIGN=LEFT | Bits 0-11 (12 bits) contain the number of gunk quads that intersect this leaf, bits 12-31 (20 bits) contain the index of the gunk quad list. See details below.
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| BGCOLOR="#FFFFC8" | FF FF FF FF
| -1
| ALIGN=LEFT | negative x neighbour
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| BGCOLOR="#C8FFC8" | 01 00 00 80
| 1, high bit
| ALIGN=LEFT | positive x neighbour
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| BGCOLOR="#C8FFFF" | FF FF FF FF
| -1
| ALIGN=LEFT | negative y neighbour
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| BGCOLOR="#FFC8FF" | 02 00 00 80
| 2, high bit
| ALIGN=LEFT | positive y neighbour
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| BGCOLOR="#FFC800" | FF FF FF FF
| -1
| ALIGN=LEFT | negative z neighbour
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| BGCOLOR="#C800C8" | 04 00 00 80
| 4, high bit
| ALIGN=LEFT | positive z neighbour
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| BGCOLOR="#C87C64" | 7F FE FC 39
| 7, 127, 127, 127
| ALIGN=LEFT | Bits 0-8 (9 bits) contain the index of max x, bits 9-17 (9 bits) contain the index of max y, bits 18-26 (9 bits) contain the index of max z and bits 27-31 (5 bits) contain the index of the size of this leaf. See details below.
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| BGCOLOR="#B0C3D4" | 00 00 00 00
| 0
| ALIGN=LEFT | Bits 0-7 (8 bits) intersected BNV count, bits 8-31 (24 bits) BNV list index. See details below.
|}


;Intersected gunk quads
;Intersected gunk quads
:An octtree leaf (OTLF) stores its size and position and the gunk quads that intersect it. The first field contains an index/count pair that is used to access the first IDXA field that is stored in the [[OBD:AKOT|AKOT]] that owns this leaf. This IDXA contains the gunk quad numbers that intersect the leaf.
:An octtree leaf (OTLF) stores its size and position and the gunk quads that intersect it. The first field contains an index/count pair that is used to access the first [[OBD:IDXA|IDXA]] field that is stored in the [[OBD:AKOT|AKOT]] that owns this leaf. This [[OBD:IDXA|IDXA]] contains the gunk quad numbers that intersect the leaf.
;Intersected BNVs
;Intersected BNVs
:An octtre leaf can intersect some BNVs (see [[AKVA|AKVA]]). The last field contains the index and count of this list in the second IDXA field of [[AKOT|AKOT]].
:An octtre leaf can intersect some BNVs (see [[OBD:AKVA|AKVA]]). The last field contains the index and count of this list in the second [[OBD:IDXA|IDXA]] field of [[OBD:AKOT|AKOT]].
;Position and size
;Position and size
:The position (of leaf's positive corner) is stored as three 9 bit fields. These values are not the x, y and z coordinates themselfs but they are indexes into a constant table. This constant table has 512 entries starting with -4080.0 and going up to 4096.0 in 16 units increments.  
:The position (of leaf's positive corner) is stored as three 9 bit fields. These values are not the x, y and z coordinates themselfs but they are indexes into a constant table. This constant table has 512 entries starting with -4080.0 and going up to 4096.0 in 16 units increments.  
Line 86: Line 40:
;Example
;Example
:The above leaf does not intersect any quads, has its maximum corner at (-2048.0, -2048.0, -2048.0), a size of 2048.0, no neighbours for all negative faces (its right in the negative corner of the environment) and positive faces have leafs as neighbours (no quadtree nodes here).
:The above leaf does not intersect any quads, has its maximum corner at (-2048.0, -2048.0, -2048.0), a size of 2048.0, no neighbours for all negative faces (its right in the negative corner of the environment) and positive faces have leafs as neighbours (no quadtree nodes here).
<HR>
<CENTER>[[OBD:OTIT|<==]] <B>OTLF File</B> [[OBD:PLEA|==>]]</CENTER>
<HR>




[[Main Page]] >> [[OBD:Oni Binary Data|Oni Binary Data]] >> [[OBD:File types|File Types]] >> OTLF File
{{OBD_File_Footer | type=OTLF | prev=OTIT | next=PLEA | name=Oct Tree Leaf Node Array | family=Level}}
1,051

edits