NIST logo

IRIS & IDEA Software

IRIS - Immersive Runtime Interpreted Scenegraph

IRIS, the Interpreted Runtime Immersive Scenegraph, is a set of C++ classes that use OpenSceneGraph (OSG) and the DIVERSE ToolKit (DTK) to facilitate the creation of modular, device independent, multi-process. interactive graphical simulations.  IRIS directly supports multiple multi-threaded head-tracked immersive stereo displays as seen in immersive visualization systems, as well as simple desktop displays in either stereo or mono. IRIS creates a simple scenegraph that is used to load model files into the graphics applications.

IRIS comes with several utility programs built with these classes. One goal of IRIS’s design is that these utilities will be sufficient for implementing as many applications as possible. IRIS tries to achieve these goals by use of IRIS control commands and Dynamic Shared Objects (DSOs).

Control commands are text commands that are sent to a running IRIS program by use of a fifo, or named pipe, by a separate process. Being a separate process means that it does not effect the graphics loop, and on multi-core systems can run on a different processor than the IRIS process.

Each IRIS class or DSO can define its own set of control commands specific to its functionality. Control commands can be used to build and modify the IRIS scenegraph and the geometry in the scenegraph, load DSOs, modify navigations and graphical displays and query the IRIS system.


DSOs are separately compiled C++ programs based on the iris::Augment class.  A DSO is loaded by the iris::SceneGraph class and its code is immediately executed. DSOs can create OSG event and node callbacks so  they have the capability of continuously modifying the behavior of the IRIS program that loaded them.

IRIS is a work in progress. Full IRIS documentation is under the local IRIS installation.


IDEA - IRIS Development Environment for Applications

IDEA (IRIS Development Environment for Applications) is a collection of programs and utilities which facilitate the creation of portable visualization applications within the context of IRIS.

An IDEA application is generally a collection of one or more asynchronous processes which communicate with each other and the IRIS graphics engine via named pipes, also known as fifos, and/or DIVERSE shared memory files.

Graphics are implemented via the iris::SceneGraph class, which is in turn based on the OpenSceneGraph (OSG) C++ API.  The iris-viewer program is the IRIS general purpose graphics display program. It can load model files and display them in a variety of settings, from generic mono desktops to multi-display head-tracked immersive stereo displays.

The IDEA program irisfly is a front-end to the iris-viewer command which automatically configures it for our specific hardware environments. It specifies the DSOs and iris files for iris-viewer to load. The DSOs create the displays and navigations suitable for the hardware environment, and the iris files create background process which create a GUI menu and maintain shared memory files that contain graphical state information.

There are a variety of other IDEA utilities, such as:

  • hev-masterControlPanel - facilitates the creation of menus
  • hev-moo - creates a simple interface for turning models on and off
  • hev-animator - facilitates the creation of animations under IRIS


There are many other such utilities.

Like IRIS, IDEA is a work in progress. Full IDEA documentation is under the local IRIS installation.




Back to HPCVG Software