Automatic Incremental Animation

 

Dan Lessin

CS 384G

Final Project

5/16/2010

 


 

Concept

 

I'm using the term "incremental animation" to describe animation in which each frame is produced by modifying the previous frame in some way.

Although the most well-known incremental animation technique is probably sand animation, the oil-on-glass technique employed by Aleksandr Petrov is quite impressive.

The aim of my project is to work towards an automatic version of an incremental animation technique.

 


 

Algorithm

 

The algorithm I have implemented proceeds as follows.

1. The user provides an input sequence of target images.

2. The first target image becomes the initial working image.

3. For each subsequent target image, the working image is modified towards the target in some limited way.

Each modification of the working image is written out, and a sequence of output images is produced.

The modification at each step could conceivably be produced in many different ways. For this initial test, a single point in the target is sampled and used as the color for a circle painted onto the working image. A sample point and circle are chosen by testing the entire image on a dithered grid across a dithered variety of circle sizes to determine which combination would bring the working image closest to the current target (where "closeness" is defined as per-pixel Euclidean distance).

 


 

Initial Results

 

The following are brief experiments with different applications of this initial implementation.

1. Transforming one simple shape into another.

2. Rotating a simple shape (12 fps playback).

3. Rotating a simple shape (33 fps playback).

4. Moving a simple shape across a background.

5. Targeting complex film images (begin and end targets only).

6. Targeting complex film images (full sequence of targets between begin and end).

 


 

Future Work

 

The most obvious area for future work seems to be the type of modification used when transforming the working image towards a target image. Here are a few of my ideas.

1. Currently, I have used multiple modifications (circles) per frame, but each one is computed independently. Perhaps requiring subsequent modifications within a single frame to be physically adjacent would produce an effect more like what a human might do. (This technique would have the additional benefit of reducing the search space within each frame.)

2. Straightforward shape and pattern variations of the simple paint-a-circle modification used in this implementation could produce more naturalistic results.

3. More complex modifications might be used for a result much more like what a human might produce. (For example, fill in an arbitrary convex quadrilateral.) While this may tend to increase the search space, further use of sparse random sampling might be used to mitigate this effect somewhat. I have also considered a pushing/smudging modification. (It seems that this would also require a mechanism for adding new areas of color not already present in the image.)

4. Other non-naturalistic modifications inspired by/inherent to the current medium could produce very interesting effects. I believe that there are a lot of possiblities in this area.

 


 

Source Code

 

incremental.tgz