DynaMo: Dynamic Motion library

The library that powers your animations




Dynamo is a software library providing classes that takes care of the calculation of the motions of geometries moving under the influence of forces and torques and impulses. In addition, the library can also compute forces for you through the mechanism of constraints. These allow you to easily connect geometries to each other in various ways. A constraint only has to be specified once, and the Dynamo library will continually enforce it from that moment on by applying the required reaction forces. Some of the Dynamo's features are:


The library is written in C++. It has been complied and tested on Sun and Silicon Graphics workstations using the standard CC compilers, and on the PC using MS Visual C++ 5.0.


The Dynamo library is released under the terms of the GNU Library General Public License (see the documentation).

Documentation and publications

First, some older publications, based on my work for my Masters in which I added dynamics to one of our animation programs:

  • May the Force be with you: this is a synopsis of the main findings of my Master's Thesis. It was written for a course in Technical Writing and Editing which I took during my time as an OOTI. It serves as a nice introduction to the field of motion dynamics, and should also be readable while skipping all the formulae-bits for those who just want an overview without too many details.
  • All you need is force, which I co-wrote with my supervisor C.W.A.M van Overveld, was presented at the Workshop for Computer Animation and Simulation at EuroGraphics '95 (by me). It builds upon the work I did for my Master's Thesis, but presents the problem in a more general setting which suggest the approach taken in the work below.

Using what I learned before, I restarted builing a seperate object-oriented dynamics library as the final project of the OOTI course. Here is the report describing that design:

  • Designing a library for constraint driven dynamics in the GDP: this is my final report of the postgraduate programme Software Technology and describes the first part part of my PhD work, which has led to the Dynamo library. Here the ideas and algorithms are presented in an Object Oriented environment, which in my opinion leads to a much more intuitive view on the subject matter.

Afterwards, I extended this library to what has become Dynamo in my Ph.D. work. The resulting thesis describing the design of Dynamo (which I defended on April 27th 2000) is now available in pdf format (1.1MB).

The library has been developed for use in a host application. For tests and demos it has been incorporated in our GDP system. Here is the documentation for both the stand-alone Dynamo library, and also for the additional functionality provided bythe GDP wrapper:


An example is shown in the following mpeg movie which shows a sort of roller coaster. The motion in this animation is specified through the geometry of the track and the cart, a constraint that specifies that the cart is connected to the track (but can move freely along the track), a constraint that specifies that both parts of the cart are connected through a pin joint, and the specification of gravity. The system will calculate and apply reaction forces such that the two parts of the cart and the track and the cart remain connected (but the gravity will cause the cart to slide along the track).

Another example featuring a rolling bicycle is presented here.


Dynamo is available for downloading as a zip file: dynamo.zip (1MB zip file)
Also available are the Looks sources of the examples in the thesis (70KB zip file)


The user documentation provides instructions on the two callback functions which need to be implemented to allow the library to communicate with your software. A make file is provided for compiling on a Sun or SGI workstation. The example which is provided shows how the library might be compiled on a PC.


  • In order to use the collision response constraint in Dynamo, a collision detector is required. The SOLID library provides such a detector and has been designed with (a.o.) physics-based interactive-speed animation in mind.

Author: Bart Barenbrug