Introducing PuppetTime
Volume Number: 14
Issue Number: 1
Column Tag: develop
Introducing PuppetTime(tm)
by deeje cooley, San Francisco, CA
Digital actors and how to add new media types to QuickTime
Introduction
3D media is very exciting to use, but for most users is beyond their ability to create. I
definitely believe that 3D is the medium of the future. Yet, I am constantly frustrated
by the learning curve associated with high-end 3D modeling and animation tools. Sure,
for professionals, these tools are the cream of the crop. I want something a little more
progressive. I want to manipulate 3D objects that know how to animate themselves and
that can interact with each other. Drag a dog onto a stage, then tell it to wag its tail.
Drag a cat onto a stage, then tell it to walk around. Put the two together, and tell the dog
to chase the cat. In short, I don't want to make 3D objects, I want to use 3D objects to
create other things. That's why I've created the PuppetTime architecture.
PuppetTime is an open architecture for digital actors, built on top of QuickTime. What,
you may ask, is a digital actor? You may have heard the term before. In its most basic
definition, a digital actor is a graphic representation on the computer screen that can
accept messages to animate itself. I use the term puppet to mean digital actor, because I
want to emphasize the metaphor of virtual strings controlling a shape's appearance and
implied behavior.
Here's an example: on my computer screen I have a humanoid-shaped puppet and a list
of commands. When I click on a command, it is sent to the puppet, which then responds
with some kind of activity. If I click on "walk" and then click on a new location on the
screen, the puppet will "walk" to that new location. If I click "wave", the puppet will
wave to say hello. Different puppets might animate themselves in different ways to
represent "walk" or "wave"; the power lies in the fact that "walk" and "wave" are now
abstracted out and any number of puppets can understand these commands while
presenting a unique visual appearance for each.
There are many companies now developing digital actors for use in movies and games,
but as of yet there is no proposed standard framework that might make the commercial
acceptance and distribution of digital actors feasible. The PuppetTime architecture
attempts to address this need.
PuppetTime uses the Component Manager and QTAtoms, defines a new component
interface called puppets, and includes both a derived media handler and a movie import
component. The PuppetTime framework is designed with a philosophy similar to
QuickTime: it contains a set of toolbox routines for manipulating the PuppetTime media
data, as well as a number of extensible components and component interfaces. Much
like Sprites and QuickTime Music Architecture in QuickTime, PuppetTime can be used
by itself in your applications, and it can also be contained in QuickTime movies
alongside other media types like music, text, sound, and video.
You are highly encouraged to have a copy of the PuppetTime Sample Code on hand while