OBD:PLEA

From OniGalore
Revision as of 01:49, 7 February 2021 by ValBot (talk | contribs) (changing link from http->https)
Jump to navigation Jump to search
ONI BINARY DATA
OTLF << Other file types >> PNTA
PLEA : Plane Equation Array
switch to XML:PLEA page
Overview @ Oni Stuff
OBD.png


Plea a.gif


Offset Type Raw Hex Value Description
0x00 res_id 01 41 02 00 577 00577-.PLEA
0x04 lev_id 01 00 00 06 3 level 3
0x08 char[20] AD DE dead unused
0x1C int32 03 00 00 00 13554 array size
First element (black outline)
0x00 float 00 00 00 00 0.000000 'a' coefficient of the plane equation (x component of plane's normal)
0x04 float 00 00 00 00 0.000000 'b' coefficient of the plane equation (y component of plane's normal)
0x08 float 00 00 80 3F 1.000000 'c' coefficient of the plane equation (z component of plane's normal)
0x0C float 00 00 19 44 612.000000 'd' coefficient of the plane equation


Plane equation
The canonical equation for a plane in 3D is :
a * x + b * y + c * z + d = 0
where (a, b, c, d) are 4 real numbers. The plane is the set of points (x, y, z) verifying that equation.
The four floats in one of a PLEA's packages are exactly the (a, b, c, d) of the above definition.
In that case, the first package of the above example defines the plane (0 * x + 0 * y + 1 * z + 612 = 0), i.e., the vertical plane z = -612.

Planes are used for environment culling, collision detection and BSP.


Note on plane references
Planes are referenced by index from various other places. The high bit of a plane index is always used to indicate the direction of the plane's normal (or "which face of the plane is up"). That means that if the high bit is set all 4 float values need to be negated to get the referenced plane.


ONI BINARY DATA
OTLF << Other file types >> PNTA
PLEA : Plane Equation Array
Level file