Skip to main content

History: Ogre Terrain System

Source of version: 18 (current)

Copy to clipboard
            In 2009 ((User:Sinbad|sinbad)) (founder of Ogre) started to create a new terrain system. It replaces the old ((Terrain Scene Manager)) and includes ideas of other terrain addons, key of which is being a component system which can live within any SceneManager rather than being one itself. Since Ogre 1.7 the new Ogre Terrain Manager is an Ogre component.

{DIV(class="clearRight")}{img fileId="1989" align="right" thumb="y" rel="box[g]" width="300" desc="click to enlarge" stylebox="border"}{DIV}
{DIV(class="clearRight")}{img fileId="1990" align="right" thumb="y" rel="box[g]" width="300" desc="click to enlarge" stylebox="border"}{DIV}

!Features

* SceneManager independent, separate optional component (OGRE_HOME/Components/Terrain)
* Integrates with (optional) Paging component
* Inherently editable - a lot like ((ETM))
* Hierarchical geometry batching: batch count reduced at lower ((-LOD|LODs)) as well as ((-vertex|vertex)) count. At the lowest level of detail, the entire terrain page is a single batch which has obvious advantages for large paging terrains over the fixed tiles previously used. There is also the possibility to go to a lower overall resolution and to drop detail geometry in the far distance compared to non-hierarchical approaches.
* Skirts are used instead of stitching to avoid cracks in geometry. This means fewer indexing arrangements and lower overall ((Vertex and Index Buffers|index buffer)) usage
* In-built support for ((-Terrain Splatting|splatting layers)), configurable sampler inputs and pluggable ((-material|material)) generators
* Support for generating global ((-Normal Mapping|normal maps)) and ((Light mapping|light maps)) in a background thread
* Saving & loading of terrain built in, including loading / processing in a background thread
* ((-LOD|LOD)) now adapts in real-time to ((-camera|camera)) settings (viewport sizes & LOD bias) so you can use the same terrain with multiple views efficiently

The Terrain System can be used in combination with the ''Paging Component''.
Features of the __Paging Component__:
* SceneManager-independent, separate optional component (OGRE_HOME/Components/Paging)
* Pluggable strategy components to control paging strategy for a section of the scene
* Pluggable content components to control paging of content
* Plugggable collection components so that paged elements can be composed or selected between in different ways (e.g. paging many ((-LOD|LOD)) levels within a page) 

The Terrain System requires the CgProgramManager plugin to function correctly.

!Using Ogre Terrain

((Basic Tutorial 3)) shows how you can use this terrain system.

Some definitions:

* Ogre::Terrain = a small group of tiles, lets say 256x256
* Ogre::TerrainGroup = a group of Terrains, there is no actual limit of how many terrains it can have. The Terrains hardware limit is the number of Ogre::Terrains visible/in memory.
* Ogre::TerrainPaging = A wrapper to add/remove predetermined Ogre::Terrains on the fly (so you may have lets say 1000 Ogre::Terrains in a TerrainGroup but only the 9 of them around the player is visible at once)
* PagingManager = general purpose paging handler, not limited to terrain but also supplies functions to page other elements in the scene.

How paging interacts with terrain:

If you are not using paging:

* All terrains you add to a group are loaded.

If you are using paging:

* All terrains in the radius LOADRADIUS, centered around the current camera position, will be loaded.
* Terrains already loaded in the radius HOLDRADIUS will be kept in memory.

!Video
This video shows the Ogre Terrain Component.

{vimeo url=https://vimeo.com/7592034}

!See also
* [http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_terrain.html|Ogre::Terrain API]
* ((Basic Tutorial 3)) - How to use the terrain system
* ((Ogre Terrain Component FAQ))
* [http://www.ogre3d.org/forums/viewtopic.php?f=11&t=50674|New Terrain Early Shots] - Forum topic for Development Talk
* [http://www.ogre3d.org/forums/viewtopic.php?f=4&t=48320|Paging as a core feature - design notes] - Forum topic
* [http://www.ogre3d.org/forums/viewtopic.php?f=4&t=56064|Future plans for Ogre::Terrain?] - Forum topic
* [http://www.ogre3d.org/addonforums/viewtopic.php?f=8&t=13224|Mogre terrain and paging] - Forum topic for usage with ((Mogre)) (.NET)
* ((Artifex Terra)) - A terrain and world editor supporting the Ogre Terrain System
* ((Ogitor)) - A Scene Editor, which can create terrain based on the Ogre Terrain System
* ((SceneManagersFAQ)) - An overview for other scene managers