CS65a/Aut09: 3D Animation
Home Page - CS65a/Aut09
abstract image Instructor: Tim Hickey
Time/Location: MW 2:00-3:30 in Gzang 123
Topic Syllabus: by week
Instructor Office hours: in Volen 138,
Mon 1-2, Wed 11-12, Thu 12-1
TA Office Hours
  • David Stemmer - Mon 3:30-5:00, Tue 3:00-5:00, Wed 3:30-5:00, Thu 2:00-4:00 in Volen 118
  • Sowmya Gurum - Mon 10:00-12:00, Tue 9:00am-10:30am, Wed 10:00-12:00, Thu 9:00am-1:00pm, Fri 9:00am-10:30am. (Volen 118)


Welcome to the CS65a/Aut09 Website

This class has no prerequisites and is open to all Brandeis students. The goal of this course is to introduce you to the fundamental concepts underlying 3D animation and game design

PDF Tutorials from class lectures

Screen recordings from class lectures

These are trimmed (but otherwise unedited) screen recordings of live demos in class. Intermediate versions of the blender files are available at http://www.brandeis.edu/~tjhickey/cs65a

Student Showcase

Here are some links to the best homeworks and projects:

Homework

Note: I have reduced the number of homework assignments from 5 to 3 by combining the two movie homeworks and combining the two game engine homeworks.
  • HW1 due Wed 9/30/2009 (THIS IS A CHANGE)
    modeling static objects (landscapes, buildings, furniture)
    Hand in your programs at this link.
    We'll show how to do this in class.
    here is a link to a file showing the images submitted so far by unetid ...
    Here is a link to some of the best HW1 tutorials
  • HW2 due MONDAY 2 November 2009 DUE DATE CHANGED TO MONDAY
    your first movie for CS65a with character animation (bones, rigging, shape keys, action libraries), sound track, titles, and credits.
    Hand in your programs at this link.
    here is a link to a file showing the movies submitted so far by unetid ...
  • HW3 due Wednesday 2 December 2009
    HW3 - building an interactive game containing a virtual Rube Goldberg machine to switch from one level to the next...

Final Project

Submit your final project using the following link:
http://popper.cs-i.brandeis.edu:8088/tim/cs65a/fp/view.html

Here is a link to a file showing the final projects submitted so far by unetid ...
You should submit:
  • The movie or game. Please include a license with the movie or game. You can use a Creative Commons license, or a straight "All Rights Reserved" copyright, the choice is yours, but include it in the credits of the movie, or the textarea of the game in the blender file.
  • Any blend files you used to create the movie or game (these should have external data packed in them)
  • A README.txt file giving the title of your project and the group members and any additional information
  • A blog or essay by each person in the group about their contribution to the project. What did they do, what worked, what didn't, why did they make the decisions they made, what worked out, what didn't, etc. This should not be as detailed as a tutorial, but should give the reader a good idea of the techniques used to create the movie or game. In particular, please reference any help you got, e.g. tutorials you used, TA support, help from friends, websites with textures, etc.
