Slithy ("sly-thee") is a system for creating presentations that incorporate meaningful animation. It is a set of Python libraries; your presentation is a Python program that uses Slithy to provide high-level drawing and animation primitives.

At the base of the system is the concept of parameterized diagrams, which are functions that take a set of domain-specific parameters and produce a drawing. This example a pulley diagram. Graphically, it's fairly complex — consisting of a number of circles, lines, boxes, and text strings. Logically, though, there's only one parameter — the amount of "pull" on the handle. Changing this one parameter changes lots of things in the picture — the wheels turn, the handle and weight move, the text strings change, and so on. The parameterized diagram lets us wrap up all the graphical complexity and expose to the animator only logical set of parameters.

The analogy to traditional CG character animation is obvious — characters aren't animated by moving each vertex; they're turned into models which expose a set of high-level controls specific to that character. We want to use that same sort of approach in the domain of 2D figures.

The above pictures show a diagram in a test harness that lets you manipulate its parameters directly via sliders and buttons. (This example has only one parameter, so there's only one slider.) When you put a parameterized diagram on your slide, it can be driven either by an animation script or an interactive controller. These specify how the diagram's parameter values should change over time. With an animation script, the values are entirely canned, while an interactive controller lets the diagram respond to the presenter's mouse and keyboard.

In addition to putting parameterized diagrams on your slide, Slithy has a number of readymade components for making the usual PowerPointy type of slides: text boxes, static images, bulleted lists, etc.


Demos, docs, and the system itself can now be found here.