|
|
MotivationThe OpenSG project was initiated at SIGGRAPH 1999 by Dirk Reiners, Allen Bierbaum and Kent Watsen. After the Fahrenheit initiative between Microsoft, SGI and HP fell apart it was the only solution we could see. Scenegraph systems had been dominated by announcements for years, with very few results. Cosmo3D/Optimizer were supposed to replace Inventor and Performer, but were themselves replaced by OpenGL++, which died before it saw the light of day, to be replaced by Fahrenheit. Which died in 1999. After 5 years of announcements we realized that companies couldn't be the right solution for providing such a fundamental component of a VR system like a scenegraph. An Open Source system was the only solution. Allen and Kent became occupied with other things, so Dirk took a long hard look at the available Open Source scenegraph systems. The general features that are needed by every system that aspires to be used in a virtual reality context were fulfilled by most of them: decent performance due to view volume culling and optimized geometry handling (stripes etc.), support of static and dynamic objects, object-oriented C++ interface etc. Our system supports all of them, too. But a single system that reaches the specific goals we expected from a scenegraph to base future developments on:
couldn't be found. Portability between different Unices is usually pretty simple, portability to Windows is a different matter. Especially in the context of dynamic libraries Windows is a gigantic pain. But it is the most widely used platform, not only in industry but also in large parts of the educational arena. Thus for a system that needs a large user base to be successful Windows support is something we couldn't get around. The biggest technological problem is the multi-threading. This is really
tricky, as asynchronous threads really need independent copies of the
scenegraph, anything less won't do. Let's say you have a physical simulation
that calculates the motion and interaction of complex objects. It might take
longer than a frame to do every step, so you don't want to do it for every
frame to give the user better feedback. But you don't want to give him
inconsistent feedback, either, i.e. half of the object moved to the new
position, half in the old. Thus the simulation thread needs its own copy of
the data. Add to that a simulation that actually deforms the objects and you
need a full copy of pretty much everything. Multiple graphics pipes are a concept that is gaining more and more
acceptance. Extensibility in this context means adding new components to the system and
replacing of system components by other ones, which are better suited to the
hardware or problem at hand. Adding these extensions should be simple, and be
possible to do dynamically by loading a dynamic library. Thus a decision was made to start a new initiative early in 2000. Initial support was generated by founding the OpenSG Forum in January 2000. The basic design ideas were written down in a design document that was circulated to some people with experience in creating scenegraphs. Code Design started in April, with Gerrit and Johannes joining the project, Code creation soon after. The first alpha was finished shortly before SIGGRAPH 2000, followed by a beta in February 2001. A nearly complete 1.0 was demonstrated at SIGGRAPH 2001, followed by a release in October 2001. |
|
|