The OpenInventor3DToolkit is an object-oriented toolkit that simplifies and abstracts the task of
writing graphics programming into a set of easy to use objects. These objects range from low-level data-
centered objects such as Sphere, Camera, Material, Light, and Group, to high-level application-level
objects such as Walk Viewer and Material Editor. The foundation concept in Inventor is the "scene
database" which defines the objects to be used in an application. When using Inventor, a programmer
creates, edits, and composes these objects into hierarchical 3D scene graphs (i.e. database). A variety
of fundamental application tasks such as rendering, picking, event handling, and file reading/writing are
built-in operations of all objects in the database and thus are simple to invoke.
Since Inventor is object-oriented (written in C++), it encourages programmers to extend the system by
writing new objects. Inventor users have created a variety of new objects that are not included in the
product, such as: Bezier surfaces, CSG objects, animation objects, special viewers, and many more.
Note that the rendering mechanism inside Inventor objects employs OpenGL. Thus, during rendering each
object automatically makes the proper, efficient calls to OpenGL. Furthermore, Inventor rendering
supports a caching scheme which automatically generates very fast renderings of the database without
traversal overheads.
Inventor picking is extremely efficient and does not utilize rendering. Furthermore, picking returns a
variety of 3D information and detail about what objects were picked. A sorted list of picked objects and
corresponding information is returned to the programmer. Picking is so fast that programs can perform 3D
locate highlighting as the mouse moves across a 3D window.