Ogre Terrain System         Embed terrain to an Ogre application

In 2009 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.

click to enlarge
click to enlarge
click to enlarge
click to enlarge

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 LODs as well as 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 index buffer usage
  • In-built support for splatting layers, configurable sampler inputs and pluggable material generators
  • Support for generating global normal maps and light maps in a background thread
  • Saving & loading of terrain built in, including loading / processing in a background thread
  • LOD now adapts in real-time to 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 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.

See also