|Version 19 (modified by robert, 5 years ago)|
The OpenSceneGraph is an OpenSource, cross-platform graphics toolkit for the development of high-performance graphics applications such as flight simulators, games, virtual reality and scientific visualization. It is based around the concept of a SceneGraph, providing an object-oriented framework on top of OpenGL. This frees the developer from implementing and optimizing low-level graphics calls and provides many additional utilities for rapid development of graphics applications.
With the OpenSceneGraph our goal is to make the benefits of scene graph technology freely available to all, both commercial and non-commercial users. Written entirely in Standard C++ and OpenGL, it makes full use of the STL and DesignPatterns, and leverages the open-source development model to provide a development library that is legacy-free and focused on the needs of end users.
The key strengths of OpenSceneGraph are its performance, scalability, portability and the productivity gains associated with using a fully featured scene graph, in more detail:
Supports view-frustum culling, occlusion culling, small feature culling, Level Of Detail (LOD) nodes, OpenGL state sorting, vertex arrays, vertex buffer objects, OpenGL Shader Language and display lists as part of the core scene graph. These together make the OpenSceneGraph one of the highest performance graphics toolkit available. 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-performance 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.
- Database loaders
For reading and writing databases the database library (osgDB) adds support for a wide variety of database formats via an extensible dynamic plugin mechanism - the distribution now includes 55 separate plugins for loading various 3D database and image formats.
3D database loaders include COLLADA, LightWave (.lwo), Alias Wavefront (.obj), OpenFlight (.flt), TerraPage (.txp) including multi-threaded paging support, Carbon Graphics GEO (.geo), 3D Studio MAX (.3ds), Peformer (.pfb), AutoCAd? (.dxf), 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, and image based fonts can be loaded via the .txf plugin.
Users can also generate large scale geospatial (multi GB) terrain databases via the companion project (VirtualPlanetBuilder), and use the OpenSceneGraph's native database paging support to view these database.
- Node Kits
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), shadow framework (osgShadow), interactive controls (osgManipulator) and visual simulation centric effects (osgSim).
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, AIX and even PlayStation?2!
The core scene graph library is completely windowing system independent, which makes it easy for users to add their own window-specific libraries and applications on top. In the OpenSceneGraph distribution the osgViewer library provides native windowing support under Windows (Win32), Unices (X11) and OSX (Carbon). The osgViewer library can also be easily integrated with other windowing toolkits, such as Qt, GLUT, FLTK, SDL, WxWidget?, Cocoa and MFC. Examples of integration with these toolkits are included in the OpenSceneGraph distribution.
The scene graph will not only run on portables all the way up to high end multi-core, multi-gpu systems and cluster. 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 osgViewer - all the examples in the distribution can run multi-threaded and multi-gpu.
- Multi-language support
Java, Lua and Python bindings for the OpenSceneGraph are available as Community projects.
The OpenSceneGraph benefits for a diverse community of user and developers, the focal point of which is the lively osg-users public mailing list where over 1900 users discuss how to use the software, latest developments work and much more. The community also makes significant contributions to the development and testing of existing and new modules for the OpenSceneGraph itself, and third party libraries, many of which are also OpenSource. This project website is also built entirely upon trac wiki, which allows all community members access to adding their own content, and contributing tutorials etc. The Community section of this website provides further information and links to community projects, and how you can contribute to and be part of the community.
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). ReplicantBody is another option for character animation which also contains high-level functionality, such as scripting, blended animation actions etc... (It also depends on Cal3D), osgHaptics integrates the haptic (force sensation) rendering toolkit OpenHaptics from Sensable Inc. osgAL can be used to integrate 3D sound (OpenAL) with osg. Additionally a whole set of libraries that integrates 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 frameworks, with others in development.
For users who have come across the OpenSceneGraph for the first time we recommend you start by following the GettingStarted instructions, and then browsing the various Support resources available. If you have a particular problem then check through the FAQ to see if a solution already exists, check through the mailing lists archives, or subscribe to the osg-users mailing list and explain what you are trying to tackle.
Support and Services
For organisations requiring confidential Professional Support, Training or Consultancy services then this is also available, provided by the partnership of OpenSceneGraph Professional Services (based in Scotland). For further information email info at openscenegraph.com.