CS491 Intro to Modeling & Postproduction
Spring 2011
Time: TTh 2:00-3:15
Location: Bob Hartung 106
Instructor:
Joe Michael Kniss
Ferris 301G
277-2967
jmk (at) cs.unm.edu
Office Hours: MWF 11-12:30
Info:
Official class web page:
www.cs.unm.edu/~jmk/IFDM210
Class blog:
imagehacking.blogspot.com
Description
Students will learn to tie together three important aspects of
digital image production: Modeling and Animation, Postproduction
Effects, and Pipeline Development. The content of this course
builds on the algorithmic knowledge gained in IFDM 152 to develop
procedural animation methods and ad-hoc (custorm) processing pipelines.
Students will be challenged to develop an original aesthetic style
while efficiently leveraging computational resources. Essential
skills and concepts covered in this class include: GFX scripting
languages (Lua and Mel), geometric and algorithmic problem solving,
layers and compositing, basic image and color processing.
Objectives Overview
The objective of this course is not to train students in any
particular production software package (though we will use specific
tools; Maya, Final Cut, etc..). Rather, students will learn how to
think logically about the creative process so that vision can become
reality while repetitive tasks are automated.
This class is as challenging to teach as it is to take.
Students might feel like it's the "Algebra or Calculus" of Digital
Media; developing skills that are difficult to grasp but powerful
when mastered. While
Post-Production (e.g. manipulating movie clips) is directly
attacked, the notion of Modeling is more abstract than one
might expect going into this class. Modeling is far more than
making hollow geometric objects in an elaborate GUI. Modeling
is methodical problem solving, an approach, point of view,
technique, state of mind that allows one to reliably and
reproducibly achieve their goals. This introductory Modeling
class focuses on three objectives:
- Color Theory: Science and Mathy Stuff
- Physics of light (photons, energy, frequency, interaction)
- The nature of color, a purely perceptual phenomena, dependent on our
unique biology and brains.
Did you know some birds perceive 7
primary colors?! We only perceive 3, though a fortunate few "color
mutants" get 4!
- Color as a space. Just as we can travel N-S, E-W, Up-Down, we
can "travel" through a three dimensional color-space.
- Light vs Paint, RGB vs HSV, additive vs. subtractive,
forbidden colors, etc...
- Algorithmic Thinking: Computing and Automation
- Making effects or processes reproducible (rather than "ad-hoc
tweaking" in a GUI)
- Elimination of repetitive tasks. (Carpal-Tunnel Syndrome is
the Digital artist's #1 health hazard)
- Breaking down a complex problem into a series of simpler ones
- Script writing: Literally commanding the computer to... >> make.beautiful(things);
- Resourcefulness: Figuring It Out and Getting It DONE
... last, but certainly not least.
- Locating, using, and understanding documentation. (RTFM!)
- Trying new things, breaking old habits. Students are forced to
use familiar tools in new ways and learn new tools quickly.
- Testing and the zen of debugging.
- Never giving up!
Text
Suggested Text
Light Science: Physics and the Visual Arts, Thomas D. Rossing and Christopher J. Chiaverina. This book is not required, but useful.
Because there is no assigned text book for this class. Students will be
expected to take advantage of application documentation and
tutorials. Resourcefulness (finding the right information) is a
key aspect of animation and production design. Students are
encouraged to identify, document, and share community message
boards, blogs, production examples etc... Additional resources will
be made available via the class web page.
Grading
A significant portion (30%) of the grade for this class is
participation. Students must keep an online journal of class
activities and assignments. All assignments should be posted to your online
journal,
unless otherwise specified. The journal can be a blog, personal web
page, or even PDF document (posted online)
It must be available to the instructor but
not necessarily the world. Assignments will be graded based on
degree of completion, quality of results, and documentation of the
process.
Grading Breakdown
- 30% personal journal (2-3 entries per week for an A)
- 40% individual assignments
- 30% final project
Late assignments will incur a 10% per day grade penalty. Students
are allowed one free late day per-semester.
Idea's for journal entries:
- Watch a movie! Dissect the interesting/significant digital manipulations (e.g. color enhancement, special effects, compositing, etc)
- Take a tutorial (e.g. Maya keyframing, shading, modeling, etc) and report what you learned.
- Research a topic from class (e.g. Subdivision surfaces, splines, compositing) and report what you learned.
Course Content
Light Maths: Linear Pixels and Paint
Assignment 1 due Jan 24
Create
a blog and email blog location to the
instructor. Your first post should be about one of YOUR earlier
digital medial pieces (a portfolio quality example).
Assignment 2 due Jan 28
Create an animation of a
bouncing ball using at least 2 tools and minimal mouse-based user
input. You MUST document the process you used to generate the
clip (how did you do it), AND provide either a script, program
(including source), or detailed recipe for reproducing your
animation. Post your writeup and animation to your class
blog.
I will be looking for a thoughtful composition and
stylistic elements as well as quality animation (does the
animation convey a bouncing ball?).
Basic Scripting and Color Space
Assignment 3 due Feb 28 extended to Mar 3
Create an animation or sequence of
images demonstrating various color spaces. You MUST demonstrate
the following:
- The RGB color cube
- Two color wheel variations
- Three linear transitions from pairs complementary colors in no less than 15 steps.
- Two or more "non-linear" transitions from pairs of complementary colors.
- Generate an image demonstrating some novel use of color.
Items 1-4 should be generated using MEL scrips. Item 5 must include reproducibility information similar to Assignment 2.
Hey everyone, check the web and blog about color, forbidden colors, and physics of light! Here's a good example, Why is Glass Transparent?.
2D Image Manipulation, Intermediate Scripting
Assignment 4.1 due Mar 31
Demonstrate scripting proficiency in PhotoShop.
- Identify and execute your choice for "Best Photoshop JavaScript Tutorial or Example"
- Implement and demonstrate a script for converting a regular color image into one that shows how it might look to a color-blind individual. Hits: What form of colorblindness are you simulating? Describe how your algorithm simulates this effect; how realistic is your approach. Show that your script works in some useful way. NOTE if you are (or discover) that you are color-deficient in some way, you should create a script that "un-color-blinds images".
>
Tron Legacy Visual Effects Pipeline breakdown. Notice the large number of connected tools and stages of development. Key idea: Iterative visual programing. (This is a good starting point for a substantive blog post.)
Assignment 4.2 due Apr 7
Basic command line and scripting
- Identify and execute your choice for "Best Bash Shell
Tutorial". Post evidence of your execution; for example your
might post the history of your terminal session,
comments about interesting commands, and some novel
command-line imaging or sound manipulation. (windows users should install and use Cygwin.)
- Identify and execute your choice for "Best Bash Scripting
Tutorial". Post an example script to your blog. Extra credit
will be awarded for exercising advanced techniques
like command line arguments, loops
(for,while,foreach, etc..), and graphics or sound results
(Hint: you may want to try playing with tools like GraphicsMagic
or ImageMagic, which can be selected using the Cygwin setup or
downloaded from the web for mac users (macports is very helpful
here)).
Test due in class Apr 28 (complete for Assignment 4.3 due May 5)
Demonstration of video scripting:
- C: Write a Bash script that adds the frame number (or timestamp if you are ambitious) to a clip. ( C- for simply getting any text in the clip)
- B: Add "command line arguments" that:
- take the name of the clip, ex: test.sh myclip.mov
- take a string for an ImageMagic or PS droplet, ex: test.sh myclip.mov "mogrify -flop"
- A: Make it ROCK!
- Leave no images behind (delete any frames generated along the way)
- Print "usage" information if no arguments are passed to script
- Make the ImageMagic or PS Droplet command optional
- Make the frame number text optional
- Demo some awesome effect!
- For the TEST email me the following:
- The script
- Your terminal history in a text file
- References for how you solved the problems: What resources did you use? This should be a text file with links to the various examples, docs, etc.. on the web and a list of man pages you used.
- For Assignment 4.3, finish the script! Post your results to your blog.
- Tips!
- IM convert needs both an input AND output file name, mogrify is exactly the same but only needs one file, it changes the file you give it...
- To get the frame number you need to "increment a variable", but I=$I+1 does not seem to add one to I... what to do?
- Not sure what the value of some variable is or what precisely you are trying to execute in the script? echo is your bestest friend.
- Sometimes we need to use ${VARNAME} to get the value of a variable to mashup with another string... ex: echo ${I}-frames done
- Windows users: getting a "\r unknown command" error? use dos2unix mytestscript.sh to strip out unwanted "carriage-return character", bash doesn't know what these mean... only windows uses them (and they mean nothing anyway :(.
- When setting a variable DO NOT leave space around the = sign! ex: MYVAR = `echo hi` throws and error... MYVAR=`echo hi` does not.
- Most common bug: MISSPELN
- Remember to work on solving the problem in parts...
- Work out any IM commands or PS Droplets on one image first.
- Sick of waiting for ffmpeg to dump frames? Do it once, keep the frames around, and comment that line of code out till later. Convert taking too long? Remove all but a few frames when you test that part.
- exit allows you to exit the script at any point, might be helpful if you are getting too many errors.
- Remember to start with the first error when debugging your script.
- Trying to fix a command in your script? Make it work on the command line first...
Final, due Friday May 13
- Submit an image or clip demonstrating something you learned in this class. (Get something in for credit!)
- An A+ student will connect 3 or more tools using scripts and minimal mouse moves required.
- A "pro" student will submit a thoughtful and polished blog entry for the final AND a link
to a zip file (or gz, bz, etc) with
- A README.txt file with a list of files in the package, explanation of project, example usage...
- Required input assets; clips, images, audio files, etc...
- Scripts!
- Some example output (hopefully what gets generated by your "example usage")
- Do NOT send these packages via email. Use University provided webspace or "cloud storage" like dropbox.
- Ideally, your script would run and work from the directory... might need some "star" help (see below) to get this working.
- A "star" student will (or has already) spend time with me making the project rock!
I am available during finals week, please book time with me in advance.