OpenSceneGraph 1.2 review

by on

Open Scene Graph is a cross-platform OpenGL/C++ library for real-time visualization

License: GPL (GNU General Public License)
File size: 5162K
Developer: Robert Osfield
0 stars award from

Open Scene Graph is a cross-platform OpenGL/C++ library for real-time visualization. Uses range from visual simulation, scientific modeling, virtual reality, and games.

The OpenSceneGraph is an open source high peformance 3D graphics toolkit, used by application developers in fields such as visual simulation, games, virtual reality, scientific visualization and modelling. Written entirely in Standard C++ and OpenGL it runs on all Windows platforms, OSX, GNU/Linux, IRIX, Solaris and FreeBSD operating systems.

Here are some key features of "OpenSceneGraph":

Supports view frustum culling, occlusion culling, small feature culling, Level Of Detail (LOD) nodes, state sorting, vertex arrays and display lists as part of the core scene graph. These together make the OpenSceneGraph one of the highest performance scene graph available. User feedback is that performance matches or surpasses that of much more established scene graphs such as Performer, VTree, Vega Scene Graph and Java3D! The OpenSceneGraph also supports easy customization of the drawing process, such as implementation of Continuous Level of Detail (CLOD) meshes on top of the scene graph (see Virtual Terrain Project and Delta3D).


The core scene graph encapsulates the majority of OpenGL functionality including the latest extensions, provides rendering optimizations such as culling and sorting, and a whole set of add on libraries which make it possible to develop high peformance graphics applications very rapidly. The application developer is freed to concentrate on content and how that content is controlled rather than low level coding.

Combining lessons learned from established scene graphs like Performer and Open Inventor, with modern software engineering methods like Design Patterns, along with a great deal of feedback early on in the development cycle, it has been possible to design a library that is clean and extensible. This has made it easy for users to adopt to the OpenSceneGraph and to integrate it with their own applications.

For reading and writing databases the database library (osgDB) adds support for a wide variety of database formats via a extensible dynamic plugin mechansim - the distribution now includes 45 separate plugins for loading various 3D database and image formats. 3D database loaders include OpenFlight (.flt), TerraPage (.txp) including multi-threaded paging support, LightWave (.lwo), Alias Wavefront (.obj), Carbon Graphics GEO (.geo), 3D Studio MAX (.3ds), Peformer (.pfb), Quake Character Models (.md2). Direct X (.x), and Inventor Ascii 2.0 (.iv)/ VRML 1.0 (.wrl), Designer Workshop (.dw) and AC3D (.ac) and the native .osg ASCII format. Image loaders include .rgb, .gif, .jpg, .png, .tiff, .pic, .bmp, .dds (include compressed mip mapped imagery), .tga and quicktime (under OSX). A full range of high quality, anti-aliased fonts can also be loaded via the freetype plugin.

The scene graph also has a set of Node Kits which are separate libraries that can be compiled in with your applications or loaded in at runtime, which add support for particle systems (osgParticle), high quality anti-aliased text (osgText), special effects framework (osgFX), OpenGL shader language support (osgGL2?), large scale geospatial terrain database generation (osgTerrain), and navigational light points (osgSim).

The community has also developed a number of additional Node Kits such as osgNV (which includes support for NVidia's vertex, fragment, combiner etc extension and NVidia's Cg shader language.), Demeter (CLOD terrain + integration with OSG). osgCal (which integrates Cal3D and the OSG), osgVortex (which integrates the CM-Labs Vortex physics enginer with OSG) and a whole set libraries that integrating the leading Windowing API's can be found in the WindowingToolkits section.

The project has also been integrated with VR Juggler and Vess virtual realilty the frameworks, with others in development.


The core scene graph has been designed to have minimal dependency on any specific platform, requiring little more than Standard C++ and OpenGL. This has allowed the scene graph to be rapidly ported to a wide range of platforms - originally developed on IRIX, then ported to Linux, then to Windows, then FreeBSD, Mac OSX, Solaris, HP-UX and even PlayStation2!

The core scene graph library being completely windowing system independent makes it easy for users to add their own window-specific libraries and applications on top. In the distribution there is already the osgProducer library which integrates with OpenProducer, and in the Community/Applications section of this website one can find examples of applications and libraries written on top of GLUT, Qt, MFC, WxWindows and SDL. Users have also integrated it with Motif, and X.


The scene graph will not only run on portables all the way up to Onyx Infinite Reality Monsters, but also supports the multiple graphics subsystems found on machines like a mulitpipe Onyx. This is possible because the core scene graph supports multiple graphics contexts for both OpenGL? Display Lists and texture objects, and the cull and draw traversals have been designed to cache rendering data locally and use the scene graph almost entirely as a read-only operation. This allows multiple cull-draw pairs to run on multiple CPU's which are bound to multiple graphics subsystems. Support for multiple graphic context and multi-threading is all available out of the box via osgProducer - all the examples in the distribution can run multi-pipe just by use a simple configuation file.

Multi-launguage support

Java and Python bindings for the OpenSceneGraph are also available as Commmunity projects.

What's New in This Release:
Support for building on Windows 64 was added.
Support for IBM's AIX operating system was added.
COLLADA plugin support for both the reading and writing of COLLADA 1.4 .dae files was added.
Processor affinity support was added, allowing the application to lock cull-draw and database processes to specific processors.
A Texture Atlas builder has been added to the database optimization classes.
GPU timing stats have been added to the viewer class.
A range of bugfixes and API refinements were made.

OpenSceneGraph 1.2 search tags