Behavior Planning for Character Animation

Manfred Lau and James Kuffner
Conference Paper, In Proceedings of the ACM SIGGRAPH/Eurographics Symposium on Computer Animation, August, 2005

View Publication

Copyright notice: This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. These works may not be reposted without the explicit permission of the copyright holder.


This paper explores a behavior planning approach to automatically generate realistic motions for animated characters. Motion clips are abstracted as high-level behaviors and associated with a behavior finite-state machine (FSM) that defines the movement capabilities of a virtual character. During runtime, motion is generated automatically by a planning algorithm that performs a global search of the FSM and computes a sequence of behaviors for the character to reach a user-designated goal position. Our technique can generate interesting animations using a relatively small amount of data, making it attractive for resource-limited game platforms. It also scales efficiently to large motion databases, because the search performance is primarily dependent on the complexity of the behavior FSM rather than on the amount of data. Heuristic cost functions that the planner uses to evaluate candidate motions provide a flexible framework from which an animator can control character preferences for certain types of behavior. We show results of synthesized animations involving up to one hundred human and animal characters planning simultaneously in both static and dynamic environments.

Quicktime Video available at:

author = {Manfred Lau and James Kuffner},
title = {Behavior Planning for Character Animation},
booktitle = {In Proceedings of the ACM SIGGRAPH/Eurographics Symposium on Computer Animation},
year = {2005},
month = {August},
} 2017-09-13T10:43:15-04:00