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 designPDF 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-
Lecture 9: Wed 9/30
- Creating an IPO for an object using the Physics Engine (4' 38'', 31 MiB)
- The Followpath constraint. (22' 48'', 148 MiB) Constraining an object to follow a path while performing its IPO
-
Lecture 10: Wed 10/7
- Characters, Actions and the NLA (67' 42'', 357 MiB) 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
-
Lecture 11: Mon 10/12
- Actions and the NLA (continued) (6' 34", 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", 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: Wed 10/14
- Intro to Game Engines (80 min, 509 MiB) In this class we looked at a couple of examples of what can be done using the Blender Game Engine, starting with the Rube Goldberg Machines and moving to games. Then we started exploring the visual programming interface in which you program blender object by specifying combinations of sensors that trigger combinations of actions. We saved several intermediate blender files which you can access at this URL: http://www.brandeis.edu/~tjhickey/cs65a/game-engine-2009-10-14
- Lecture 13: Mon 10/19/09
- Lecture 14: Mon 10/19/09 - No Video
- Lecture 15: Mon 10/23/09 - No Video
- Lecture 16: Wed 10/28/09
- Lecture 17: Mon 11/2/09 -- No Video
- Lecture 18: Wed 11/4/09
- Lecture 19: Mon 11/9/09
Student Showcase
Here are some links to the best homeworks and projects:- some of the bset models of landscapes, buildings, and objects
- (more to come...)
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.
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
- 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
- Screen Recordings of selected classes
- CS65a wiki
- 3D Models with Creative Commons or similar licenses:
- Blender Summer of Documentation Intro to Python Scripting in Blender
- Blender 3D: Noob to Pro - this is a wikibook with many short tutorials about using Blender features from particles, to cloth, to softbodies. The demos show how to make fire, fireworks, and other effects.
- Python Tutorial - this is an introduction to Python, aimed mainly at people who know another programming language, but much is understandable to those with no programming experience.
- The Blender website and interesting pages on that site:
- Neal Hirsig's 3D Design course
-
Blender tutorials
- Blender 3D: Noob to Pro (thanks to Sean O'Hare for suggesting this link!)
- Blender Basics - a nice 150 page freely downloadable introduction to Blender for high school students. This site has a link to a nice textures folder with a few hundred texture files..
- Texture links
- Character Tutorial
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.- tutorial as webpage
- tutorial as pdf
- final blender file skateboard-final.blend
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.- Building tutorial as webpage
- Building tutorial as pdf (5 MB)
- final blender file newbuilding-6-full.blend
-
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:
- Landscape tutorial as webpage
- final blender file landscape-3.blend
-
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- Generating a "walk-through" camera that is controlled by keyboard commands
- Techniques for creating a tutorial
-
Python Scripting -- extending Blender using Python scripts
- List of Python Scripts
- Script to create a tetrahedron
- Script to create a tetrahedron with parameters contributed as an open source project by a blender developer, Michel Anders in the Netherlands.
- Python scripts to create gears
-
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.
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- Discussion of the final project (15'37'', 113 MiB)
- Creating an IPO for an object using the Physics Engine (4' 38'', 31 MiB)
- The Followpath constraint. Constraining an object to follow a path while performing its IPO (22' 48'', 148 MiB)
-
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- march-2.blend is the figure with a marching and waving action ..
- newbuilding-6-full.blend is the house with a game-engine controlled viewer..
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)
-
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...
-
11/23: Final Projects are due!
- 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 -
Upcoming due dates:
-
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
- Watch Big Buck Bunny created using Blender.
- Watch HW2 movies from class
- Intro to GameEngine Python API
- Simple example of using Python in a game: mazegame-pythondemo.blend
-
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
