Open Inventor
Encyclopedia
Open Inventor, originally IRIS Inventor, is a C++
object oriented retained mode
3D graphics API designed by SGI
to provide a higher layer of programming for OpenGL
. Its main goals are better programmer convenience and efficiency.
asked Rikk Carey to lead the IRIS Inventor project. Their goal was to create a toolkit that made developing 3D graphics applications easier to do. The strategy was based on the premise that people were not developing enough 3D applications with IRIS GL because it was too time-consuming to do so with the low-level interface provided by IRIS GL. If 3D programming were made easier, through the use of an object oriented API, then more people would create 3D applications and SGI would benefit. Therefore, the credo was always “ease of use” before “performance”, and soon the tagline “3D programming for humans” was being used widely.
(OGL) is a low level library that takes lists of simple polygons and renders them as quickly as possible. To do something more practical like “draw a house”, the programmer must break down the object into a series of simple OGL instructions and send them into the engine for rendering. One problem is that OGL performance is highly sensitive to the way these instructions are sent into the system, requiring the user to know which instructions to send and in which order, and forcing them to carefully cull the data to avoid sending in objects that aren't even visible in the resulting image. For simple programs a tremendous amount of programming has to be done just to get started.
Open Inventor (OI) was written to address this issue, and provide a common base layer to start working with. Objects could be subclassed from a number of pre-rolled shapes like cubes and polygons, and then easily modified into new shapes. The “world” to be drawn was placed in a scene graph
run by OI, with the system applying occlusion culling on objects in the graph automatically. OI also included a number of controller objects and systems for applying them to the scene, making common interaction tasks easier. Finally, OI also supplied a common file format for storing “worlds”, and the code to automatically save or load a world from these files. Basic 3D applications could then be written in a few hundred lines under OI, by tying together portions of the toolkit with “glue” code.
On the downside OI tended to be slower than hand-written code, as 3D tasks are notoriously difficult to make perform well without shuffling the data in the scene graph by hand. Another practical problem was that OI could only be used with its own file format, forcing developers to write converters to and from the internal system.
, and in June 2009, the entity became an independent company again called Visualization Sciences Group (VSG), which continues to develop and support Open Inventor
project. Performer was also based on an internal scene graph, but was allowed to modify it for better speed as it saw fit, even dropping “less important” objects and polygons in order to maintain guaranteed performance levels. Performer also used a number of processes to run tasks in parallel for added performance, allowing it to be run (in one version) on multiple processors. Unlike Inventor, Performer remained proprietary so that SGI would have the agility to modify the API as needed to keep in step with the latest hardware enhancements.
Eventually all of these ideas would come together to create the OpenGL++ effort, along with Intel, IBM
and DEC
. Essentially a cleaned up and more “open” version of Cosmo 3D, work on Cosmo ended and SGI turned to OpenGL++ full time. The OpenGL++ effort would drag on and eventually be killed, and SGI then tried again with Microsoft
with the similar Fahrenheit
project, which also died. During this time SGI ignored OI, and eventually spun it off completely to TGS.
license in August 2000, which is available from SGI.
At approximately the same time, an API clone library called Coin3D
was released by the company SIM (Systems in Motion). SIM was later acquired by the Kongsberg group and re-branded as Kongsberg SIM
. The Coin library had been written in a clean room
fashion from scratch, sharing no code with the original SGI Inventor library, but implementing the same API for compatibility reasons. Systems in Motion's Coin library is released under a dual licensing scheme, available both under the GNU GPL (for Free Software
development) and a commercially sold license for proprietary software development.
The open source version from SGI is not currently maintained and SGI has not shown any commitment to do further development of the library. However, the open source release is the basis for several actively developed projects: the open-source eXtensible Imaging Platform (Siemens Corporate Research), and the freemium MeVisLab (Fraunhofer MeVis)
Kongsberg SIM's Coin library and TGS's Inventor are still thriving under active development, and both have added numerous improvements to the original Inventor API like extensive support for the VRML
standard.
Despite its age, the Open Inventor API is still widely used for a wide range of scientific and engineering visualization systems around the world, having proven itself well designed for effective development of complex 3D application software.
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
object oriented retained mode
Retained mode
In computing, retained mode rendering is a style for application programming interfaces of graphics libraries, in which the libraries retain a complete model of the objects to be rendered.-Overview:...
3D graphics API designed by SGI
Silicon Graphics
Silicon Graphics, Inc. was a manufacturer of high-performance computing solutions, including computer hardware and software, founded in 1981 by Jim Clark...
to provide a higher layer of programming for OpenGL
OpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...
. Its main goals are better programmer convenience and efficiency.
Early history
Around 1988–1989, Wei YenWei Yen
Dr. Wei Yen is a software developer and entrepreneur. He has been involved with several companies, including most recently as chairman and founder of AiLive. Dr...
asked Rikk Carey to lead the IRIS Inventor project. Their goal was to create a toolkit that made developing 3D graphics applications easier to do. The strategy was based on the premise that people were not developing enough 3D applications with IRIS GL because it was too time-consuming to do so with the low-level interface provided by IRIS GL. If 3D programming were made easier, through the use of an object oriented API, then more people would create 3D applications and SGI would benefit. Therefore, the credo was always “ease of use” before “performance”, and soon the tagline “3D programming for humans” was being used widely.
Use
OpenGLOpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...
(OGL) is a low level library that takes lists of simple polygons and renders them as quickly as possible. To do something more practical like “draw a house”, the programmer must break down the object into a series of simple OGL instructions and send them into the engine for rendering. One problem is that OGL performance is highly sensitive to the way these instructions are sent into the system, requiring the user to know which instructions to send and in which order, and forcing them to carefully cull the data to avoid sending in objects that aren't even visible in the resulting image. For simple programs a tremendous amount of programming has to be done just to get started.
Open Inventor (OI) was written to address this issue, and provide a common base layer to start working with. Objects could be subclassed from a number of pre-rolled shapes like cubes and polygons, and then easily modified into new shapes. The “world” to be drawn was placed in a scene graph
Scene graph
A scene graph is a general data structure commonly used by vector-based graphics editing applications and modern computer games. Examples of such programs include Acrobat 3D, Adobe Illustrator, AutoCAD, CorelDRAW, OpenSceneGraph, OpenSG, VRML97, and X3D....
run by OI, with the system applying occlusion culling on objects in the graph automatically. OI also included a number of controller objects and systems for applying them to the scene, making common interaction tasks easier. Finally, OI also supplied a common file format for storing “worlds”, and the code to automatically save or load a world from these files. Basic 3D applications could then be written in a few hundred lines under OI, by tying together portions of the toolkit with “glue” code.
On the downside OI tended to be slower than hand-written code, as 3D tasks are notoriously difficult to make perform well without shuffling the data in the scene graph by hand. Another practical problem was that OI could only be used with its own file format, forcing developers to write converters to and from the internal system.
Open Inventor by VSG
Open Inventor was later opened for 3rd-party licensing, which is when it switched from “IRIS” to “Open“. It was licensed to two third party developers, Template Graphics Software (TGS) and Portable Graphics. TGS later bought Portable Graphics, making them the sole licensee. In 2004, TGS was acquired by Mercury Computer SystemsMercury Computer Systems
Mercury Computer Systems, Inc. provides high-performance embedded, real-time digital signal and image processing solutions.Mercury designs and builds embedded multicomputers, which may be considered to be either loosely coupled NUMA computers or tightly coupled clusters. Despite being marketed as...
, and in June 2009, the entity became an independent company again called Visualization Sciences Group (VSG), which continues to develop and support Open Inventor
Performer
About a year into the Inventor project, a different philosophy began to emerge. Instead of simply making it easy to write applications on SGI systems, the goal was changed to make it difficult to write slow applications. Members of the Inventor team left to form their own group, which founded the basis of the OpenGL PerformerOpenGL Performer
OpenGL Performer, formerly known as IRIS Performer and commonly referred to simply as Performer, is a commercial library of utility code built on top of OpenGL for the purpose of enabling hard real-time visual simulation applications. OpenGL Performer was developed by SGI which continues to...
project. Performer was also based on an internal scene graph, but was allowed to modify it for better speed as it saw fit, even dropping “less important” objects and polygons in order to maintain guaranteed performance levels. Performer also used a number of processes to run tasks in parallel for added performance, allowing it to be run (in one version) on multiple processors. Unlike Inventor, Performer remained proprietary so that SGI would have the agility to modify the API as needed to keep in step with the latest hardware enhancements.
Mid 1990s
At some point in the mid-1990s it was realized that there was no good reason that the two systems could not be combined, resulting in a single high-level API with both performance and programmability. SGI started work on yet another project aimed at merging the two, eventually culminating in Cosmo 3D. However Cosmo had a number of practical problems that could have been avoided with better design.Eventually all of these ideas would come together to create the OpenGL++ effort, along with Intel, IBM
IBM
International Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas...
and DEC
Digital Equipment Corporation
Digital Equipment Corporation was a major American company in the computer industry and a leading vendor of computer systems, software and peripherals from the 1960s to the 1990s...
. Essentially a cleaned up and more “open” version of Cosmo 3D, work on Cosmo ended and SGI turned to OpenGL++ full time. The OpenGL++ effort would drag on and eventually be killed, and SGI then tried again with Microsoft
Microsoft
Microsoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions...
with the similar Fahrenheit
Fahrenheit graphics API
Fahrenheit was an effort to create a unified high-level API for 3D computer graphics to unify Direct3D and OpenGL. It was designed primarily by Microsoft and SGI and also included work from an HP-MS joint effort. Much of the original Fahrenheit project was abandoned, and Microsoft and SGI...
project, which also died. During this time SGI ignored OI, and eventually spun it off completely to TGS.
Recent history
After many years of Inventor being solely available under proprietary licensing from TGS (today, VSG - Visualization Sciences Group), it was released under an open sourceOpen source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
license in August 2000, which is available from SGI.
At approximately the same time, an API clone library called Coin3D
Coin3D
Coin3D is an Open Inventor clone by the Norwegian company Kongsberg Oil & Gas Technologies . Coin3D, like Open Inventor, is a C++ object oriented retained mode 3D graphics API used to provide a higher layer of programming for OpenGL. The API provides a number of common graphics rendering constructs...
was released by the company SIM (Systems in Motion). SIM was later acquired by the Kongsberg group and re-branded as Kongsberg SIM
Kongsberg SIM
Kongsberg SIM, formerly Systems In Motion is a company in the Kongsberg group .Kongsberg SIM specialises in software solutions for real time 3D graphics visualization to the oil & gas industry, with special focus on solutions for reservoir engineers.Kongsberg SIM is a subsidiary of Kongsberg...
. The Coin library had been written in a clean room
Clean room design
Clean room design is the method of copying a design by reverse engineering and then recreating it without infringing any of the copyrights and trade secrets associated with the original design. Clean room design is useful as a defense against copyright and trade secret infringement because it...
fashion from scratch, sharing no code with the original SGI Inventor library, but implementing the same API for compatibility reasons. Systems in Motion's Coin library is released under a dual licensing scheme, available both under the GNU GPL (for Free Software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
development) and a commercially sold license for proprietary software development.
The open source version from SGI is not currently maintained and SGI has not shown any commitment to do further development of the library. However, the open source release is the basis for several actively developed projects: the open-source eXtensible Imaging Platform (Siemens Corporate Research), and the freemium MeVisLab (Fraunhofer MeVis)
Kongsberg SIM's Coin library and TGS's Inventor are still thriving under active development, and both have added numerous improvements to the original Inventor API like extensive support for the VRML
VRML
VRML is a standard file format for representing 3-dimensional interactive vector graphics, designed particularly with the World Wide Web in mind...
standard.
Despite its age, the Open Inventor API is still widely used for a wide range of scientific and engineering visualization systems around the world, having proven itself well designed for effective development of complex 3D application software.
External links
- Official SGI Open Inventor Site
- Open Inventor (by VSG), Commercial implementation of the API
- Open Inventor Users' Forum
- Coin3D, Independent implementation of the API