NYU's Media Research lab, under the direction of Ken Perlin, has developed the IMPROV system for scripting real-time, behavior-based, interactive actors in virtual worlds. This authoring system allows authors (not graphics hackers) to work from a rather high level in composing actions for animated characters. The system supports techniques for layering behaviors on top on one another in a natural way (see figure 6).
An essential feature of the system is that virtual actors can be doing many things at once without the author having to attend to all of the details of interaction between behaviors. This is not always a simple problem. For example, in [Perlin & Goldberg1996] Perlin and Goldberg give example scenarios in which a virtual actor is scratching his head, while in the midst of other activities. In the first case he is waving to someone, while in the second he is walking. Waving and scratching require some sort of action-swapping mechanism with transition behaviors because the two cannot take place simultaneously; walking and scratching should be performed simulateously without interrupting either behavior. To effect this, IMPROV authors are given sets of rules with which to specify layering constraints for actions.
A metaphor from image compositing is used wherin actions are grouped together according to their compatibility, in this case, temporal compatibility. Inter-group actions compete for center stage, with a winner-gracefully-take-all algorithm that allows for other behaviors to recede through transitions. Intra-group actions are ordered so that groups more to the ``fore'' obscure those more to the ``back.''
The work is being integrated into other applications, and most certainly has tremendous applicability. It has been embodied in the virtual characters ``Otto,'' a surprisingly graceful humanoid, and ``Wendy,'' a punkish looking impatient cigarette-smoking character. It now runs primarily as a VRML application, but appears to use some native code as well for efficiency. The group is most recently working on facial expressions using the same layering idea for behaviors so that, for example, a character can sneeze while looking contented.