The final project will be a group project in which students either create an animated short movie (of 1-2 minutes per person) or a 3D game. There will be a film and game festival during the last few weeks of the class where students present their work, answer questions from the audience, and write reviews of the work of other students. Here is a screen recording of the description of the final project during class on 9/30: Discussion of the final project (15'37'', 113 MiB, Quicktime)

Grading

The course grade will have three components:
  • 60% Homework Projects (25% HW1, 25% HW2, 10% HW3)
  • 30% Final Project
  • 10% Attendance and Class Participation
The Homework Projects and the Final Project will consist of several parts. You will be asked to
  • create one or more 3d models, animations, or games
  • Render them in various modes (e.g. jpg for models, mov or wmv for animations, .blend for raw models).
  • Present your models, animations and games to the class and answer questions from the audience.
  • Write a tutorial on how you constructed your model, animation, or game (with screenshots). This part of the assignment both develops your skill at technical writing and deepens your understanding of the project as you must not only build the model but also explain how you built it. After an assignment is complete your tutorials will be made available to the members of the class who will have an opportunity to make constructive suggestions.
  • For the final projects, you will be asked to write reviews of your fellow students projects. Your name will be stripped from the reviews before they are sent to the project's authors.

Optional Course Project

You will be encouraged, though not required to participate in a class project in which we combine the tutorials and models of those students who with to participate and create a publically accessible website and print-on-demand book. Participation is entirely optional and will not affect your grade, but will give students the option to create something that will contribute in a meaningful way to the 3D modeling, animation, and game design community.

Reference Materials

Class notes

  • Lecture 1: Mon 8/31/2009: Overview of the course - introduction to the blender interface
    For the introduction, we showed how to create a skateboard using blender.

    For Wednesday's class you should:
    • Download the blender application onto your computer (or a computer you use) Visit www.blender.org to download the application.
    • Watch the 14 video tutorials on Neil Hirsig's Open CourseWare site for his 3D animation class at Tufts. Each tutorial is about 2 minutes long. This should give you a good introduction to the basic layout of the Blender interface.
  • Lecture 2: Wed 9/2/2009 Architectural Rendering
    In today's class we walked through one approach to modeling a building. This approaches builds the foundation for the walls by extrusion from a cube and then raises the walls in several steps, again using extrusion. We create doors and windows by deleting and adding faces as appropriate, and we show how to select different materials for different faces in the building. The class ended with a partially complete building, which is similar to the one you can download in this blender file: building-5.blend

    I've expanded the lecture into a tutorial that goes through all the steps of creating a building and adding textures.
  • Lecture 3: Wednesday 9/9/9 Modeling landscapes
    Today we have several goals
    • start a project to collaboratively and in real-time create tutorials from the class using collaborative softwared built at Brandeis. Its called the CollabEd Text Editor and has been created as part of the dissertation research of a PhD student, Kenroy Granville, in the Brandeis Computer Science department. The goal would be to have 4-5 students share the task of taking notes describing the blender operations from class.
    • add a roof to our building from last time
    • walk through a technique for creating landscapes
      Here is the blender file we created:
      landscape.blend
    • discuss the requirements for the first homework
    • and, if we have time, discuss the physics and mathematics behind the materials panel

    I've expanded the lecture into a tutorial showing how to use proportional editing and how to texture the normals of a surface while creating a landscape:

  • Lecture 4: Monday 9/14/2009 Ray Tracing: The Mathematics of Computer Graphics
    Today we give an overview of the Theory of Ray Tracing and illumination and we demonstrate these theoretical concepts using models constructed using Blender.
    References:
  • Lecture 5: Wednesday 9/16/2009 Advanced Modelling Topics: Intro to the Logic Bricks and Python Scripting
    Today we cover several topics
  • Lecture 6: Monday 9/21/2009 Keyframing and Animation
    Today we continue our introduction to Python scripting and we begin the section on animation.
  • Lecture 7: Wednesday 9/23/2009 Discussion of the Final Project and More on IPOs
    Today we discuss the steps needed to complete the Animation version of the final project including
    • Form a production company - decide who you want to work with to produce your movie. You can have groups from 1 to 6. Everyone in the group will be responsible for keeping a detailed journal of the work they did on the project (including screenshots). Each journal entry should provide the date and a description of what you did, what problems you encountered (if any), what resources you used, a screen shot of an important moments in your work that day. So you should be writing the journal as you go.
    • Storyboarding and Screenwriting - planning the film
    • Model creation - designing sets, characters, and action libraries, designing materials and textures, etc.
    • Direction and motion planning for scenes - create detailed paths for characters and objects during scenes and script the actions that should occur.
    • High quality rendering - render the scenes (optionally with a true 3D rendering of left and right eyes) this takes a long time. You may want to enlist the help of some of your friends, and render some of your scenes on their computers overnight, or go to the computer labs early in the morning and use 5 computers at the same time. It helps to make relatively short scenes, even if one scene starts right after another scene ends...
    • Sound design and film scoring - find appropriate sound effects, compose original music or find appropriately licensed music. Students in the Graduate Sound Design class at Brandeis may want to do the film scoring for you....
    • Final Edit - combine all of the rendered scenes into a full movie, add the sound effects and music, put titles at the front and credits at the end, including the license with clear terms.
    • Publish - upload your finished movie to the CS65a website. Optionally, upload a version to youtube or another public site. Optionally, publish your models (and tutorials) to a public blender tutorial site we will create for the class. Optionally, contribute your movie to a class DVD project where we create a Creative Commons licensed DVD of animations which can be distributed more widely (you can publish with a pseudonym in the credits if you don't want to use your real name....)
    • Screen - screen your movie in class and answer questions from the audience also, write reviews of all the other movies. Optionally, screen your movie in the true 3D projector classroom on movie night.
    • Compete - optionally, submit your movie to the Sundeis Film Festival or other animation film festivals.
    You have 7.5 weeks to get all of this done!

    Next we go back to blender and show how to combine IPOs and paths to generate realistic motion of characters in a scene. We also show how to edit spline curves in the IPO windows and how to store several scenes in a single blender file. Finally, we introduce the use of layers and show how to move objects from one layer to another and to view a subset of layers.

    Screenrecordings
  • Lecture 8: Tuesday 9/29/2009 Armatures, Bones, Rigging, and Poses
    Today we discuss methods for uploading hw1 to the class server and we answer questions about hw1 and blender problems. Then we start studying the use of armatures and bones for mesh deformation.
  • Lecture 9: Wednesday 9/30/2009 More on Rigging and Poses
    Today we showed how to rig a mesh and use the pose mode and key framing to create animations.
  • Lecture 10: Wednesday 10/7/2009 Actions and the NLA
    Today we showed how to use the Action editor and NLA to create a library of actions for a characters and to compose those actions into a scene.

    Screenrecordings
    • Characters, Actions and the NLA Creating a character from scratch, rigging it with bones, creating a library of (two) actions (waving and a walk cycle), composing those actions using the NLA, and adding a path for the walk cycle (67' 42'', 357 MiB, Quicktime H.264))

    march-2.blend is the blender file we created during that class.
  • Lecture 11: Monday 10/12/2009 Shape Keys and Actions
    Today we discuss the use of Shape Keys to animate mesh deformations as an alternative to the use of armatures. Shape keys are ideal for animating facial expressions. We also discuss HW2. We'll use shape key animation to create a Halloween video similar to the following: face-1f.mov which was generated from this blender file: face-1f.blend.
    We will start with this blend file face.blend of a simple face (though we might also build it in class). You can download this before class if you want to follow along.
    Screen recordings
    • Actions and the NLA (continued) (6'34" min, 94.7 MiB) -- in this concluding segment we showed how to turn the character around on the path and how to use the path IPO to move the character along the path.
    • Shape keys (60'12" min, 603 MiB) - in this section we show how to create a face from a plane using the mirror modifier and then how to use the Lattice Deformation method to bend the plane into a more face-like shape. Finally, we show how to create shape keys and to combine them using the action window This also lets us interpolate from shape to shape using an IPO.
      scarecrow-3.blend is the final blender file we created and scarecrow-2.mov is the final animation of that IPO.
  • Lecture 12: Wednesday 10/14/2009 Intro to Game Design
    Today we start exploring Game Development using Blender as our platform. The Blender Game Engine used the Bullet Physics Engine to simulate its virtual worlds. We will start by looking at some of the capabilities of the Blender Game Engine:
    • First are some videos of some Rube Goldberg machines from the 2007 Bullet Physics Contest
    • Next we look at the "subracer" game which comes packaged with the book: the Blender GameKit (2nd edition)
    • Then we begin an introduction to using the Logic Bricks to create interactive 3D media applications by taking our marching character from a few days ago and programming it to march and turn in a virtual world...

    The key ideas we will cover are
    • The Sensor, Controller, Actuator model
    • The Keyboard sensor
    • The And controller
    • The motion actuator (Loc, Rot, Force, Torque)
    • The Action actuator (for invoking actions, such as walking)
    • The IPO actuator (for invoking IPOs, such as opening doors or windows)
    • The Scene actuator
    • The sound actuator to associate sounds to actions
    • The collision sensor (for example to switch to a new scene when reaching a goal in one level)
    • The delay sensor (for creating initial splash screens)

    If you want to follow along here are some models that we will use
    Here is a link to the screen recording for this class: and here is a link to the files generated during that class:
  • Lecture 13: Mon 10/19/09 UV Texturing and Rigid Body Joint Constraints
    today we showed how to map textures directly onto a mesh. This requires decomposing the mesh into a collection of smaller submeshes that can be projected (i.e. flattened) to a plane with minimal distortion. We showed how to create seams along selected edges, select the faces bordered by those seams, and then unwrap that part of the mesh into a 2D projection. One then uses a script to export that projection to an image file which can be painted and rescanned (or painted digitally). The resulting painted projection is then mapped onto the mesh in such a way that it can be rendered efficiently in the real time game engine. We also showed how to link rigid bodies in the game engine using a ball-and-socket joint or a hinge joint and we reviewed using the logic buttons to control an object by imparting forces and torques to the object.
    Screen Recording
  • Lecture 14: Wed 10/21/09 Building a Multi-level Game
    Today we will discuss the final project and build a multi-level game.
    Due Dates!
    • HW2 (a movie) is due in one week, with a 1%/day late policy
    • Final Project is due in 4 weeks, with a 1%/day late policy
    • HW3 (a game) is due in 6 weeks on the last day of class (12/2)
    People working on a game for the final project may swap hw2 and hw3. Thus, they can write a prototype game for hw3 for next week and have until the end of the semester to complete their hw2 animation project. Today we will make a simple game similar to maze-8.blend starting from maze-1.blend.
  • Lecture 15: Mon 10/26/09 Modeling a humanoid body
    Today we had two student presentations on modeling from an artistic perspective: Victor Frenkel demonstrated several useful tools in Maya and Blender, and Samuel Thompson demonstrated a technique for modeling humanoid bodies. The student presentations were not successfully recorded.
  • Lecture 16: Wed 10/28/09 Modeling the human face
    We began this lecture with a student presentation by Victor Frenkel on modeling humanoid faces. Then we discussed particle systems. We also had a brief discussion of how to submit hw2 at the beginning of class.
  • Lecture 17: Mon 11/2/09 Discussion of HW1
    • Handback HW1 and discuss exemplary student tutorials
    • Discuss HW2 (due today at midnight) and dot method of submission
    • View student movies from Spring 2007 from DVD
    • View student Rube-Goldberg machines from last Spring
    • Discuss more Blender references such as the Noob to Pro wikibook.
    • Begin Intro to Python starting with The Python tutorial from the official Python site.
  • Lecture 18: Wed 11/4/09 Python Scripting for Modeling
    • Upcoming due dates:
      • 11/23: Final Projects are due!
        This is because the CS65a Film/Game Festival will be the last 3 days of class: 11/23, 11/30, 12/2 and so all final projects must be complete by 11/23 which is 19 days from today (with 3 weekends!). Late projects will be penalized as follows:
        • no penalty for projects completed by 2:00 11/23, ready for the festival
        • 5 points for projects completed by 2:00 11/30, ready for the 2nd day of the festival:
        • 10 points for projects completed by 2:00 12/2, ready for the last day of the festival
        • 15 points for projects submitted after 2:00 12/2, mmissing the festival
      • 12/2 - last day of class, HW3 is due. You can be working on this during the last two weeks of class after your final project has been completed...
    • Viewing and discussion of previous student movies
    • Python scripting for modeling
      • building a spiral staircase in Blender - APIs for scene
      • Frenkel's python script
      • random perturbation script
    • Python Concepts
      • using the dir(...) and help(...) methods
      • arithmetic
      • math and random modules
      • list and iterator methods (indexs, slices, ...)
      • for loops
      • if statements
      • method definitions for functions and procedures
    • Blender Python members
      • s = Scene.getCurrent()
      • s.objects
      • manipulating selected and active objects
      • b = Blender.Object.Get(...name....)
      • b.LocX, b.SizeY, b.RotZ
      • Blender.Object.Duplicate(mesh=1) or
      • link(s,b1 = b.copy())

    Screenrecording:
    Introduction to Python Scripting:I
  • Lecture 19: Mon 11/9/09 Python Scripting for Animation
    • Today we start with a model of a circus performer fleur.blend and we show how to use texture painting to directly create/modify a UV texture on a mesh.
    • Then we start with a version of "fleur" on a bench: fleurWave.blend and progress to a final version with 100 fleur's doing the wave: fleurWave4.blend
    • We then look at the APIs for Blender Animation and show how to use them when writing Python scripts: Blender Animation API

    Screenrecording:
    Introduction to Python Scripting: II
  • Lecture 20: Wed 11/11/09 Python Scripting for Animation
  • Lecture 21: Mon 11/16/09 Using Python Scripting in the Game Engine
    The Film and Game Festival is one week away! You should be well on your way to completing your final project by this time. The goal of your final project is to demonstrate how much you have learned in this class by creating a high quality movie with an interesting, engaging plot or a high quality game which is fun and engaging. You should have about 1-3 minutes of animation per group member.
    • First we watch a few more student movies and demo student games for hw2
    • Next, we hear about interesting blender techniques from several students. Some of these presentations will be on Wednesday ...
      • "Rendering using the Yahoo Cloud" - by Parker Porfilio and Prasanna Suman
      • "Animating grass" - by Parker Porfilio
      • "Blender Compositing using the Video Sequence Editor" - by Prasanna Suman
      • "Flying the camera and animating the crab manipulating the shovel" - by Simona Dalin
      • "Animating a Volcano" - by Dan Reed and Mac Magruder
      • "Putting on glasses" - by Charles J Hu (sick ...)
      • "Animating objects being created" - by Brendan Hasz
  • Lecture 22: Wed 11/17/09 Using Python Scripting in the Game Engine
    Notes:
    • Film and Game Festival starts on Monday. If you are ready you can put your project name in the box and we will randomly draw to see who goes first. You will need to answer questions about your movie so have the blend files and the movie or game uploaded to the course website.
    • you can use the computers in Farber and Goldfarb to render your scenes. Just download blender (2-3 minutes) and open your blenderfile (e.g. from a thumbdrive) and render.

    • More Student Movies and Games:
    • Student Presentations:
      • "Animating dripping water" - by Jeremy Patton (sick...)
      • "Transparent Dancer with city background" - Doug Dunlap and Julia Marder
    • Finally we continue our introduction to using the GameLogic APIs and we extend the maze game by adding a character that chases the player.
  • Lecture 23: Mon 11/23/09
    Day 1 of the Film and Game Festival
  • Lecture 24: Wed 11/25/09
    Day 2 of the Film and Game Festival.
  • Lecture 25: Mon 11/30/09
    Day 3 of the Film and Game Festival
  • Lecture 26: Wed 12/2/09
    Day 4 of the Film and Game Festival
Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.0 Generic License