OpenSceneGraph
![]() |
|
| Stable release | 3.0.1 / July 31, 2011 |
|---|---|
| Preview release | 2.9.16 / June 9, 2011 |
| Written in | C++ |
| Operating system | Cross-platform |
| Type | 3D graphics |
| License | OpenSceneGraph Public License (LGPL based) |
| Website | http://www.openscenegraph.org/ |
OpenSceneGraph is an open source 3D graphics application programming interface,[1] used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and modeling.
The toolkit is written in standard C++ using OpenGL,[1] and runs on a variety of operating systems including Microsoft Windows, Mac OS X, Linux, IRIX, Solaris and FreeBSD.
Development began on OpenScenegraph in 1998 by Don Burns with Robert Osfield coming aboard in 1999[2]. The project doesn't track downloads and has no way to measure the number of active users. However, as of 2006, the osg-users mailing list exceeded 1,500 subscribers.
Contents |
[edit] Features
Features in version 1.0[3]:
- A feature-rich and widely adopted scene graph implementation
- Support for performance increasing features
- View frustum, small feature and occlusion culling
- Level of detail
- State sorting and lazy state updating
- OpenGL fast paths and latest extensions
- Multi-threading and database optimization
- Support for OpenGL, from 1.1 through 2.0 including the latest extensions
- Tightly coupled support for OpenGL Shading Language, developed in conjunction with 3Dlabs
- Support for a wide range of 2D image and 3D database formats, with loaders available for formats such as OpenFlight, TerraPage, OBJ, 3DS, JPEG, PNG and GeoTIFF
- Particle effects
- Support for anti-aliased TrueType text
- Seamless support for framebuffer objects, pbuffers and frame buffer render-to-texture effects
- Multi-threaded database paging support, which can be used in conjunction with all 3D database and image loaders
- Large scale, whole earth geospatial terrain paged database generation
- Introspection support for core libraries allowing external applications to query, get, set and operate on all classes in the scene graph, via a generic interface
- Multi-threaded and configurable support for multiple CPU/multiple GPU machines
Features in version 2.8.3[4]
- Mac OS X 10.6 (Snow Leopard) support
- ImageIO support on Mac OS X
- 3DS file format export and file conversion
- Integrated Autodesk FBX technology
- Integrated FFmpeg support for displaying video file content in 3D applications.
- PLY file format support
Features in version 2.8.4:[5]
- VS2010 build support
Features in version 3.0.0:[6]
- OpenGL ES 1.1, and OpenGL ES 2.0 support
- OpenGL 3.x and 4.x support along with associated OpenGL extensions
- Supoort for Android on tablets and phones
- Support for IOS on tablets and phones (end users applications have already been accepted on the App Store)
- Introduction of Present3D application for immersive 3D presentations
- New extensible serializers that provide new .osgb binary, .osgt ascii and .osgx xml file native formats
- New generalized serializable metadata architecture
- New osgQt library that makes it straight forward to integrate !OpenSceneGraph with Qt, including web browsing via QWebKit.
- New FBX plugin based on the Audodesk FBX DSK that enables reading of the the .fbx 3D authoring and interchange format
- New directshow plugin for handling movies under Windows
- New pov plugin for exporting a scene to POV-Ray format, enabling use of POV-Ray to do photo-realistic ray tracing
- New ply plugin for reading ply files
- Revamped 3ds plugin for reading and writing of .3ds files
- Revamped dxf plugin for reading and writing of .dxf files
- Support for Cocoa and 64bit OSX build
[edit] Stable Version Release History
| Version | Release Date |
|---|---|
| 2.0.0 | June 15, 2007 |
| 2.2.0 | October 4, 2007 |
| 2.4.0 | April 25, 2008 |
| 2.6.0 | August 5, 2008 |
| 2.6.1 | October 2, 2008 |
| 2.8.0 | February 12, 2009 |
| 2.8.1 | May 19, 2009 |
| 2.8.2 | July 28, 2009 |
| 2.8.3 | April 5, 2010 |
| 2.8.4 | April 11, 2011 |
| 2.8.5 | June 6, 2011 |
| 3.0.0 | June 28, 2011 |
| 3.0.1 | July 31, 2011 |
[edit] OpenThreads
The OpenSceneGraph project contains a threading library, OpenThreads, which is a lightweight cross-platform thread model. It is intended to provide a minimal and complete Object-Oriented (OO) thread interface for C++ programmers. It is loosely modeled on the Java thread API, and the POSIX Threads standards.
The architecture of OpenThreads is designed around "swappable" thread models which are defined at compile-time in a shared object library. It is of importance to note that while a factory pattern design could have been used to achieve the goal of generic interface, it would have required the programmer to allocate each of the 4 fundamental types (Thread, Mutex, Barrier, & Condition) on the heap. Due to the cost associated with heap allocation of the underlying concrete implementations of these constructs on some platforms, such allocation was deemed unacceptable at the time this library was originally written, and thus the factory pattern was not used.
Instead, a somewhat abstruse - but effective - technique was chosen to provide the necessary data/implementation hiding. This technique uses private void pointers to encapsulate object private data. The void pointers actually point at concrete data structures, but give a uniform interface to the dso.
The design goal of OpenThreads is to construct optimized implementations using platform optimized multi-processing constructs such as the sproc methods used on IRIX, and Windows threads.
[edit] Example usages
These software products use OpenSceneGraph:
- FlightGear (since version 1.9.0)
[edit] See also
[edit] References
- ^ a b Anne Ruas, Christopher Gold (2008). Headway in Spatial Data Handling:13th International Symposium on Spatial Data Handling. Springer. p. p.370. http://books.google.co.uk/books?id=wc5gMNG3dIcC&lpg=PA370&dq=OpenSceneGraph&pg=PA370#v=onepage&q=OpenSceneGraph&f=false.
- ^ http://www.openscenegraph.org/projects/osg/wiki/Support/History
- ^ http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.9.6/NEWS.txt
- ^ http://www.openscenegraph.org/projects/osg/wiki/News/Press/OSG2.8.3
- ^ http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.4/NEWS.txt
- ^ http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-3.0.0/NEWS.txt
[edit] External links
- www.openscenegraph.org - official website for the project
- AlphaPixel OSG Binaries -- Windows, Mac and Linux x86 and x64 precompiled binaries.
- SigmaOSG - OpenSceneGraph Tutorials (contains all the prior OSGHelp material from retired OSGHelp site)
- Scenegraphs and Openscenegraph for 3D Software Development
- OpenSceneGraph library information webpage on www.OpenGL.org (one of four promoted libraries)
