IMPS: Implicit Surfaces for Interactive Animated Characters

Master of Science project by Kenneth B. Russell, Synthetic Characters Group, The Media Lab, MIT. The reference to this work is:

IMPS: Implicit Surfaces for Interactive Animated Characters. Kenneth B. Russell. Master of Science Thesis, Synthetic Characters Group, The Media Lab, MIT, May 1999. [PDF (4.34 MB)]

overview | design | demos | download | feedback

(Click any of the images below for a larger version)

[Image of Beanito] [Image of Flubber] [Image of the Biped] [Image of Colored Blobs]


IMPS is an object-oriented, VRML-based C++ library designed to support the creation of implicit surface-based animated characters. IMPS contains an interactive modeler which supports the positioning and interactive 3D painting of implicit surfaces and a run time library which can be used to animate these surfaces from a user application.

Library Design

IMPS was designed to be compatible with the Synthetic Characters' character design pipeline. In our system a base geometry file specifies the geometrical representation for a character, while motor skill files specify atomic animation segments (one step of a walk cycle, for example). VRML 2.0 is used as the file format for both of these types of files. For this reason IMPS was designed to be VRML-based.

A minimal C++-based VRML 2.0 library, libvrmlapi, was written to support reading and writing of VRML 2 files. IMPS is built on top of libvrmlapi. Most of IMPS' data types, for example blends, metaballs, and line segments, are subclasses of VrmlNode and can be written to and read from files with the VRML 2 syntax, although of course the node types are not in the VRML 2 specification and are only compatible with IMPS' viewer.

IMPS uses gleem, an OpenGL-based 3D manipulator library, for its user interaction during the modeling process. The 3D painting functionality IMPS implements uses the color chooser widget from FLTK. Textures are loaded using SGI's Image Format Library. The library makes heavy use of SGI's version of the Standard Template Library. IMPS' user-level application and interactive modeler, glImplViewer, uses OpenGL for its output. An older version of the viewer, ivImplViewer, uses Open Inventor for its interaction and rendering.

IMPS was developed primarily on an 8-processor SGI Onyx2. As described in the thesis, IMPS' most current polygonizer was designed to be parallelized as much as possible. The system currently runs on single- and multiple-CPU SGIs as well as NT workstations. Porting to additional Unix platforms should be straightforward; as described in the thesis, platform- specific code has been minimized as much as possible.


(Click any of the images below for a larger version)

[Image of Monkey Stayin' Alive] [Image of Monkey] [Image of Monkey Waving Hi]

The biped figure in the images above was hooked up to Digital Image Design Incorporated's Monkey, a physical armature which helps sketch out animations. Posing the armature causes the implicit surface-based bipedal figure to move. The source code for this demonstration is included with IMPS (see below), although you'll need a Monkey for it to be useful.

IMPS' OpenGL-based renderer, modeler and 3D painting system, glImplViewer, is the standard demonstration of IMPS and precompiled versions, as well as its source code, are available below.

Download IMPS

There are three packages available:

imps-1.0-src.tar.gz (1837k) contains the source code for IMPS, which consists of the implicit surface library and libvrmlapi, both of which are covered under the Media Lab's academic license. Packages which IMPS depends on and which are also included are SGI's Standard Template Library, FLTK, and gleem. These subsystems are covered under various licenses. LICENSE.txt, included with all three versions of IMPS, describes these licenses in detail. (695k) contains a precompiled binary of glImplViewer for Windows NT, as well as a set of implicit surface scenes to view. No source code is included. In order to run this executable you will first need to download and install GLUT and SGI's Image Format Library for Windows.

imps-1.0-sgi.tar.gz (2033k) contains a precompiled binary and supporting DSOs for Silicon Graphics machines running Irix 6.5 or later and having the Image Format Library DSOs installed. This archive also contains a set of implicit surface scenes to view. No source code is included. In order to run this executable you will first need to download and install GLUT.


Comments, bug reports and problems using the precompiled versions are welcome.

Kenneth B. Russell -
$Id: index.html,v 1.4 2001/06/02 05:25:35 kbrussel Exp $