OBD:PLEA: Difference between revisions

From OniGalore
Jump to navigation Jump to search
m (what the?)
(Cleanup)
Line 12: Line 12:
{{OBDtr| 0x1C | int32    |00FFFF| 03 00 00 00 | 13554 | array size }}
{{OBDtr| 0x1C | int32    |00FFFF| 03 00 00 00 | 13554 | array size }}
{{OBDtrBK}}
{{OBDtrBK}}
{{OBDtr| 0x00 | float    |FFC8C8| 00 00 00 00 | 0.000000 | 1st coefficient of the plane equation (x-part of normal vector) }}
{{OBDtr| 0x00 | float    |FFC8C8| 00 00 00 00 | 0.000000 | 'a' coefficient of the plane equation (x component of plane's normal) }}
{{OBDtr| 0x04 | float    |FFFFC8| 00 00 00 00 | 0.000000 | 2nd coefficient of the plane equation (y-part of normal vector) }}
{{OBDtr| 0x04 | float    |FFFFC8| 00 00 00 00 | 0.000000 | 'b' coefficient of the plane equation (y component of plane's normal) }}
{{OBDtr| 0x08 | float    |C8FFC8| 00 00 80 3F | 1.000000 | 3rd coefficient of the plane equation (z-part of normal vector) }}
{{OBDtr| 0x08 | float    |C8FFC8| 00 00 80 3F | 1.000000 | 'c' coefficient of the plane equation (z component of plane's normal) }}
{{OBDtr| 0x0C | float    |C8FFFF| 00 00 19 44 |612.000000| 4th coefficient of the plane equation }}
{{OBDtr| 0x0C | float    |C8FFFF| 00 00 19 44 |612.000000| 'd' coefficient of the plane equation }}
|}
|}


Line 23: Line 23:
::a * x + b * y + c * z + d = 0
::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.
:where (a, b, c, d) are 4 real numbers. The plane is the set of points (x, y, z) verifying that equation.
:It is likely that the four floats in one of a PLEA's packages are exactly the (a, b, c, d) of the above definition.
: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.
::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.
:It is possible, however, that the definition used is different, e.g. : a * x + b * y + c * z = d .
Planes are used for environment culling and collision detection.
::In that case, the first package of the above example defines the plane (0 * x + 0 * y + 1 * z = 612), i.e., the vertical plane z = 612.
;Front/back
:The 4 numbers (a, b, c, d) can also serve to define whether a 3D point (x, y, z) is on the "front" side of the plane or in the "back".
::"points are in front of the plane if a * x + b * y + c * z >= d" (from commented Myth source)
:That would mean the plane equation is a * x + b * y + c * z = d , ''not'' a * x + b * y + c * z + d = 0 .
::It's rather easy to check (just flip the "normal" of the plane equation for a known axis-aligned quad).
:The oriented "plane inequation" can be used for: culling; collision.
{{OBD_File_Footer | type=PLEA | prev=OTLF | next=PNTA | name=Plane Equation Array | family=Level}}
{{OBD_File_Footer | type=PLEA | prev=OTLF | next=PNTA | name=Plane Equation Array | family=Level}}

Revision as of 19:39, 13 February 2008

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 and collision detection.

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