If it seems like I am making this up as I go along, that’s half true. I don’t have a strict agenda as to what I want to cover, or what the exact order should be – I am willing to adapt based on people’s interests. I do have some pedagogical goals.
When I try to make a list of the things I want to cover, it doesn’t fit in a semester. When I take even a subset and make a graph of what depends on what, it always turns out to be cyclic. If you look at old versions of the class, they always turned out OK in hindsight. Even the first time I tried this in 1999.
The other night, I walked home with a colleague who lives in the neighborhood and he asked me “What are the main things people will learn. What will they know after the class?”
- You will get a sense of how we can model complex phenomena, like motion, computationally.
- You will learn about how we can combine art and technology – to build systems that do computation in the service of artistic and communicative goals.
- You will learn about how we can use large amounts of data as a way to model things that are otherwise too hard to figure out from first principles.
- You will learn some of the foundational places where numerics come into play (since its easier to see numerical issues when they are visual).
- You will learn how to approach a research literature, and learn from “primary sources” – even when these are not convenient.
- You will learn how various aspects of CS (graphics, learning, numerical computing) can be brought together.
- You will have the opportunity to have fun creating cool stuff.
“Activities” – Things you will do
- Create a picture / animation with a “real” animation tool – by hand. I think its important for you to appreciate what these tools are like, and how hard animation is to do. It’s also important if you are going to work with animators to know what they use. You might even decide to do projects as part of this.
- Read, critique, summarize, review, … – learning to appreciate the literature (either to contribute or just to make use of it) is important. We’ll look at a range of papers, from art oriented to heavy duty math. From historically relevant stuff, to the latest breaking things.
- Learn the foundational mathematics and techniques. Some of this might be more lecture style than we might like – but I lack good sources to read about it, and it will save non-class time for other activities. We might try to have programming assignments in order to hammer in the lessons, but I might just hope that it soaks in.
- Do 2 projects. Both 5 weeks (approximately). For one, we will experiment with having larger groups, with a set of tasks to divide amongst the group. It will be up to the group to decide how to divide up the work. The second project will be more open ended, and hopefully lead to some research ideas. ( NPR Quake in 2000, and the first Motion Graphs experiments in 2001, both turned into significant research projects).
Topics
There are way too many to fit into a semester, so we’ll pick and choose a bit.
Some things we probably won’t do:
- We will probably do a little bit less “natural phenomena simulation” (smoke, fluids, hair, passive dynamics in general), since Efftychios Sifakis will be teaching a modeling and simulation class in the future. We’ll probably will cover some of the basics of physical simulation, and talk about some of the efficient ways to cheat.
- We won’t talk about rendering much. This is animation, not rendering.
Some things we almost definitely will do:
- Talk about the history of animation – there’s something to be said for watching Mickey Mouse with a graduate level CS class. Also, understanding the history can give you some appreciation for the art form. (We did some of this last year if you took the Vis class. But its worth doing again.)
- Talk about the art of animation (the Disney Principles) – this is really key to understanding motion. (We did some of this last year if you took the Vis class. But its worth doing again.)
- Look at the foundations of representing rotations and orientations and kinematic chains. You need to do this to understand how to work with human figures.
- Look at posing human figures – forward and inverse kinematics, as well as data-driven techniques. This is a nice place where a seemingly simple problem can lead to an amazing richness in subtlety and variety of techniques.
- Look at human figure animation, particularly from observation (motion capture). Not only do I find it interesting, but I think it brings up a lot of the “deeper issues”.
- Look at motion synthesis by example methods – since they are interesting, still evolving, apply some cool ideas from all over CS, …
- Look at skinning methods – since they are an interesting place where geometry and motion come together.
- Cover the basics of physical simulation (stiffness, ODEs, …) – since it’s a good foundation for other things.
- Learn some basic filmaking / cinematography concepts – since its fun to teach, will help you look at all film, and might even help you think about user experiences.
- Discuss some particularly interesting mathematical approaches that apply to many problems.
- Talk about issues in real-time animation (performance animation).
- Look at some basics of control – how we make a complex system do what we want it to do. This is an interesting place where lots of the other issues come together.
- Look at some papers that I just never quite understood (to force me to figure them out once and for all).