Assignment 4: Simulation and Keyframing

In this assignment, you will implement two techniques for computer animation: physics-based simulation of mass-spring systems, and keyframe animation of articulated characters. Use the code provided at to display the computed animation. There are three required tasks and three optional tasks. For full marks, you are required to do all three required tasks and at least one of the three optional tasks.

  1. Implement a mass-spring system for simulating a single sheet of cloth, as discussed in class. To do this, you will create a collection of particles in a grid layout, connected to nearby particles with springs. Also add a gravity force acting on all the particles, and allow some particles to be labeled as “fixed” in space so that they never move. Perform time stepping using the semi-implicit Euler scheme described in class.

  2. Modify your simulation to handle collisions of particles with moving obstacles. You may use discrete collision detection, i.e. you only need to check for collisions at the end of the time step. Also, you only need to test the particles of the mass-spring system; you are not required to handle the case where an edge or face of the cloth is intersecting the obstacle but all particles are outside.

  3. Design an articulated character composed of several bones connected with hinge joints. Attach a collider shape to each bone so that the cloth can collide with the character. Animate the character’s motion by keyframing the hinge angles.


Submit your assignment on Moodle before midnight on the due date. Your submission should be a zip file that contains your entire source code for the assignment, not including any binary object files or executables. The zip file should also contain a PDF report that includes:

  1. one or more representative frames of each of the demonstration animations,
  2. discussion of any implementation choices or unusual features of your program,
  3. explanation of any required components you could not implement, and what problems you faced in doing them.

You should also record videos of your demonstration animations, as mentioned on Moodle. These are likely to be too big to upload to the Moodle assignment submission system, so please upload them somewhere else (like Owncloud, Sharepoint, Google Drive, or even YouTube), make them world-readable, and include links to them in the PDF report.

Separately, each of you working in groups will individually submit a short response in a separate form regarding how much you and your groupmate(s) contributed to the work in this assignment.