OpenGL++: Difference between revisions

Content deleted Content added
At the end: critical opinion, not fact. "jumped from project to project", "reacted badly", "unholy alliance"
major cleanup
Line 2:
 
==Development==
OpenGL++ (OGL++) was intended to offer a selection of routines and standardized data structures to dramatically simplify writing "real" programs using OpenGL. Instead of the programmer having to keep track of the objects in the 3D world and make sure they were culled properly, OpenGL++ would include its own [[scene graph]] system and handle many of the basic manipulation duties for the programmer. In addition, OGL++ included a system for modifying the scene graph on the fly, re-arranging it for added performance.
 
The vast majority of applications using 3D systems describe the objects in their "world" in a [[data structure]] known as a [[scene graph]]. A scene graph is normally organized as some sort of a [[binary tree]], with the nodes representing objects, and the edges their relationship to other objects in the world. For instance, a table might be represented by a single "table" object with several edges connecting its parts together, the table top, legs, etc. Key to high performance in 3D applications is deciding what objects in the world are actually visible given the current camera position and direction. For instance, objects behind the camera do not have to be drawn. Quick traversal of the scene graph is essential to making this "culling" operation occur quickly.
Much of OGL++ was a combination of ideas from earlier SGI projects in the same vein, namely [[Open Inventor]] which offered ease-of-use, and [[OpenGL Performer]] which was written separately from Inventor to deliver a system that optimized scene graphs for increased performance and exploited scalable architectures. It was later intended that a new design could get the best of both worlds while forming the underlying framework for several projects including [[Computer Aided Design|CAD]], [[image processing]], [[flight simulator|visual simulation]], [[scientific visualization]] and user interfaces or 3D manipulators allowing them to interoperate, thereby offering both rapid development and high performance.
 
Scene graphs were generally left to the developer to implement, and it was all too common to see poor examples that led to poor performance. SGI had worked on a number of projects that were intended to help the developer produce a high-quality scene graph, but none of these had become widely used for a variety of reasons. [[Open Inventor]] was one such example, and was intended to simplify building the scene graph, but the results were not necessarily very high performance. [[OpenGL Performer]] was a similar project that was intended to produce high-speed scenes and support very large numbers of objects in the "world", but was not particularly easy to use. Both teams had already realized that there was no particular reason the two systems could not be combined into one, offering both ease-of-development and high-performance.
SGI has recently been involved in a similar effort in partnership with [[Sun Microsystems]] that was intended to produce a scene graph for the [[Java (programming language)|Java programming language]]. This project eventually failed, and led to the separation of Sun and SGI's efforts, Sun releasing theirs as [[Java3D]]. SGI packaged some of their developments into the [[Cosmo3D]] produce suite, which as a sort of marketing name for a wide variety of semi-related products. By then a CAD/"Large Model Visualization" layer of functionality called OpenGL Optimizer had already been implemented on Cosmo3D and then released as a product. Other "front end" packages like, Cosmo Code, a [[VRML]] authoring tool, were produced by a different division, it ran on OpenGL directly. OGL++ was intended to be a cleaned up and more flexible version of Cosmo3D, most of the Cosmo3D team started work on OGL++ and a lot of the effort was aimed at a specification and implementation that could deliver on the promise of a truly powerful yet generic scene graph.
 
SGI has recentlyhad been involved in asuch similaran effort in partnership with [[Sun Microsystems]] that was intended to produce a scene graph for the [[Java (programming language)|Java programming language]]. This project eventually failed, and led to the separation of Sun and SGI's efforts, Sun releasing theirs as [[Java3D]]. SGI packaged some of their developments into the [[Cosmo3D]] produce suite, which aswas a sort of marketing name for a wide variety of semi-related products. By then a CAD/"Large Model Visualization" layer of functionality called OpenGL Optimizer had already been implemented on Cosmo3D and then released as a product. Other "front end" packages like, Cosmo Code, a [[VRML]] authoring tool, were produced by a different division, it ran on OpenGL directly. OGL++ was intended to be a cleaned up and moredid flexiblenot version of Cosmo3D, most ofuse the Cosmo3DCosmo teamscene started work on OGL++ and a lot of the effort was aimedgraph at a specification and implementation that could deliver on the promise of a truly powerful yet generic scene graphall.
 
OGL++ was intended to be a cleaned up and more flexible version of Cosmo3D. Most of the Cosmo3D team started work on OGL++ and a lot of the effort was aimed at a specification and implementation that could deliver on the promise of a truly powerful yet generic scene graph. Practically every company involved in the 3D [[workstation]] market joined the effort.
 
==At the end==
 
{{tone}}
For reasons that are not entirely clear, nothing ever came of the project. The project appears to have been a victim of SGI's shifting priorities through this period, changing directions in order to partner with larger companies. When these companies exited the 3D space to focus on other product niche's, SGI was left as the only supporter, exactly what they were trying to avoid. Eventually the only other company with a 3D focus was Microsoft, and the [[Fahrenheit graphics API|Fahrenheit]] project started and ended shortly after the OpenGL++ efforts.
In the end, there is little to show for any of these efforts. Partnerships with Sun, Intel and IBM and Microsoft all led to nothing as SGI jumped from project to project. In retrospect, SGI reacted badly to a rapidly changing environment. An internal desire to create a generic but extensible scene graph was constantly sidetracked by a belief that SGI couldn't go it alone. Partnerships were formed and later abandoned due to irreconcilable differences or simply as priorities and internal pressures shifted. OGL++ was the most nacent of these efforts and its failure forced an unholy alliance between Microsoft and SGI in the form of Fahrenheit. Ancillary issues like powerful CAD APIs running on Cosmo3D complicated the picture. In the final analysis the new unified scene graph concept was bounced from project to project, and eventually died in 2000 when Fahrenheit was killed.
 
Today, no such standardized scene graph exists, and SGI has all but exited the API world. SGI has released the earlier Open Inventor code into [[open source]], but the source to OGL++ was never completed to any satisfactory degree. No specification exists and as with OpenGL the spec and idea behind such an open platform would have been what lent it it's lasting value, not a single implementation of a scene graph idea.