Procedural animation from the inside out

When I create an interactive procedurally animated character, I usually start with a high level sketch, in words, of who the character is. Primarily I am looking for attitude and motivation.

It really boils down to a single question: “If I were that character, what would I do, and why would I do it?”

I’ve been writing a lot of code recently to create an interactive woolly mammoth that we will be showing at the big SIGGRAPH computer graphics conference in Vancouver this coming August. To make it all work, I’ve had to figure out lots of tricky mathematics and algorithmic detail.

There are also questions of anatomy and biomechanics that are specific to pachyderms. These questions have required research and study of bone and muscle structure, as well as much experimentation. For example, like I said yesterday, how exactly does an elephant move its trunk?

Yet at the end of the day, it all comes down to understanding the character. Here are the notes I wrote for myself when I started this. These notes serve as an indispensable guide to everything I am implementing:

The mammoth thinks of herself mainly as a friendly floating head, curious about the world around her. Her main means of interacting with the world is via her trunk, so she is primarily engaged in using her trunk to interact with the world in various ways, such as carrying objects, picking up food to put in her mouth, or affectionately nuzzling her friends.

Most of the time she not very aware of her body. When she wants to move her head, her body simply moves to make this happen, while using the minimal expenditure of energy.

She is not really aware of her tail. It functions mainly to swat away flies, without her really thinking about it.

To animate the mammoth, we mainly communicate with her head, telling her which objects or other beings she is interested in, and what tasks she is engaging in. For most tasks she will use her trunk. The mammoth’s trunk is her superpower, and she knows it.

Leave a Reply

Your email address will not be published. Required fields are marked *