Final Project - Using noise to enhance synthetic motion
Abstract
Creating lifelike, organic animation from scratch is not an easy task.
With a basic set of traditional tools (key-framing, motion graph editors, etc.)
it is sometimes difficult for animators to create animation that doesn't look
synthetic or mechanical. The proplem is that in real life organic motion is not
perfect, and attempting to key-frame high frequency, subtle movements by hand is
not really a viable choice. The idea then, is to add another layer onto the
animation process that adds noise to already keyframed movements to make it
look more realistic. Noise can be used to make cycled animation look less
repetitive, regular keyframed motion look better, or even to create difficult
motion from scratch (i.e. a person quivering in fear or a trying to regain
balance). Beyond single character motion, noise can be applied to create
procedural animation such as a flock of birds, a cheering crowd, or anything
that appears chaotic.
Goals
My basic goal for this project is to write a program that lets a user
interactively explore the usage of noise to help enliven animation. Building
the interface to control the noise variables, and the user interface as a whole
probably take up a large part of the programming. The following is a list of
things I hope to accomplish for this project. They are roughly in what order I
will try to work on them:
- Write a Maya ascii file interpreter. Since I want to be able to edit existing
animation, I figure I can export some small keyframed sequences from Maya and have
my program read them in. I've done some research on Maya's ascii format and it will
hopfully not be too difficult to read simple animation files. If this part starts
to take too long, however, I'll have to find a different way to import animation.
- Write good noise generators. At the core of my program there must be a good
noise generator that generates controllable noise. I'll have to read Ken
Purlin's papers on noise generation for some guidance.
- Build a user interface. I plan to have a simply GUI inerface with knobs or
dials to control the noise variable's. The interface has to let the user tweak
the noise variables and watch the animation at the same time.
- Make some clips. Hopefully I will finish the main program with enough time
left to try to make some good animation clips. I plan to try a bunch of different
things to see what looks the best.
- Produce high quality animation. After I have the noise in the animation I want
to export it to Maya so I can apply it to some characters and produce some animation
with all the things Maya can add (ray-tracing, motion blur, etc.).
Dates
- March 30th - be reading in and displaying animation.
- April 16th - have interace mostly worked out and be able to add noise to animation.
- April 23th - have some good animation examples made.
- April 27th - have rendered animations done.
Work Log
- March 21st - I've decided to write a plug-in for Maya instead of writing my
own file interpreter from the ground up. I figured out how to compile and link
plug-ins in VC++ and I got a simple plugin that interacts with user mouse input.
- March 25th - Using some code provided in the Maya dev kit I have a simple
interface that allows a user to select an object and apply Purlin noise to it.
right mow the applied noise makes the object look like a wobbley peice of jello.
The next step is to apply the noise to skeleton joints and address the problems
it will create (skating feet, motion degredation).