CPSC 426 Computer Animation

September-December 2004, 10-11 MWF, in Hugh Dempster Pavilion 101. (This is the new CS lecture building under construction behind CICSR.)

Instructor: Robert Bridson

Prerequisites: CPSC 314/414 (computer graphics) or equivalent

This course is about the fundamental ideas and algorithms of animation, with applications in making films and games. This is not an art class, and we won't be learning to use any particular animation package; the focus will be on the computer science of animation.

Contacting Me

You can always email me at rbridson @ cs.ubc.ca. My office hours are Monday 1:30-2:30, Thursday 3-4, or by appointment.


Some movies generated during the course:


The text for the course is Computer Animation by Rick Parent. Some of the notes and early material can be found here.

Here is the start of a set of applied math reference notes. It is by no means complete, but perhaps will be useful for looking things up: Applied Math Reference.

Please find and read the following articles. For SIGGRAPH papers, you can go through the ACM Digital Library.


There will be four assignments:

Final Project

At the end of the course will be the final project, worth 25%. Download the details.


There will be a final exam worth 40%. It will be Thursday, Dec. 9th, 8:30am-11:30am (Note: that's three (3) hours) in LSK 460.


There is now a course newsgroup, ubc.courses.cpsc.426.

Click here: fourier_demo.tar.gz for the MATLAB m-files I used in class to demonstrate Fourier series.

Note: you can end up using a lot of disk space for temporary data files and images while you're creating animations. Rather than using precious NFS file server space (and probably going over quota) for these temporary files, stick them on the local /var/tmp directory (inside a directory you create), make your animation, and then save just the compressed animation file in your home directory (or wherever you want). Note that files in /var/tmp may be deleted at any time and are not backed up. Please remove your temporary files after you've made an animation---there's no sense wasting the space when other people may need to use that machine.

The open source RenderMan renderer we will be using, Pixie is now installed on the undergrad Linux machines. Pixie provides a program called "rndr" which takes RIB files as command-line arguments and renders/executes them (typically producing tiff image files). Note that image files for many frames take up a lot of space, so again be sure to do this in a subdirectory of /var/tmp/ on one of the Linux machines (not Solaris!).

Temporary bad news: the default rndr script is not working. Instead use ~cs426/pixiehome/rndr (or even alias rndr to this alternate script).

We will use ffmpeg to encode separate frames of animations into MPEG-4 movies. Unfortunately ffmpeg does not accept tiff files as input; you must first use "convert" to convert each tiff file into, say, a ppm file. E.g. type "convert frame0034.tiff frame0034.ppm". Once you have a directory full of ppm files (say in the format frame0000.ppm, frame0001.ppm, ...) you can use ffmpeg to convert them into an mp4 with "ffmpeg -i frame%04d.ppm -r 24 animation.mp4" which will produce a 24 frame per second movie.

Note: for compiling a 10 second movie at 24 frames per second, for example, you will have 240 RIB files and 240 image files to deal with. You will almost surely want to automate this with a simple script. For example, in csh if you are in the directory in /var/tmp/ with all your RIB files you could type:
% foreach f ( example*.rib )
% ~cs426/pixiehome/rndr $f
% end
% foreach f ( example*.tiff )
% convert $f $f.ppm
% end
% ffmpeg -i example%04d.tiff.ppm -r 24 example.mp4
% rm *.tiff *.ppm
which will render each RIB file, then convert every tiff file to a ppm, run ffmpeg to produce an animation (assuming the RIB files were of the form example0000.rib, example0001.rib, ...), and delete the intermediate image files.

Miscellaneous other resources:


Please read the slides, especially the Notes section at the start of each lecture, if you are not able to attend class.

This is highly approximate and will become firmer as the course progresses. I've put links to the lecture slides as they become available. Please note that all the fonts are embedded as needed in these PDF files, but the printing system on the CS machines may strip out the mathematical fonts. To get around this, use "pdf2ps" to convert to postscript first, then print the postscript file.

DateTopic (and Slides)Work
 September 8  Introduction (ppt)
The basics of animation (ppt)
Assignment 0 out
 September 10  Animation principles, splines (ppt)
 September 13  Motion curves and splines (ppt) (corrected) Assignment 0 due
 September 15  Motion curves, reparameterization (ppt)
 September 17  no class
 September 20  Arc length, Kinematics (ppt)
 September 21  Assignment 1 out
 September 22  Inverse kinematics, compositing (ppt)
 September 24  Rendering for film (ppt)
 September 27  More rendering, camera control (ppt)
 September 29  Matchmove, particle systems (ppt)
 October 1  More particle systems (ppt)
 October 4  Particle systems, object geometry (ppt)
 October 6  Collision geometry (ppt) Assignment 1 due
 October 8  More collision geometry (ppt)
 October 11  Thanksgiving - no class.
 October 13  Particle collision processing (ppt)
 October 15  Friction, collision resolution (ppt) Assignment 2 out
 October 18  Flocking behaviour (ppt)
 October 20  Rigid body dynamics (ppt)
 October 22  Inertia tensors, quaternions (ppt)
 October 25  Quaternions (ppt)
 October 27  Rigid body collisions (ppt)
 October 29  Rigid body collisions (ppt) Assignment 2 due
 November 1  Articulated figure dynamics (ppt)
 November 3  Morphing (ppt) Assignment 3 out,
final project out
 November 5  FFD's, character skinning (ppt)
 November 8  Skinning, motion capture overview (ppt)
 November 10  Footskate, slerping (ppt)
 November 12  Motion graphs (ppt) Final project proposals must be finalized
 November 15  Motion planning, spacetime constraints (ppt)
 November 17  Motion warping and interpolating, Fourier analysis (ppt) Assignment 3 due
 November 19  Fourier analysis (ppt)
 November 22  Fourier analysis of human motion, motion control (ppt)
 November 24  Guest lecture on motion control: Michiel van de Panne
 November 26  Review IK, course summary Review IK, course summary (ppt)
 November 29  Water animation, course summary
 December 1  Final exam review
 December 3  Final exam review Final project due