OpenSG is based on the widely used and successful scene graph metaphor, which can be seen as an object-oriented representation of everything that needs to be displayed. The goal is to abstract the complexities of the lower-level APIs like OpenGL, which are mainly targeted at making the graphics hardware happy and not necessarily the user. Because the scene graph has a full representation of the whole scene, it can also do many things which a graphics driver cannot do, like high-level optimizations, or abstracting the complexities behind modern graphics algorithms, cf. advanced lighting and shading. It is designed to be very general, for many different kinds of applications from architectural and manufacturing scene visualization to highly dynamic and interactive virtual worlds. There is no limit to what can be done with it!
The main design and implementation features:
Performance is one of the core requirements of any interactive 3D graphics system. Model sizes and complexities are constantly growing, and to maintain acceptable interactivity, high speeds upwards of 30 frames per second (more is always better ;)) need to be maintained. OpenSG uses a wide variety of optimization techniques to efficiently use the available horsepower. more...
Multi-threading is becoming one of the core features of modern processors. At the same time, multi-processor systems are becoming very common. Given that the scenegraph in many cases is the primary store for all scene data, to take full advantage of the existing processing power, it needs to support multi-threaded applications. OpenSG supports a very general and flexible multi-threading model that gives totally independent threads write access to the scenegraph without interfering with each other. more...
Just a few years ago a large-screen stereo projection was only affordable for large companies or research centers. With the advent of cheap boardroom projectors and powerful graphics cards for standard PCs, the components for setting up large, high-quality display systems at reasonable prices are there. But one of the limitations of current PC systems is the number of outputs. Most modern graphics cards have two outputs, even with two cards in a system 4 outputs are the limit. For large display systems or to be able to dedicate the full power of a graphics card to each projector (they're cheap, after all) that is far from sufficient. To alleviate this shortcoming, a cluster of PCs needs to be employed. In addition to large displays clusters can also be used to display large scenes by merging the outputs from all cluster nodes to a single screen. The power of a cluster far exceeds the power of a single machine, even a high-end one.
But cluster-aware software is significantly more involved to write. OpenSG takes the pain out of clustering, by supporting serialization of arbitrary scenegraph changes. Making a standalone application cluster-capable and having it drive a display like the HEyeWall typically takes less than an hour using OpenSG. more...
Due to the ubiquity of high-powered 3D graphics cards the number of application areas for interactive 3D graphics is growing steadily, and with it is the number of requirements for a general scenegraph system. It's not possible to foresee which requirements future applications might have. Therefore it is important to design a system that is open for application-specific and -nonspecific extensions.
Doing it Open Source is a good first step towards that, but it is not enough. Some extensions might be too application-specific for the maintainers of the system to be comfortable with integrating them. If the system is designed to require source code changes for extensions, these changes will have to be made over and over again by the application developer (i.e. you!), for each new release of the scenegraph system. OpenSG is designed to avoid this situation by using highly dynamic and flexible structures that can be easily extended or adapted by an application. more...
One of the motivating factors of the OpenSG development was the desire to have a system that can be used on a wide variety of platforms. To do that OpenSG is based on portable components like OpenGL resp. OpenGL ES and Boost. It has support for some system-specific windowing options, but it does not depend on them. If there is a way to open an OpenGL-capable window, there is a way to make OpenSG work. We have run it on everything from handheld devices I'd like a gallery example here (using OpenGL ES) across laptops, PCs and clusters up to multi-pipe, multi-million dollar Silicon Graphics machines.
We support a variety of operating systems (Windows, Linux, MacOSX, Solaris, etc.), the main development platforms are Linux, Windows and MacOS X. To ensure compatibility of changes with all platforms we run a nightly build system that automatically rebuilds everything every night on a wide mix of systems.