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.
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
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:
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
% foreach f ( example*.tiff )
% convert $f $f.ppm
% 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.
|Date||Topic (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|