Skip to main content

History: Ogre Terrain System

Source of version: 17

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 in association with the Ogre Paging Component.
{YOUTUBE(movie="http://www.youtube.com/watch?v=qIE5_pltbzQ",allowFullScreen="y")}{YOUTUBE}

!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
        

History

Information Version
Sat 31 of May, 2025 23:26 GMT-0000 paroj 18
Thu 07 of Aug, 2014 13:27 GMT-0000 drwbns 17
Mon 17 of Feb, 2014 11:38 GMT-0000 scrawl Terrain is a component, not Core. 16
Tue 27 of Nov, 2012 18:00 GMT-0000 jazztickets 15
Thu 06 of Sep, 2012 14:37 GMT-0000 Nauk 14
Mon 21 of Nov, 2011 01:40 GMT-0000 Beauty added video about terrain + paging 13
Mon 21 of Nov, 2011 01:30 GMT-0000 Beauty added FAQ link 12
Tue 15 of Nov, 2011 22:51 GMT-0000 spacegaier 11
Mon 01 of Aug, 2011 12:26 GMT-0000 uzik 10
Mon 01 of Aug, 2011 11:47 GMT-0000 uzik added basic description of terrain classes 9
Sat 12 of Feb, 2011 19:34 GMT-0000 Beauty added notes about the Paging Component 8
Thu 10 of Feb, 2011 11:18 GMT-0000 Sinbad 7
Sat 29 of Jan, 2011 19:00 GMT-0000 spacegaier minor spelling changes 6
Sat 29 of Jan, 2011 18:58 GMT-0000 spacegaier added link to Ogre::terrain API 5
Wed 26 of Jan, 2011 11:58 GMT-0000 Beauty 4
Wed 26 of Jan, 2011 11:57 GMT-0000 Beauty added screenshots 3
Wed 26 of Jan, 2011 11:32 GMT-0000 Beauty added link 2
Wed 26 of Jan, 2011 11:13 GMT-0000 Beauty NEW PAGE 1