Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
engine:worldlayout [2017/02/04 16:36] – ↷ Page moved from trs:savegame:engine:worldlayout to engine:worldlayout stohrendorfengine:worldlayout [2017/06/04 21:34] (current) zdimension
Line 1: Line 1:
 ====== World Layout ====== ====== World Layout ======
 +
 +===== Coordinate System =====
 +
 +The engine uses a right-handed coordinate system, with $X$ to the right, $Y$ down, and $Z$ forward.
 +
 +The mapping between OpenGL and the engine's coordinate system is $(x, y, z)_\mathrm{gl} = (x, -y, -z)$.
 +
 +==== Units ====
 +
 +The most important "metering" in the engine is the //sector size//, which defines a length of $1024$ units,
 +and approximately equals two meters in the real world. 
 +
 +Another significant, but less important, metering is the //click//, which is a quarter sector size ($256$ units).
 +It is used to define floor and ceiling slants, and is also a "rule of thumb" 
 +
 +==== Sectors ====
 +
 +The whole engine world is divided into //sectors// A sector (which defines a $1024 \times 1024$ rectangular area)
 +defines
 +  * ceiling and floor layout,
 +  * behaviour, and
 +  * the adjoining room for that sector.
  
 ===== Angles ===== ===== Angles =====
Line 5: Line 27:
 {{:engine:angle.png?nolink |}} {{:engine:angle.png?nolink |}}
  
-"AU" is short for "Angular Unit". $1$ AU equals the $2^{16}$th of a full circle and ranges from $-2^{15}$ to $2^{15}-1$, representing the interval $[-180^°; 180^°[$.+"AU" is short for "Angular Unit". $1$ AU equals the $2^{16}$th of a full circle and ranges from $-2^{15}$ ($-32768$) to 
 +$2^{15}-1$ ($32767$), representing the interval $[-180^°; 180^°[$.
  
 The conversion functions are: The conversion functions are:
Line 15: Line 38:
 $\varphi_{\mathrm{AU}} = \varphi_{\mathrm{deg}} \cdot 2^{15} / 180 = \varphi_{\mathrm{rad}} \cdot 2^{15} / \pi$ $\varphi_{\mathrm{AU}} = \varphi_{\mathrm{deg}} \cdot 2^{15} / 180 = \varphi_{\mathrm{rad}} \cdot 2^{15} / \pi$
  
 +==== YPR Rotation ====
 +The engine uses Euler angles to express rotations, and applies them in ZXY order.
 +
 +
 +===== Rooms & Portals =====
 +
 +The world is divided into so-called //rooms//, which are basically subdivisions of the whole level.
 +A room may be physically incomplete, i.e. a large physical room may be artificially split into two engine rooms.
 +Each room is connected to its direct neighbors through //portals// The engine uses these visibility portals
 +to determine which room should be rendered and which not.
 +
 +See https://en.wikipedia.org/wiki/Portal_rendering for a more in-depth explanation.
engine/worldlayout.1486226193.txt.gz · Last modified: (external edit)
Back to top
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0