Differences

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

Link to this comparison view

Next revision
Previous revision
engine:worldlayout [2017/01/31 04:59] – created 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 =====
  
-{{: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}$ ($-32768$) to 
 +$2^{15}-1$ ($32767$), representing the interval $[-180^°; 180^°[$. 
 + 
 +The conversion functions are: 
 +\\ 
 +$\varphi_{\mathrm{rad}} = \varphi_{\mathrm{deg}} \cdot \pi / 180 = \varphi_{\mathrm{AU}} \cdot \pi / 2^{15}$ 
 +\\ 
 +$\varphi_{\mathrm{deg}} = \varphi_{\mathrm{rad}} \cdot 180 / \pi = \varphi_{\mathrm{AU}} \cdot 180 / 2^{15}$ 
 +\\ 
 +$\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.1485838758.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