OGRE
From GDWiki
| OGRE | |
|---|---|
| |
| Developer: | Ogre Development Team |
| Latest Release: | Version 1.4 |
| Platform: | Windows, Linux, MacOSX |
| Graphics: | DirectX, OpenGL |
| Physics: | Plug-In |
| Network: | No |
| Scripting: | Built-In, Plugins |
| Sound: | No |
| License: | LGPL, OUL (OGRE unrestricted License) |
| Website: | OGRE 3D |
Contents |
Description
OGRE (Object-Oriented Graphics Rendering Engine) is a scene-oriented and flexible 3D engine. It is completely written in C++ and designed to provide a simple access to 3D programming. OGRE is able to use Direct3D and OpenGL as its renderer and supports DX7 and DX9 rendering. Ogre is a 3d rendering library only. It is completely seperated from game specific dependencies. For integration with a game framework see the Yake Game Framework..
History
A brief history of OGRE, and its milestones:
- 1999ish
- Sinbad realises that his 'DIMClass' project, a project to make an easy to use object-oriented Direct3D library, has become so abstracted that it really doesn't need to be based on Direct3D any more. Begins planning a more ambitious library which could be API and platform independent.
- February 25 2000
- Sourceforge project registered, OGRE name coined. No development starts due to other commitments but much pondering occurs.
- October 2000
- Full-on design starts, refactoring of DIMClass begins.
- December 2000
- Major design pieces are in place.
- February 2001
- First platform manager complete (Win32), D3D7 is now the first rendersystem
- February 2001
- OGRE becomes completely dynamically loaded, rendersystems & platform managers as plugins
- April 1 2001
- Made an important design decision to separate the class hierarchies of spatial structures (SceneNode) and scene contents (MovableObject) and join them through attachment to reduce dependencies and improve flexibility
- May 2001
- Entity / SubEntity / Mesh / SubMesh system created
- July 3 2001
- Ogre 0.6 released
- January 14 2002
- Controllers introduced
- Feb 2002
- cearny joins the core team
- March 2002
- Ogre 0.98b - Material scripts make their first appearance. ROAM landscape engine appears (later dropped in favour of geomipmapping). Billboards. First time STLport is required because of increased STL compliance.
- April 2002
- temas joins the core team
- June 2002
- Ogre 0.99b - Particle systems and misc stuff
- September 2002
- Ogre 0.99d - Linux support, OpenGL renderer, skeletal animation, Milkshape exporter, Codec structures
- October 2002
- janders joins the core team
- October 2002
- Ogre 0.99e - XMLConverter appears, octree scene manager appears, D3D8 renderer, spline animation interpolation, font rendering via Freetype
- December 2002
- Mesh LOD, Geomipmapping terrain, stencil operations
- January 2003
- First release of Blender exporter
- Feb 2003
- Ogre 0.10.0 (version reformatted) - 3DS Max exporter, D3D9 renderer
- Mid 2003
- cearny & janders leave project (inactive)
- June 2003
- Ogre 0.11.0 - SceneQuery added, ODE collision demonstrated in BspCollision, Maya and Wings exporters, lots of small enhancements
- May 2003
- _mental_ joins the core team
- September 2003
- Ogre 0.12.0 - hardware buffer interfaces, vertex declarations, complete geometry system overhaul. First time we branched the codebase into 'maintenance' and 'development' branches
- January 2004
- Ogre 0.13.0 - major material overhaul, vertex & pixel shader support for assembler (D3D & GL), Cg and HLSL, XCode support
- May 2004
- Ogre 0.14.0 - shadows, hardware skinning, projective texturing
- July 2004
- wumpus joins the core team
- October 2004
- Ogre 0.15.0 - binary mesh format made more flexible, GLSL support, Radian/Degree classes,
- February 2005
- Ogre v1.0.0 Final Released - resource system overhaul, hardware pixel buffers, HDR, CEGui, XSI exporter
- March 2005
- Ogre is 'Project of the Month' on Sourceforge
- July 2005
- Jeff 'nfz' Doyle joins the OGRE Team
- November 4 2005
- Ankh is released as the first commercial product using Ogre
- May 7 2006
- Ogre 1.2 "Dagon" is officially released
Features
Productivity features:
- Simple, easy to use OO interface designed to minimise the effort required to render 3D scenes, and to be independent of 3D implementation i.e. Direct3D/OpenGL.
- Extensible example framework makes getting your application running is quick and simple
- Common requirements like render state management, spatial culling, dealing with transparency are done for you automatically saving you valuable time
- Clean, uncluttered design and full documentation of all engine classes
- Proven, stable engine used in several commercial products
Platform & 3D API support:
- Direct3D and OpenGL support
- Windows (all major versions), Linux and Mac OSX support
- Builds on Visual C++ and Code::Blocks on Windows
- Builds on gcc 3+ on Linux / Mac OSX (using XCode)
Material / Shader support:
- Powerful material declaration language allows you to maintain material assets outside of your code
- Supports vertex and fragment programs (shaders), both low-level programs written in assembler, and high-level programs written in Cg, DirectX9 HLSL, or GLSL and provides automatic support for many commonly bound constant parameters like worldview matrices, light state information, object space eye position etc
- Supports the complete range of fixed function operations such as multitexture and multipass blending, texture coordinate generation and modification, independent colour and alpha operations for non-programmable hardware or for lower cost materials
- Multiple pass effects, with pass iteration if required for the closest 'n' lights
- Support for multiple material techniques means you can design in alternative effects for a wide range of cards and OGRE automatically uses the best one supported
- Material LOD support; your materials can reduce in cost as the objects using them get further away
- Load textures from PNG, JPEG, TGA, BMP or DDS files, including unusual formats like 1D textures, volumetric textures, cubemaps and compressed textures (DXT/S3TC)
- Textures can be provided and updated in realtime by plugins, for example a video feed
- Easy to use projective texturing support
Meshes:
- Flexible mesh data formats accepted, separation of the concepts of vertex buffers, index buffers, vertex declarations and buffer mappings
- Biquadric Bezier patches for curved surfaces
- Progressive meshes (LOD), manual or automatically generated
- Static geometry batcher
Animation:
- Sophisticated skeletal animation support
- blending of multiple animations with variable weights
- variable/multiple bone weight skinning
- software and hardware-accelerated skinning pipelines with intelligent buffer sharing
- manual bone control
- Configurable interpolation modes, accuracy vs speed tradeoffs
- blending of multiple animations with variable weights
- Flexible shape animation support
- Morph animation for legacy applications where you wish to perform simple linear blends between shape snapshots
- Pose animation for modern shape animation, allowing you to blend many poses at variable weights along a timeline, for example expression / mouth shapes to perform facial animation
- Both techniques can be implemented in hardware and software depending on hardware support
- Animation of SceneNodes for camera paths and similar techniques, using spline interpolation where needed
- Generic animation tracks can accept pluggable object adaptors to enable you to animate any parameter of any object over time
Scene Features:
- Highly customisable, flexible scene management, not tied to any single scene type. Use predefined classes for scene organisation if they suit or plug in your own subclass to gain full control over the scene organisation
- Several example plugins demonstrate various ways of handling the scene specific to a particular type of layout (e.g. BSP, Octree)
- Hierarchical scene graph; nodes allow objects to be attached to each other and follow each others movements, articulated structures etc
- Multiple shadow rendering techniques, both modulative and additive techniques, stencil and texture based, each highly configurable and taking full advantage of any hardware acceleration available.
- Scene querying features
Special Effects:
- Compositor system, allowing for full-screen postprocessing effects to be defined easily, via scripts if desired
- Particle Systems, including easily extensible emitters, affectors and renderers (customisable through plugins). Systems can be defined in text scripts for easy tweaking. Automatic use of particle pooling for maximum performance
- Support for skyboxes, skyplanes and skydomes, very easy to use
- Billboarding for sprite graphics
- Ribbon trails
- Transparent objects automatically managed (rendering order & depth buffer settings all set up for you)
Misc features:
- Common resource infrastructure for memory management and loading from archives (ZIP, PK3)
- Flexible plugin architecture allows engine to be extended without recompilation
- 'Controllers' allow you to easily organise derived values between objects e.g. changing the colour of a ship based on shields left
- Debugging memory manager for identifying memory leaks
- ReferenceAppLayer provides an example of how to combine OGRE with other libraries, for example ODE for collision & physics
- XMLConverter to convert efficient runtime binary formats to/from XML for interchange or editing
Tutorials and Source Code
Community Help
Having problems? Try asking our community on the forums! Don't forget to check the engines' forums! OGRE 3D forums


