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.
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
- Ogre::Terrain API
- Basic Tutorial 3 - How to use the terrain system
- Ogre Terrain Component FAQ
- New Terrain Early Shots - Forum topic for Development Talk
- Paging as a core feature - design notes - Forum topic
- Future plans for Ogre::Terrain? - Forum topic
- 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