1221 lines
67 KiB
HTML
1221 lines
67 KiB
HTML
<html><head>
|
||
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
|
||
<title>Craig Reynolds: Flocks, Herds, and Schools: A Distributed Behavioral Model</title>
|
||
</head>
|
||
<body><p>
|
||
</p><hr>
|
||
Published in <i>Computer Graphics</i>, <b>21</b>(4), July 1987, pp. 25-34.<br>(ACM SIGGRAPH '87 Conference Proceedings, Anaheim, California, July 1987.)
|
||
<hr> <p>
|
||
</p><p>
|
||
|
||
</p><center>
|
||
<h2>Flocks, Herds, and Schools:<br>
|
||
A Distributed Behavioral Model <a href="#foot1"><sup>1</sup></a></h2>
|
||
<p>
|
||
Craig W. Reynolds<br>
|
||
Symbolics Graphics Division
|
||
</p><p></p><p>
|
||
[obsolete addresses removed <a href="#foot2"><sup>2</sup></a>]
|
||
</p></center>
|
||
|
||
<h3>Abstract</h3>
|
||
|
||
<p> The aggregate motion of a flock of birds, a herd of land animals,
|
||
or a school of fish is a beautiful and familiar part of the natural
|
||
world. But this type of complex motion is rarely seen in computer
|
||
animation. This paper explores an approach based on simulation as an
|
||
alternative to scripting the paths of each bird individually. The
|
||
simulated flock is an elaboration of a particle system, with the
|
||
simulated birds being the particles. The aggregate motion of the
|
||
simulated flock is created by a distributed behavioral model much like
|
||
that at work in a natural flock; the birds choose their own
|
||
course. Each simulated bird is implemented as an independent actor
|
||
that navigates according to its local perception of the dynamic
|
||
environment, the laws of simulated physics that rule its motion, and a
|
||
set of behaviors programmed into it by the "animator." The aggregate
|
||
motion of the simulated flock is the result of the dense interaction
|
||
of the relatively simple behaviors of the individual simulated birds.
|
||
|
||
</p><p> <i>Categories and Subject Descriptors:</i> 1.2.10 [Artificial
|
||
Intelligence]: Vision and Scene Understanding; 1.3.5 [Computer
|
||
Graphics]: Computational Geometry and Object Modeling; 1.3.7 [Computer
|
||
Graphics]: Three Dimensional Graphics and Realism-Animation: 1.6.3
|
||
[Simulation and Modeling]: Applications.
|
||
|
||
</p><p> <i>General Terms:</i> Algorithms, design.b
|
||
|
||
</p><p> <i>Additional Key Words, and Phrases:</i> flock, herd, school,
|
||
bird, fish, aggregate motion, particle system, actor, flight,
|
||
behavioral animation, constraints, path planning.
|
||
|
||
</p><h3>Introduction</h3>
|
||
|
||
<p> The motion of a flock of birds is one of nature's delights. Flocks
|
||
and related synchronized group behaviors such as schools of fish or
|
||
herds of land animals are both beautiful to watch and intriguing to
|
||
contemplate. A flock<a href="#foot*"><sup>*</sup></a> exhibits many
|
||
contrasts. It is made up of discrete birds yet overall motion seems
|
||
fluid; it is simple in concept yet is so visually complex, it seems
|
||
randomly arrayed and yet is magnificently synchronized. Perhaps most
|
||
puzzling is the strong impression of intentional, centralized
|
||
control. Yet all evidence indicates that flock motion must be merely
|
||
the aggregate result of the actions of individual animals, each acting
|
||
solely on the basis of its own local perception of the world.
|
||
|
||
</p><p> One area of interest within computer animation is the description and
|
||
control of all types of motion. Computer animators seek both to invent
|
||
wholly new types of abstract motion and to duplicate (or make
|
||
variations on) the motions found in the real world. At first glance,
|
||
producing an animated, computer graphic portrayal of a flock of birds
|
||
presents significant difficulties. Scripting the path of a large
|
||
number of individual objects using traditional computer animation
|
||
techniques would be tedious. Given the complex paths that birds
|
||
follow, it is doubtful this specification could be made without
|
||
error. Even if a reasonable number of suitable paths could be
|
||
described, it is unlikely that the constraints of flock motion could
|
||
be maintained (for example, preventing collisions between all birds at
|
||
each frame). Finally, a flock scripted in this manner would be hard to
|
||
edit (for example, to alter the course of all birds for a portion of
|
||
the animation). It is not impossible to script flock motion, but a
|
||
better approach is needed for efficient, robust, and believable
|
||
animation of flocks and related group motions.
|
||
|
||
</p><p> This paper describes one such approach. This approach assumes a
|
||
flock is simply the result of the interaction between the behaviors of
|
||
individual birds. To simulate a flock we simulate the behavior of an
|
||
individual bird (or at least that portion of the bird's behavior that
|
||
allows it to participate in a flock). To support this behavioral
|
||
"control structure," we must also simulate portions of the bird's
|
||
perceptual mechanisms and aspects of the physics of aerodynamic
|
||
flight. If this simulated bird model has the correct flock-member
|
||
behavior, all that should be required to create a simulated flock is
|
||
to create some instances of the simulated bird model and allow them to
|
||
interact.<a href="#foot**"><sup>**</sup></a>
|
||
|
||
</p><p> Some experiments with this sort of simulated flock are described
|
||
in more detail in the remainder of this paper. The success and
|
||
validity of these simulations is difficult to measure
|
||
objectively. They do seem to agree well with certain criteria [<a href="#ref25">25</a>] and some statistical properties [<a href="#ref23">23</a>] of natural flocks and schools which have been
|
||
reported by the zoological and behavioral sciences. Perhaps more
|
||
significantly, many people who view these animated flocks immediately
|
||
recognize them as a representation of a natural flock, and find them
|
||
similarly delightful to watch.
|
||
|
||
</p><h3>Our Foreflocks</h3>
|
||
|
||
<p> The computer graphics community has seen simulated bird flocks
|
||
before. The Electronic Theater at SIGGRAPH `85 presented a piece
|
||
labeled "motion studies for a work in progress entitled `Eurythmy'"
|
||
[<a href="#ref4">4</a>] by Susan Amkraut, Michael Girard, and George
|
||
Karl from the Computer Graphics Research Group of Ohio State
|
||
University. In the film, a flock of birds flies up out of a minaret
|
||
and, passing between a series of columns, flies down into a lazy
|
||
spiral around a courtyard. All the while the birds slowly flap their
|
||
wings and avoid collision with their flockmates.
|
||
|
||
</p><p> That animation was produced using a technique completely unlike
|
||
the one described in this paper and apparently not specifically
|
||
intended for flock modeling. But the underlying concept is useful and
|
||
interesting in its own right. The following overview is based on
|
||
unpublished communications [<a href="#ref3">3</a>]. The software is
|
||
informally called "the force field animation system." Force fields
|
||
are defined by a 3 x 3 matrix operator that transform from a point in
|
||
space (where an object is located) to an acceleration vector: the
|
||
birds trace paths along the "phase portrait" of the force field.
|
||
There are "rejection forces" around each bird and around static
|
||
objects. The force field associated with each object has a bounding
|
||
box, so object interactions can be culled according to bounding box
|
||
tests. An incremental, linear time algorithm finds bounding box
|
||
intersections. The "animator" defines the space field(s) and sets the
|
||
initial positions, orientations, and velocities of objects. The rest
|
||
of the simulation is automatic.
|
||
|
||
</p><p> Karl Sims of MIT's Media Lab has constructed some behaviorally
|
||
controlled animation of groups of moving objects (spaceships,
|
||
inchworms, and quadrupeds), but they are not organized as flocks [<a href="#ref35">35</a>]. Another author kept suggesting [<a href="#ref28">28</a>, <a href="#ref29">29</a>, <a href="#ref30">30</a>] implementing a flock simulation based on a
|
||
distributed behavioral model.
|
||
|
||
</p><h3>Particle Systems</h3>
|
||
|
||
<p> The simulated flock described here is closely related to particle
|
||
systems [<a href="#ref27">27</a>], which are used to represent dynamic
|
||
"fuzzy objects" having irregular and complex shapes. Particle systems
|
||
have been used to model fire, smoke, clouds, and more recently, the
|
||
spray and foam of ocean waves [<a href="#ref27">27</a>]. Particle
|
||
systems are collections of large numbers of individual particles, each
|
||
having its own behavior. Particles are created, age, and die
|
||
off. During their life they have certain behaviors that can alter the
|
||
particle's own state, which consists of color, opacity, location, and
|
||
velocity.
|
||
|
||
</p><p> Underlying the boid flock model is a slight generalization of
|
||
particle systems. In what might be called a "subobject system,"
|
||
Reeves's dot-like particles are replaced by an entire geometrical
|
||
object consisting of a full local coordinate system and a reference to
|
||
a geometrical shape model. The use of shapes instead of dots is
|
||
visually significant, but the more fundamental difference is that
|
||
individual subobjects have a more complex geometrical state; they now
|
||
have orientation.
|
||
|
||
</p><p> Another difference between boid flocks and particle systems is not
|
||
as well defined. The behavior of boids is generally more complex than
|
||
the behaviors for particles as described in the literature. The
|
||
present boid behavior model might be about one or two orders of
|
||
magnitude more complex than typical particle behavior. However this is
|
||
a difference of degree, not of kind. And neither simulated behavior is
|
||
nearly as complex as that of a real bird.
|
||
|
||
</p><p> Also, as presented, particles in particle Systems do not interact
|
||
with one another, although this is not ruled out by definition. But
|
||
birds and hence boids must interact strongly in order to flock
|
||
correctly. Boid behavior is dependent not only on internal state but
|
||
also on external state.
|
||
|
||
</p><h3>Actors and Distributed Systems</h3>
|
||
|
||
<p> The behavioral model that controls the boid's flight and flocking
|
||
is complicated enough that rather than use an ad hoc approach, it is
|
||
worthwhile to pursue the most appropriate formal computational
|
||
model. The behaviors will be represented as rules or programs in some
|
||
sense, and the internal state of each boid must be held in some sort
|
||
of data structure. It is convenient to encapsulate these behaviors and
|
||
state as an object, in the sense of object-oriented programming
|
||
systems [<a href="#ref10">10</a>, <a href="#ref11">11</a>, <a href="#ref21">21</a>]. Each instance of these objects needs a
|
||
computational process to apply the behavioral programs to the internal
|
||
data. The computational abstraction that combines process, procedure,
|
||
and state is called an actor [<a href="#ref12">12</a>, <a href="#ref26">26</a>, <a href="#ref2">2</a>]. An actor is essentially
|
||
a virtual computer that communicates with other virtual computers by
|
||
passing messages. The actor model has been proposed as a natural
|
||
structure for animation control by several authors [<a href="#ref28">28</a>, <a href="#ref13">13</a>, <a href="#ref29">29</a>, <a href="#ref18">18</a>]. It seems particularly
|
||
apt for situations involving interacting characters and behavior
|
||
simulation. In the literature of parallel and distributed computer
|
||
systems, flocks and schools are given as examples of robust
|
||
self-organizing distributed systems [<a href="#ref15">15</a>].
|
||
|
||
</p><h3>Behavioral Animation</h3>
|
||
|
||
<p> Traditional hand-drawn cel animation was produced with a medium
|
||
that was completely inert. Traditional computer animation uses an
|
||
active medium (computers running graphics software), but most
|
||
animation systems do not make much use of the computer's ability to
|
||
automate motion design. Using different tools, contemporary computer
|
||
animators work at almost the same low level of abstraction as do cel
|
||
animators. They tell their story by directly describing the motion of
|
||
their characters. Shortcuts exist in both media: it is common for
|
||
computer animators and cel animators to use helpers to interpolate
|
||
between specified keyframes. But little progress has been made in
|
||
automating motion description; it is up to the animator to translate
|
||
the nuances of emotion and characterization into the motions that the
|
||
character performs. The animator cannot simply tell the character to
|
||
"act happy" but must tediously specify the motion that conveys
|
||
happiness.
|
||
|
||
</p><p> Typical computer animation models only the shape and physical
|
||
properties of the characters, whereas behavioral or character-based
|
||
animation seeks to model the behavior of the character. The goal is
|
||
for such simulated characters to handle many of the details of their
|
||
actions, and hence their motions. These behaviors include a whole
|
||
range of activities from simple path planning to complex "emotional"
|
||
interactions between characters. The construction of behavioral
|
||
animation characters has attracted many researchers [<a href="#ref19">19</a>, <a href="#ref21">21</a>, <a href="#ref13">13</a>, <a href="#ref14">14</a>, <a href="#ref29">29</a>, <a href="#ref30">30</a>, <a href="#ref41">41</a>, <a href="#ref40">40</a>], but it is still a
|
||
young field in which more work is needed.
|
||
|
||
</p><p> Because of the detached nature of the control, the person who
|
||
creates animation with character simulation might not strictly he an
|
||
animator. Traditionally, the animator is directly responsible for all
|
||
motion in animation production [<a href="#ref40">40</a>]. It might he
|
||
more proper to call the person who directs animation via simulated
|
||
characters a meta-animator, since the animator is less a designer of
|
||
motion and more a designer of behavior. These behaviors, when acted
|
||
out by the simulated characters, lead indirectly to the final
|
||
action. Thus the animator's job becomes somewhat like that of a
|
||
theatrical director: the character's performance is the indirect
|
||
result of the director's instructions to the actor. One of the
|
||
charming aspects of the work reported here is not knowing how a
|
||
simulation is going to proceed from the specified behaviors and
|
||
initial conditions; there are many unexpected, pleasant surprises. On
|
||
the other hand, this charm starts to wear thin as deadlines approach
|
||
and the unexpected annoyances pop up. This author has spent a lot of
|
||
time recently trying to get uncooperative flocks to move as intended
|
||
("these darn boids seem to have a mind of their own!").
|
||
|
||
</p><h3>Geometric Flight</h3>
|
||
|
||
<p> A fundamental part of the boid model is the geometric ability to
|
||
fly. The motion of the members of a simulated school or herd can be
|
||
considered a type of "flying" by glossing over the considerable
|
||
intricacies of wing, fin, and leg motion (and in the case of herds, by
|
||
restricting freedom of motion in the third dimension). In this paper
|
||
the term geometric flight refers to a certain type of motion along a
|
||
path: a dynamic, incremental, rigid geometrical transformation of an
|
||
object, moving along and tangent to a 3D curve. While the motion is
|
||
rigid, the object's underlying geometric model is free to articulate
|
||
or change shape within this "flying coordinate system." Unlike more
|
||
typical animated motion along predefined spline curves, the shape of a
|
||
flight path is not specified in advance.
|
||
|
||
</p><p> Geometric flight is based on incremental translations along the
|
||
object's "forward direction," its local positive Z axis. These
|
||
translations are intermixed with steering-rotations about the local X
|
||
and Y axes (pitch and yaw), which realign the global orientation of
|
||
the local Z axis. In real flight, turning and moving happen
|
||
continuously and simultaneously. Incremental geometric flight is a
|
||
discrete approximation of this; small linear motions model a
|
||
continuous curved path. In animation the motion must increment at
|
||
least once per frame. Running the simulation at a higher rate can
|
||
reduce the discrete sampling error of the flight model and refine the
|
||
shape of motion blur patterns.
|
||
|
||
</p><p> Flight modeling makes extensive use of the object's own coordinate
|
||
system. Local space represents the "boid's eye view;" it implies
|
||
measuring things relative to the boid's own position and
|
||
orientation. In Cartesian terms, the left/right axis is X, up/down is
|
||
Y, and forward/pack is Z. The conversion of geometric data between the
|
||
local and global reference frames is handled by the geometric
|
||
operators localize and globalize. It is convenient to use a local
|
||
scale so that the unit of length of the coordinate system is one body
|
||
length. Biologists routinely specify' flock and school statistics in
|
||
terms of body lengths.
|
||
|
||
</p><p> Geometric flight models conservation of momentum. An object in
|
||
flight tends to stay in flight. There is a simple model of viscous
|
||
speed damping, so even if the boid continually accelerates in one
|
||
direction, it will not exceed a certain maximum speed. A minimum speed
|
||
can also be specified but defaults to zero. A maximum acceleration,
|
||
expressed as a fraction of the maximum speed, is used to truncate
|
||
over-anxious requests for acceleration, hence providing for smooth
|
||
changes of speed and heading. This is a simple model of a creature
|
||
with a finite amount of available energy.
|
||
|
||
</p><p> Many physical forces are not supported in the current boid
|
||
model. Gravity is modeled but used only to define banking behavior. It
|
||
is defined procedurally to allow the construction of arbitrarily
|
||
shaped fields. If each boid was accelerated by gravity each frame, it
|
||
would tend to fall unless gravity was countered by lift or
|
||
buoyancy. Buoyancy is aligned against gravity, but aerodynamic lift is
|
||
aligned with the boid's local "up" direction and related to velocity.
|
||
This level of modeling leads to effects like normally level flight,
|
||
going faster when flying down (or slower up), and the "stall"
|
||
maneuver. The speed limit parameter could be more realistically
|
||
modeled as a frictional drag, a backward pointing force related to
|
||
velocity. In the current model steering is done by directing the
|
||
available thrust in the appropriate direction. It would be more
|
||
realistic to separately model the tangential thrusting forces and the
|
||
lateral steering forces, since they normally have different
|
||
magnitudes.
|
||
|
||
</p><h3>Banking</h3>
|
||
|
||
<p> Geometric flight relates translation, pitch, and yaw, but does not
|
||
constrain roil, the rotation about the local Z axis. This degree of
|
||
freedom is used for banking-rolling the object to align the local Y
|
||
axis with the (local XY component of the total) acceleration acting
|
||
upon it. Normally banking is based on the lateral component of the
|
||
acceleration, but the tangential component can be used for certain
|
||
applications. The lateral components are from steering and gravity.
|
||
In straight flight there is no radial force, so the gravitational term
|
||
dominates and banking aligns the object's -Y axis with "gravitational
|
||
down" direction. When turning, the radial component grows larger and
|
||
the "accelerational down" direction swings outward, like a pendulum
|
||
hanging from the flying object. The magnitude of the turning
|
||
acceleration varies directly with the object's velocity and with the
|
||
curvature of its path (so inversely with the radius of its turn). The
|
||
limiting case of infinite velocity resembles banking behavior in the
|
||
absence of gravity. In these cases the local + Y (up) direction points
|
||
directly at the center of curvature defined by the current turn.
|
||
|
||
</p><p>
|
||
</p><center>
|
||
<a href="http://www.cs.toronto.edu/~dt/siggraph97-course/cwr87/cwr87f1.gif"><img src="Craig%20Reynolds%20Flocks,%20Herds,%20and%20Schools%20A%20Distributed%20Behavioral%20Model_files/cwr87f1.gif" width="60%"></a><p>
|
||
Figure 1.
|
||
</p></center>
|
||
|
||
<p> With correct banking (what pilots call a coordinated turn) the
|
||
object's local space remains aligned with the "perceptual" or
|
||
"accelerational" coordinate system. This has several advantages: it
|
||
simplifies the bird's (or pilot's) orientation task, it keeps the lift
|
||
from the airfoils of the wings pointed in the most efficient direction
|
||
("accelerational up"), it keeps the passengers coffee in their cups,
|
||
and most importantly for animation, it makes the flying boid fit the
|
||
viewer's expectation of how flying objects should move and orient
|
||
themselves. On the other hand, realism is not always the goal in
|
||
animation. By simply reversing the angle of bank we obtain a cartoony
|
||
motion that looks like the object is being flung outward by the
|
||
centrifugal force of the turn.
|
||
|
||
</p><h3>Boids and Turtles</h3>
|
||
|
||
<p> The incremental mixing of forward translations and local rotations
|
||
that underlies geometric flight is the basis of "turtle graphics" in
|
||
the programming language Logo [<a href="#ref5">5</a>]. Logo was first
|
||
used as an educational tool to allow children to learn experimentally
|
||
about geometry, arithmetic, and programming [<a href="#ref22">22</a>]. The Logo turtle was originally a little
|
||
mechanical robot that crawled around on large sheets of paper laid on
|
||
the classroom floor, drawing graphic figures by dragging a felt tip
|
||
marker along the paper as it moved, Abstract turtle geometry is a
|
||
system based on the frame of reference of the turtle, an object that
|
||
unites position and heading. Under program control the Logo turtle
|
||
could move forward or back from its current position, turn left or
|
||
right from its current heading, or put the pen up or down on the
|
||
paper. The turtle geometry has been extended from the plane onto
|
||
arbitrary manifolds and into 3D space [<a href="#ref1">1</a>]. These
|
||
"3d turtles" and their paths are exactly equivalent to the boid
|
||
objects and their flight paths.
|
||
|
||
</p><h3>Natural Flocks, Herds, and Schools</h3>
|
||
|
||
<pre>"...and the thousands off fishes moved as a huge beast, piercing
|
||
the water. They appeared united, inexorably bound to a common
|
||
fate. How comes this unity?"
|
||
--Anonymous, 17th century (from Shaw)
|
||
</pre>
|
||
|
||
<p> For a bird to participate in a flock, it must have behaviors that
|
||
allow it to coordinate its movements with those of its
|
||
flockmates. These behaviors are not particularly unique; all creatures
|
||
have them to some degree. Natural flocks seem to consist of two
|
||
balanced, opposing behaviors: a desire to stay close to the flock and
|
||
a desire to avoid collisions within the flock [<a href="#ref34">34</a>]. It is clear why an individual bird wants to
|
||
avoid collisions with its flockmates. But why do birds seem to seek
|
||
out the airborne equivalent of a nasty traffic jam? The basic urge to
|
||
join a flock seems to be the result of evolutionary pressure from
|
||
several factors: protection from predators, statistically improving
|
||
survival of the (shared) gene pool from attacks from predators,
|
||
profiting from a larger effective search pattern in the quest for
|
||
food, and advantages for social and mating activities [<a href="#ref33">33</a>].
|
||
|
||
</p><p> There is no evidence that the complexity of natural flocks is
|
||
bounded in any way. Flocks do not become "full" or "overloaded" as new
|
||
birds join. When herring migrate toward their spawning grounds, they
|
||
run in schools extending as long as 17 miles and containing millions
|
||
of fish [<a href="#ref32">32</a>]. Natural flocks seem to operate in
|
||
exactly the same fashion over a huge range of flock populations. It
|
||
does not seem that an individual bird can be paying much attention to
|
||
each and every one of its flockmates. But in a huge flock spread over
|
||
vast distances, an individual bird must have a localized and filtered
|
||
perception of the rest of the flock. A bird might be aware of three
|
||
categories: itself, its two or three nearest neighbors, and the rest
|
||
of the flock [<a href="#ref23">23</a>].
|
||
|
||
</p><p> These speculations about the "computational complexity" of
|
||
flocking are meant to suggest that birds can flock with any number of
|
||
flockmates because they are using what would be called in formal
|
||
computer science a constant time algorithm. That is, the amount of
|
||
"thinking" that a bird has to do in order to flock must be largely
|
||
independent of the number of birds in the flock. Otherwise we would
|
||
expect to see a sharp upper bound on the size of natural flocks when
|
||
the individual birds became overloaded by the complexity of their
|
||
navigation task. This has not be observed in nature.
|
||
|
||
</p><p> Contrast the insensitivity to complexity of real flocks with the
|
||
situation for the simulated flocks described below. The complexity of
|
||
the flocking algorithm described is basically O(N 2 ). That is, the
|
||
work required to run the algorithm grows as the square of the flock's
|
||
population. We definitely do see an upper bound on the size of
|
||
simulated flocks implemented as described here. Some techniques to
|
||
address this performance issue are discussed in the section
|
||
Algorithmic Considerations.
|
||
|
||
</p><h3>Simulated Flocks</h3>
|
||
|
||
<p> To build a simulated flock, we start with a boid model that
|
||
supports geometric flight. We add behaviors that correspond to the
|
||
opposing forces of collision avoidance and the urge to join the
|
||
flock. Stated briefly as rules, and in order of decreasing precedence,
|
||
the behaviors that lead to simulated flocking are:
|
||
|
||
</p><ol>
|
||
<li> Collision Avoidance: avoid collisions with nearby flockmates <p>
|
||
</p></li><li> Velocity Matching: attempt to match velocity with nearby flockmates <p>
|
||
</p></li><li> Flock Centering: attempt to stay close to nearby flockmates <p>
|
||
</p></li></ol>
|
||
|
||
<p> Velocity is a vector quantity, referring to the combination of
|
||
heading and speed. The manner in which the results from each of these
|
||
behaviors is reconciled and combined is significant and is discussed
|
||
in more detail later. Similarly, the meaning nearby in these rules is
|
||
key to the flocking process. This is also discussed in more detail
|
||
later, but generally one boid's awareness of another is based on the
|
||
distance and direction of the offset vector between them.
|
||
|
||
</p><p> Static collision avoidance and dynamic velocity matching are
|
||
complementary. Together they ensure that the members of a simulated
|
||
flock are free to fly within the crowded skies of the flock's interior
|
||
without running into one another. Collision avoidance is the urge to
|
||
steer a way from an imminent impact. Static collision avoidance is
|
||
based on the relative position of the flockmates and ignores their
|
||
velocity. Conversely, velocity matching is based only on velocity and
|
||
ignores position. It is a predictive version of collision avoidance:
|
||
if the boid does a good job of matching velocity with its neighbors,
|
||
it is unlikely that it will collide with any of them any time
|
||
soon. With velocity matching, separations between boids remains
|
||
approximately invariant with respect to ongoing geometric
|
||
flight. Static collision avoidance serves to establish the minimum
|
||
required separation distance; velocity matching tends to maintain it.
|
||
|
||
</p><p> Flock centering makes a boid want to be near the center of the
|
||
flock. Because each boid has a localized perception of the
|
||
world. "center of the flock" actually means the center of the nearby
|
||
flockmates. Flock centering causes the boid to fly in a direction that
|
||
moves it closer to the centroid of the nearby boids. if a boid is deep
|
||
inside a flock, the population density in its neighborhood is roughly
|
||
homogeneous; the boid density is approximately the same in all
|
||
directions. In this case, the centroid of the neighborhood boids is
|
||
approximately at the center of the neighborhood, so the flock
|
||
centering urge is small. But if a boid is on the boundary of the
|
||
flock, its neighboring boids are on one side. The centroid of the
|
||
neighborhood boids is displaced from the center of the neighborhood
|
||
toward the body of the flock. Here the flock centering urge is
|
||
stronger and the flight path will be deflected somewhat toward the
|
||
local flock center.
|
||
|
||
</p><p> Real flocks sometimes split apart to go around an obstacle. To be
|
||
realistic, the simulated flock model must also have this
|
||
ability. Flock centering correctly allows simulated flocks to
|
||
bifurcate. As long as an individual boid can stay close to its nearby
|
||
neighbors, it does not care if the rest of the flock turns away. More
|
||
simplistic models proposed for flock organization (such as a central
|
||
force model or a follow the designated leader model) do not allow
|
||
splits.
|
||
|
||
</p><p> The flock model presented here is actually a better model of a
|
||
school or a herd than a flock. Fish in murky water (and land animals
|
||
with their inability to see past their herdmates) have a limited,
|
||
short-range perception of their environment. Birds, especially those
|
||
on the outside of a flock, have excellent long-range "visual
|
||
perception." Presumably this allows widely separated flocks to join
|
||
together. If the flock centering urge was completely localized, when
|
||
two flocks got a certain distance apart they would ignore each
|
||
other. Long-range vision seems to play a part in the incredibly rapid
|
||
propagation of a maneuver wave" through a flock of birds. It has been
|
||
shown that the speed of propagation of this wavefront reaches three
|
||
times the speed implied by the measured startle reaction time of the
|
||
individual birds. The explanation advanced by Wayne Potts is that the
|
||
birds perceive the motion of the oncoming "maneuver wave" and time
|
||
their own turn to match it [<a href="#ref25">25</a>]. Potts refers to
|
||
this as the "chorus line" hypothesis.
|
||
|
||
</p><h3>Arbitrating Independent Behaviors</h3>
|
||
|
||
<p> The three behavioral urges associated with flocking (and others to
|
||
be discussed below) each produce an isolated suggestion about which
|
||
way to steer the boid. These are expressed as acceleration
|
||
requests. Each behavior says: "if I were in charge, I would accelerate
|
||
in that direction." The acceleration request is in terms of a 3D
|
||
vector that, by system convention, is truncated to unit magnitude or
|
||
less. Each behavior has several parameters that control its function;
|
||
one is a "strength," a fractional value between zero and one that can
|
||
further attenuate the acceleration request. It is up to the navigation
|
||
module of the boid brain to collect all relevant acceleration requests
|
||
and then determine a single behaviorally desired acceleration. It must
|
||
combine, prioritize, and arbitrate between potentially conflicting
|
||
urges. The pilot module takes the acceleration desired by the
|
||
navigation module and passes it to the flight module, which attempts
|
||
to fly in that direction.
|
||
|
||
</p><p> The easiest way to combine acceleration requests is to average
|
||
them. Because of the included "strength" factors, this is actually a
|
||
weighted average. The relative strength of one behavior to another can
|
||
be defined this way, but it is a precarious interrelationship that is
|
||
difficult to adjust. An early version of the boid model showed that
|
||
navigation by simple weighted averaging of acceleration requests works
|
||
"pretty well." A boid that chooses its course this way will fly a
|
||
reasonable course under typical conditions. But in critical
|
||
situations, such as potential collision with obstacles, conflicts must
|
||
be resolved in a timely manner. During high-speed flight, hesitation
|
||
or indecision is the wrong response to a brick wall dead ahead.
|
||
|
||
</p><p> The main cause of indecision is that each behavior might be
|
||
shouting advice about which way to turn to avoid disaster, but if
|
||
those acceleration requests happen to lie in approximately opposite
|
||
directions, they will largely cancel out under a simple weighted
|
||
averaging scheme. The boid would make a very small turn and so
|
||
continue in the same direction, perhaps to crash into the
|
||
obstacle. Even when the urges do not cancel out, averaging leads to
|
||
other problems. Consider flying over a gridwork of city streets
|
||
between the skyscrapers; while "fly north" or "fly east" might be good
|
||
ideas, it would be a bad idea to combine them as "fly northeast."
|
||
|
||
</p><p> Techniques from artificial intelligence, such as expert systems,
|
||
can be used to arbitrate conflicting opinions. However, a less
|
||
complex approach is taken in the current implementation. Prioritized
|
||
acceleration allocation is based on a strict priority ordering of all
|
||
component behaviors, hence of the consideration of their acceleration
|
||
requests. (This ordering can change to suit dynamic conditions.) The
|
||
acceleration requests are considered in priority order and added into
|
||
an accumulator. The magnitude of each request is measured and added
|
||
into another accumulator. This process continues until the sum of the
|
||
accumulated magnitudes gets larger than the maximum acceleration
|
||
value, which is a parameter of each boid. The last acceleration
|
||
request is trimmed back to compensate for the excess of accumulated
|
||
magnitude. The point is that a fixed amount of acceleration is under
|
||
the control of the navigation module; this acceleration is parceled
|
||
out to satisfy the acceleration request of the various behaviors in
|
||
order of priority. In an emergency the acceleration would be allocated
|
||
to satisfy the most pressing needs first; if all available
|
||
acceleration is "used up," the less pressing behaviors might be
|
||
temporarily unsatisfied. For example. the flock centering urge could
|
||
be correctly ignored temporarily in favor of a maneuver to avoid a
|
||
static obstacle.
|
||
|
||
</p><h3>Simulated Perception</h3>
|
||
|
||
<p> The boid model does not directly simulate the senses used by real
|
||
animals during flocking (vision and hearing) or schooling (vision and
|
||
fishes' unique "lateral line" structure that provides a certain amount
|
||
of pressure imaging ability [<a href="#ref23">23</a>, <a href="#ref24">24</a>]). Rather the perception model tries to make
|
||
available to the behavior model approximately the same information
|
||
that is available to a real animal as the end result of its perceptual
|
||
and cognitive processes.
|
||
|
||
</p><p> This is primarily a matter of filtering out the surplus
|
||
information that is available to the software that implements the
|
||
boid's behavior. Simulated boids have direct access to the geometric
|
||
database that describes the exact position, orientation, and velocity
|
||
of all objects in the environment. The real bird's information about
|
||
the world is severely limited because it perceives through imperfect
|
||
senses and because its nearby flockmates hide those farther away. This
|
||
is even more pronounced in herding animals because they are all
|
||
constrained to be in the same plane. In fish schools. visual
|
||
perception of neighboring fish is further limited by the scattering
|
||
and absorption of light by the sometimes murky water between them
|
||
These factors combine to strongly localize the information available
|
||
to each animal.
|
||
|
||
</p><p> Not only is it unrealistic to give each simulated boid perfect and
|
||
complete information about the world, it is just plain wrong and leads
|
||
to obvious failures of the behavior model. Before the current
|
||
implementation of localized flock centering behavior was
|
||
implemented. the flocks used a central force model. This leads to
|
||
unusual effects such as causing all members of a widely scattered
|
||
flock to simultaneously converge toward the flock's centroid. An
|
||
interesting result of the experiments reported in this paper is that
|
||
the aggregate motion that we intuitively recognize as "flocking" (or
|
||
schooling or herding) depends upon a limited, localized view of the
|
||
world.
|
||
|
||
</p><p> The behaviors that make up the flocking model are stated in terms
|
||
of "nearby flockmates." In the current implementation, the
|
||
neighborhood is defined as a spherical zone of sensitivity centered at
|
||
the boid's local origin. The magnitude of the sensitivity is defined
|
||
as an inverse exponential of distance. Hence the neighborhood is
|
||
defined by two parameters: a radius and exponent. There is reason to
|
||
believe that this field of sensitivity should realistically be
|
||
exaggerated in the forward direction and probably by an amount
|
||
proportional to the boid's speed. Being in motion requires an
|
||
increased awareness of what lies ahead, and this requirement increases
|
||
with speed. A forward-weighted sensitivity zone would probably also
|
||
improve the behavior in the current implementation of boids at the
|
||
leading edge of a flock, who tend to get distracted by the flock
|
||
behind them. Because of the way their heads and eyes are arranged,
|
||
real birds have a wide field of view (about 300 degrees), but the zone
|
||
of overlap from both eyes is small (10 to 15 degrees). Hence the bird
|
||
has stereo depth perception only in a very small, forward-oriented
|
||
cone. Research is currently under way on models of forward-weighted
|
||
perception for boids.
|
||
|
||
</p><p> In an early version of the flock model, the metrics of attraction
|
||
and repulsion were weighted linearly by distance. This spring-like
|
||
model produced a bouncy flock action, fine perhaps for a cartoony
|
||
characterization, but not very realistic. The model was changed to use
|
||
an inverse square of the distance. This more gravity-like model
|
||
produced what appeared to be a more natural, better damped flock
|
||
model. This correlated well with the carefully controlled quantitative
|
||
studies that Brian Partridge made of the spatial relationships of
|
||
schooling fish [<a href="#ref23">23</a>]; he found that "a fish is
|
||
much more strongly influenced by its near neighbors than it is by the
|
||
distant members of the school. The contribution of each fish to the
|
||
[influence] is inversely proportional to the square or the cube of the
|
||
distance." In previous work he and colleagues [<a href="#ref23">23</a>, <a href="#ref24">24</a>] demonstrated that
|
||
fishes school based on information from both their visual system and
|
||
from their "lateral line" organ which senses pressure waves. The area
|
||
of a perspective image of the silhouette of an object (its "visual
|
||
angle") varies inversely with the square of its distance, and that
|
||
pressure waves traveling through a 3D medium like water fall off
|
||
inversely with the cube of the distance.
|
||
|
||
</p><p> The boid perception model is quite ad hoc and avoids actually
|
||
simulating vision. Artificial vision is an extremely complex problem
|
||
[<a href="#ref38">38</a>] and is far beyond the scope of this
|
||
work. But if boids could "see" their environment, they would be better
|
||
at path planning than the current model. It is possible to construct
|
||
simple maze like shapes that would confuse the current boid model but
|
||
would be easily solved by a boid with vision.
|
||
|
||
</p><h3>Impromptu Flocking</h3>
|
||
|
||
<p> The flocking model described above gives boids an eagerness to
|
||
participate in an acceptable approximation of flock like motion. Boids
|
||
released near one another begin to flock together, cavorting and
|
||
jostling for position. The boids stay near one another (flock
|
||
centering) but always maintain prudent separation from their
|
||
neighbors' (collision avoidance), and the flock quickly becomes
|
||
"polarized"-its members heading in approximately the same direction at
|
||
approximately the same speed (velocity marching); when they change
|
||
direction they do it in synchronization. Solitary boids and smaller
|
||
flocks join to become larger flocks, and in the presence of external
|
||
obstacles (discussed below), larger flocks can split into smaller
|
||
flocks.
|
||
|
||
</p><p> For each simulation run, the initial position (within a specified
|
||
ellipsoid), heading, velocity, and various other parameters of the
|
||
boid model are initialized to values randomized within specified
|
||
distributions. A restartable random number generator is used to allow
|
||
repeatability. This randomization is not required; the boids could
|
||
just as well start out arranged in a regular pattern, all other
|
||
aspects of the flock model are completely deterministic and
|
||
repeatable.
|
||
|
||
</p><p> When the simulation is run, the flock's first action is a reaction
|
||
to the initial conditions. If the boids started out too closely
|
||
crowded together, there is an initial "flash expansion" where the
|
||
mutual desire to avoid collision drives the boids radially away from
|
||
the site of the initial over-pressure. If released in a spherical
|
||
shell with a radius smaller than the "neighborhood" radius, the boids
|
||
contract toward the sphere's center; otherwise they begin to coalesce
|
||
into small flockettes that might themselves begin to join together. If
|
||
the boids are confined within a certain region, the smaller flocks
|
||
eventually conglomerate into a single flock if left to wander long
|
||
enough.
|
||
|
||
</p><h3>Scripted Flocking</h3>
|
||
|
||
<p> The behaviors discussed so far provide for the ability of
|
||
individual birds to fly and participate in happy aimless flocking. But
|
||
to combine flock simulations with other animated action, we need more
|
||
direct control over the flock. We would like to direct specific
|
||
action at specific times (for example, "the flock enters from the left
|
||
at :02.3 seconds into the sequence, turns to fly directly upward at
|
||
:03.5, and is out of the frame at :04.0").
|
||
|
||
</p><p> The current implementation of the boid model has several
|
||
facilities to direct the motion and timing of the flock action. First,
|
||
the simulations are run under the control of a general-purpose
|
||
animation scripting system [<a href="#ref36">36</a>]. The details of
|
||
that scripting system are not relevant here except that, in addition
|
||
to the typical interactive motion control facilities, it provides the
|
||
ability to schedule the invocation of user-supplied software (such as
|
||
the flock model) on a frame-by-frame basis. This scripting facility is
|
||
the basic tool used to describe the timing of various flock
|
||
actions. It also allows flexible control over the time-varying values
|
||
of parameters, which can be passed down to the simulation
|
||
software. Finally the script is used to set up and animate all
|
||
nonbehavioral aspects of the scene, such as backgrounds, lighting,
|
||
camera motion, and other visible objects.
|
||
|
||
</p><p> The primary tool for scripting the flock's path is the migratory
|
||
urge built into the boid model. In the current model this urge is
|
||
specified in terms of a global target, either as a global direction
|
||
(as in "going Z for the winter") or as a global position-a target
|
||
point toward which all birds fly. The model computes a bounded
|
||
acceleration that incrementally turns the boid toward its migratory
|
||
target.
|
||
|
||
</p><p> With the scripting system. we can animate a dynamic parameter
|
||
whose value is. a global position vector or a global direction
|
||
vector. This parameter can be passed to the flock, which can in turn
|
||
pass it along to all boids, each of which sets its own "migratory goal
|
||
register." Hence the global migratory behavior of all birds can be
|
||
directly controlled from the script. (Of course, it is not necessary
|
||
to alter all boids at the same time, for example, the delay could be a
|
||
function of their present position in space. Real flocks do not change
|
||
direction simultaneously [<a href="#ref25">25</a>], but rather the
|
||
turn starts with a single bird and spreads quickly across the flock
|
||
like a shock wave.)
|
||
|
||
</p><p> We can lead the flock around by animating the goal point along the
|
||
desired path, somewhat ahead of the flock. Even if the migratory goal
|
||
point is changed abruptly the path of each boid still is relatively
|
||
smooth because of the flight model's simulated conservation of
|
||
momentum. This means that the boid's own flight dynamics implement a
|
||
form of smoothing interpolation between "control points."
|
||
|
||
</p><p>
|
||
</p><center>
|
||
<a href="http://www.cs.toronto.edu/~dt/siggraph97-course/cwr87/cwr87p1.gif"><img src="Craig%20Reynolds%20Flocks,%20Herds,%20and%20Schools%20A%20Distributed%20Behavioral%20Model_files/cwr87p1.gif" width="90%"></a><p>
|
||
</p></center>
|
||
|
||
<h3>Avoiding Environmental Obstacles</h3>
|
||
|
||
<p> The most interesting motion of a simulated flock comes from
|
||
interaction with other objects in the environment. The isolated
|
||
behavior of a flock tends to reach a steady state and becomes rather
|
||
sterile. The flock can be seen as a relaxation solution to the
|
||
constraints implied by its behaviors. For example, the conflicting
|
||
urges of flock centering and collision avoidance do not lead to
|
||
constant back and forth motion, but rather the boids eventually strike
|
||
a balance between the two urges (the degree of damping controls how
|
||
soon this balance is reached). Environmental obstacles and the boid's
|
||
attempts to navigate around them increase the apparent complexity of
|
||
the behavior of the flock. (In fact the complexity of real flocks
|
||
might be due largely to the complexity of the natural environment.)
|
||
|
||
</p><p> Environmental obstacles are also important from the standpoint of
|
||
modeling the scene in which we wish to place the flock. If the flock
|
||
is scripted to fly under a bridge and around a tree, we must be able
|
||
to represent the geometric shape and dimension of these obstacles. The
|
||
approach taken here is to independently model the "shape for
|
||
rendering" and the "shape for collision avoidance." The types of
|
||
shapes currently used for environmental obstacles are much less
|
||
complicated than the models used for rendering of computer graphic
|
||
models. The current work implements two types of shapes of
|
||
environmental collision avoidance. One is based on the force field
|
||
concept, which works in undemanding situations but has some
|
||
shortcomings. The other model called steer-to-avoid is more robust and
|
||
seems closer in spirit to the natural mechanism.
|
||
|
||
</p><p> The force field model postulates a field of repulsion force
|
||
emanating from the obstacle out into space; the boids are increasingly
|
||
repulsed as they get closer to the obstacle. This scheme is easy to
|
||
model; the geometry of the field is usually fairly simple and so an
|
||
avoidance acceleration can be directly calculated from the field
|
||
equation. These models can produce good results, such as in "Eurythmy"
|
||
[<a href="#ref4">4</a>], but they also have drawbacks that are
|
||
apparent on close examination. If a boid approaches an obstacle
|
||
surrounded by a force field at an angle such that it is exactly
|
||
opposite to the direction of the force field, the boid will not turn
|
||
away. In this case the force field serves only to slow the boid by
|
||
accelerating it backwards and provides no side thrust at all. The
|
||
worst reaction to an impending collision is to fail to turn. Force
|
||
fields also cause problems with "peripheral vision." The boid should
|
||
notice and turn away from a wall as it flies toward it, but the wall
|
||
should be ignored if the boid is flying alongside it. Finally, force
|
||
fields tend to be too strong close up and too weak far away; avoiding
|
||
an obstacle should involve long-range planning rather than panicky
|
||
corrections at the last minute.
|
||
|
||
</p><p> Steer-to-avoid is a better simulation of a natural bird guided by
|
||
vision. The boid considers only obstacles directly in front of it. (It
|
||
finds the intersection, if any, of its local Z axis with the
|
||
obstacle.) Working in local perspective space, it finds the silhouette
|
||
edge of the obstacle closest to the point of eventual impact. A radial
|
||
vector is computed which will aim the boid at a point one body length
|
||
beyond that silhouette edge (see figure 2). Currently steer-to avoid
|
||
has been implemented for several obstacle shapes: spheres, cylinders,
|
||
planes, and boxes. Collision avoidance for arbitrary convex polyhedral
|
||
obstacles is being developed.
|
||
|
||
</p><p>
|
||
</p><center>
|
||
<a href="http://www.cs.toronto.edu/~dt/siggraph97-course/cwr87/cwr87f2.gif"><img src="Craig%20Reynolds%20Flocks,%20Herds,%20and%20Schools%20A%20Distributed%20Behavioral%20Model_files/cwr87f2.gif" width="60%"></a><p>
|
||
Figure 2.
|
||
</p></center>
|
||
|
||
<p> Obstacles are not necessarily fixed in space; they can be animated
|
||
around by the script during the animation. Or more interestingly, the
|
||
obstacles can be behavioral characters. Sparrows might flock around a
|
||
group of obstacles that is in fact a herd of elephants. Similarly,
|
||
behavioral obstacles might not merely be in the way; they might be
|
||
objects of fear such as predators. It has been noted [<a href="#ref25">25</a>] that natural flocking instincts seem to be
|
||
sharpened by predators.
|
||
|
||
</p><h3>Other Applications of the Flock Model</h3>
|
||
|
||
<p> The model of polarized noncolliding aggregate motion has many
|
||
applications, visual simulation of bird flocks in computer animation
|
||
being one. Certain modifications yield a fish school model. Further
|
||
modifications, such as [imitation to a 2D surface and the ability to
|
||
follow the terrain, lead to a herd model. Imagine a herd of PODA-style
|
||
legged creatures [<a href="#ref9">9</a>], using Karl Sims' techniques
|
||
for locomotion over uneven, complex terrain [<a href="#ref35">35</a>]. Other applications are less obvious. Traffic
|
||
patterns, such as the flow of cars on a freeway, is a flock-like
|
||
motion. There are specialized behaviors, such as being constrained to
|
||
drive within the lanes, but the basic principles that keep boids from
|
||
colliding are just as applicable on the freeway. We could imagine
|
||
creating crowds of "extras" (human or otherwise) for feature
|
||
films. However the most fun are the offbeat combinations possible in
|
||
computer graphics by mixing and matching: a herd of pogo sticks, a
|
||
flock of Pegasus-like winged horses, or a traffic jam of spaceships on
|
||
a 3D interplanetary highway.
|
||
|
||
</p><p> One serious application would be to aid in the scientific
|
||
investigation of flocks, herds, and schools. These scientists must
|
||
work almost exclusively in the observational mode; experiments with
|
||
natural flocks and schools are difficult to perform and are likely to
|
||
disturb the behaviors under study. It might be possible, using a more
|
||
carefully crafted model of the realistic behavior of a certain species
|
||
of bird, to perform controlled and repeatable experiments with
|
||
"simulated natural flocks." A theory of flock organization can be
|
||
unambiguously tested by implementing a distributed behavioral model
|
||
and simply comparing the aggregate motion of the simulated flock with
|
||
the natural one.
|
||
|
||
</p><h3>Algorithmic Considerations</h3>
|
||
|
||
<p> A naive implementation of the basic flocking algorithm would grow
|
||
in complexity as the order of the square of the flock's population
|
||
("O(N<sup>2</sup>)"). Basically this is because each boid must reason about
|
||
each of the other boids, even if only to decide to ignore it. This
|
||
does not say the algorithm is slow or fast, merely that as the size of
|
||
the problem (total population of the flock) increases, the complexity
|
||
increases even faster. Doubling the number of boids quadruples the
|
||
amount of time taken.
|
||
|
||
</p><p> However, as stated before, real birds are probably not as
|
||
sensitive to the total flock population. This gives hope that the
|
||
simulated boid could be taught to navigate independently of the total
|
||
population. Certainly part of the problem is that we are trying to run
|
||
the simulation of the whole flock on a single computer. The natural
|
||
solution is to use distributed processing, as the real flock does. If
|
||
we used a separate processor for each boid, then even the naive
|
||
implementation of the flocking algorithm would be O(N), or linear with
|
||
respect to the population. But even that is not good enough. It still
|
||
means that as more boids are added to the flock, the complexity of the
|
||
problem increases.
|
||
|
||
</p><p> What we desire is a constant time algorithm, one that is
|
||
insensitive to the total population. Another way to say this is that
|
||
an N<sup>2</sup> algorithm would be OK if there was an efficient way
|
||
to keep N very small. Two approaches to this goal are currently under
|
||
investigation. One is dynamic spatial partitioning of the flock; the
|
||
boids are sorted into a lattice of "bins" based on their position in
|
||
space. A boid trying to navigate inside the flock could get quick
|
||
access to the flockmates that are physically nearby by examining the
|
||
"bins" near its current position. Another approach is to do
|
||
incremental collision detection (x`nearness testing"). General
|
||
collision detection is another N<sup>2</sup> algorithm, but if one
|
||
does collision detection incrementally, based on a partial solution
|
||
that described the situation just a moment before, then the algorithm
|
||
need worry only about the changes and so can run much faster, assuming
|
||
that the incremental changes are small. The incremental collision
|
||
detection algorithm used in Girard's PODA system [<a href="#ref9">9</a>] apparently achieves constant time performance in
|
||
the typical case.
|
||
|
||
</p><h3>Computing Environment</h3>
|
||
|
||
<p> The boids software was written in Symbolics Common Lisp. The code
|
||
and animation were produced on a Symbolics 3600 Lisp Machine, a
|
||
high-performance personal computer. The flock software is implemented
|
||
in Flavors, the object-oriented programming extensions to Symbolics
|
||
Common Lisp. The geometric aspects of the system are layered upon
|
||
S-Geometry, an interactive geometric modeler [<a href="#ref37">37</a>]. Boids are based on the flavor 3D:OBJECT, which
|
||
provides their geometric abilities. The flock simulations are invoked
|
||
from scripts created and animated with the S Dynamics [<a href="#ref36">36</a>] animation system, which also provided the
|
||
real-time playback facility used to view the motion tests. The
|
||
availability of this graphical toolkit allowed the author to focus
|
||
immediately on the issues unique to this project. One example of the
|
||
value of this substrate is that the initial version of the flock
|
||
model, including implementation, testing, debugging, and the
|
||
production of seven short motion tests was accomplished in the ten
|
||
days before the SIGGRAPH `86 conference.
|
||
|
||
</p><p> The boid software has not been optimized for speed. But this
|
||
report would be incomplete without a rough estimate of the actual
|
||
performance of the system. With a flock of 80 boids, using the naive
|
||
O(N<sup>2</sup>) algorithm (and so 6400 individual boid-to-boid
|
||
comparisons), on a single Lisp Machine without any special hardware
|
||
accelerators, the simulation ran for about 95 seconds per frame. A
|
||
ten-second (300 frame) motion test took about eight hours of real time
|
||
to produce.
|
||
|
||
</p><h3>Future Work</h3>
|
||
|
||
<p> This paper has largely ignored the internal animation of the
|
||
geometrical model that provides the visual representation of the
|
||
boid. The original motion tests produced with these models all show
|
||
flocks of little abstract rigid shapes that might be paper
|
||
airplanes. There was no flapping of wings nor turning of heads. and
|
||
there was certainly no character animation. These topics are all
|
||
important and pertinent to believable animation of simulated
|
||
flocks. But the underlying abstract nature of flocking as
|
||
polarized. noncolliding aggregate motion is largely independent of
|
||
these issues of internal shape change and articulation. This notion is
|
||
supported by the fact that most viewers of these simulations identify
|
||
the motion of these abstract objects as "flocking" even in the absence
|
||
of any internal animation.
|
||
|
||
</p><p> But doing a believable job of melding these two aspects of the
|
||
motion is more than a matter of concatenating the action of an
|
||
internal animation cycle for the character with the motion defined by
|
||
geometrical flight. There are important issues of synchronization
|
||
between the current state of the flight dynamics model, and the
|
||
amplitude and frequency of the wing motion cycle. Topics of current
|
||
development include internal animation. synchronization, and
|
||
interfaces between the simulation-based flock model and other more
|
||
traditional. interactive animation scripting systems. We would like to
|
||
allow a skilled computer animator to design a bird character and
|
||
define its "wing flap cycle" using standard interactive modeling and
|
||
scripting techniques. and then be able to take this cyclic motion and
|
||
"plug it in" to the flock simulation model causing the boids in the
|
||
flock to fly according to the scripted cycle.
|
||
|
||
</p><p> The behaviors that have been discussed in this paper are all
|
||
simplistic, isolated behaviors of low complexity. The boids have a
|
||
geometric and kinematic state. but they have no significant mental
|
||
state. Real animals have more elaborate, abstract behaviors than a
|
||
simple desire to avoid a painful collision: they have more complex
|
||
motivations than a simple desire to fly to a certain point in
|
||
space. More interesting behavior models would take into account
|
||
hunger, finding food, fear of predators, a periodic need to sleep, and
|
||
so on. Behavior models of this type have been created by other
|
||
investigators [<a href="#ref6">6</a>, <a href="#ref19">19</a>, <a href="#ref21">21</a>], but they have not yet been implemented for the
|
||
boid model described here.
|
||
|
||
</p><h3>Conclusion</h3>
|
||
|
||
<p> This paper has presented a model of polarized. noncolliding
|
||
aggregate motion. such as that of flocks. herds. and schools. The
|
||
model is based on simulating the behavior of each bird
|
||
independently. Working independently. the birds try both to stick
|
||
together and avoid collisions with one another and with other objects
|
||
in their environment. The animations showing simulated flocks built
|
||
from this model seem to correspond to the observer's intuitive notion
|
||
of what constitutes "flock-like motion." However it is difficult to
|
||
objectively measure how valid these simulations are. By comparing
|
||
behavioral aspects of the simulated flock with those of natural
|
||
flocks. we are able improve and refine the model. But having
|
||
approached a certain level of realism in the model. the parameters of
|
||
the simulated flock can be altered at will by the animator to achieve
|
||
many variations on flock-like behavior.
|
||
|
||
</p><h3>Acknowledgements</h3>
|
||
|
||
<p> I would like to thank flocks. herds. and schools for existing;
|
||
nature is the ultimate source of inspiration for computer graphics and
|
||
animation. I would also like to acknowledge the contributions to this
|
||
research provided by workers in a wonderfully diverse collection of
|
||
pursuits:
|
||
|
||
</p><p> To the natural sciences of behavior, evolution, and zoology: for
|
||
doing the hard work, the Real Science, on which this computer graphics
|
||
approximation is based. To the Logo group who invented the appropriate
|
||
geometry, and so put us in the driver's seat. To the Actor semantics
|
||
people who invented the appropriate control structure, and so gave the
|
||
boid a brain. To the many developers of modern Lisp who invented the
|
||
appropriate programming language. To my past and present colleagues at
|
||
MIT, III, and Symbolics who have patiently listened to my speculations
|
||
about flocks for years and years before I made my first boid fly. To
|
||
the Graphics Division of Symbolics, Inc., who employ me, put up with
|
||
my nasty disposition, provide me with fantastic computing and graphics
|
||
facilities, and have generously supported the development of the work
|
||
described here. And to the field of computer graphics, for giving
|
||
professional respectability to advanced forms of play such as reported
|
||
in this paper.
|
||
|
||
</p><p>
|
||
</p><center>
|
||
<a href="http://www.cs.toronto.edu/~dt/siggraph97-course/cwr87/cwr87p2.gif"><img src="Craig%20Reynolds%20Flocks,%20Herds,%20and%20Schools%20A%20Distributed%20Behavioral%20Model_files/cwr87p2.gif" width="60%"></a><p>
|
||
</p></center>
|
||
|
||
<h3>References</h3>
|
||
|
||
<dl compact="compact">
|
||
|
||
<dt><a name="ref1">1.</a></dt><dd> Abelson, H., and diSessa, A.,
|
||
"Maneuvering a Three Dimensional Turtle" in Turtle Geometry: The
|
||
Computer as a Medium for Exploring Mathematics, The MIT Press,
|
||
Cambridge, Massachusetts, 1981, pp. 140-159.<p>
|
||
|
||
</p></dd><dt><a name="ref2">2.</a></dt><dd> Agha, G., Actors: A Model of Concurrent
|
||
Computation in Distributed Systems, The MIT Press, Cambridge,
|
||
Massachusetts. 1986.<p>
|
||
|
||
</p></dd><dt><a name="ref3">3.</a></dt><dd> Amkraut, S., personal communication,
|
||
January 8, 1987.<p>
|
||
|
||
</p></dd><dt><a name="ref4">4.</a></dt><dd> Amkraut. S. Girard. M., Karl. G. "motion
|
||
studies for a work in progress entitled `Eurythmy'" in SIGGRAPH Video
|
||
Review. Issue 21 (second item, time code 3:58 to 7:35). 1985. produced
|
||
at the Computer Graphics Research Group. Ohio State
|
||
University. Columbus, Ohio.<p>
|
||
|
||
</p></dd><dt><a name="ref5">5.</a></dt><dd> Austin, H., "The Logo Primer," MIT AI
|
||
Lab, Logo Working Paper 19, 1974.<p>
|
||
|
||
</p></dd><dt><a name="ref6">6.</a></dt><dd> Braitenberg. V. Vehicles: Experiments in
|
||
Synthetic Psychology. The MIT
|
||
Press. Cambridge. Massachusetts. 1984.<p>
|
||
|
||
</p></dd><dt><a name="ref7">7.</a></dt><dd> Burton, R., Bird Behavior, Alfred
|
||
A. Knopf, Inc., 1985.<p>
|
||
|
||
</p></dd><dt><a name="ref8">8.</a></dt><dd> Davis. J. R. Kay. A. Marion, A.,
|
||
unpublished research on behavioral simulation and animation. Atari
|
||
Research. 1983.<p>
|
||
|
||
</p></dd><dt><a name="ref9">9.</a></dt><dd> Girard, M., Maciejewski, A. A.,
|
||
"Computational Modeling for the Computer Animation of Legged Figures"
|
||
in Computer Graphics V19 43. 1985. (proceedings of acm SIGGRAPH `85),
|
||
pp. 263-270.<p>
|
||
|
||
</p></dd><dt><a name="ref10">10.</a></dt><dd> Goldberg. A. Robson. D. SMALLTALK-8O,
|
||
The Language and the Implementation, Addison-Wesley Publishing
|
||
Company, Reading, Massachusetts, 1983.<p>
|
||
|
||
</p></dd><dt><a name="ref11">11.</a></dt><dd> Goldberg, A., Kay, A., SMALLTALK-72
|
||
Instruction Manual, Learning Research Group, Xerox Palo Alto Research
|
||
Center, 1976.<p>
|
||
|
||
</p></dd><dt><a name="ref12">12.</a></dt><dd> Hewitt, C. Atkinson. R. "Parallelism
|
||
and Synchronization in Actor Systems," acm Symposium on Principles of
|
||
Programming Languages 4. January 1977, Los Angeles, California.<p>
|
||
|
||
</p></dd><dt><a name="ref13">13.</a></dt><dd> Kahn, K. M., Creation of Animation
|
||
from Story Descriptions. MIT Artificial Intelligence Laboratory,
|
||
Technical Report 540 (doctoral dissertation), August 1979.<p>
|
||
|
||
</p></dd><dt><a name="ref14">14.</a></dt><dd> Kahn, K. M., Hewitt, C., Dynamic
|
||
Graphics using Quasi Parallelism, May 1978, proceedings of ACM
|
||
SIGGRAPH, 1978.<p>
|
||
|
||
</p></dd><dt><a name="ref15">15.</a></dt><dd> Kleinrock, L., "Distributed Systems,"
|
||
in Communications of the AC,4t, V28#11, November 1985, pp.1200-
|
||
1213.<p>
|
||
|
||
</p></dd><dt><a name="ref16">16.</a></dt><dd> Lipton, J., An Exaltation of Larks
|
||
(or, The Venereal Game), Grossman Publishers, 1977. Reprinted by
|
||
Penguin Books 1977.<p>
|
||
|
||
</p></dd><dt><a name="ref17">17.</a></dt><dd> Maciejewski, A. A., Klein, C. A.,
|
||
"Obstacle Avoidance for Kinematically Redundant Manipulators in
|
||
Dynamically Varying Environments," to appear in International Journal
|
||
of Robotic Research.<p>
|
||
|
||
</p></dd><dt><a name="ref18">18.</a></dt><dd> Magnenat-Thalmann. N., Thalmann, D.,
|
||
Computer Animation: Theory and Practice, Springer-Verlag, Tokyo,
|
||
1985.<p>
|
||
|
||
</p></dd><dt><a name="ref19">19.</a></dt><dd> Marion, A., "Artificially Motivated
|
||
Objects," [installation piece], ACM SIGGRAPH art show, 1985.<p>
|
||
|
||
</p></dd><dt><a name="ref20">20.</a></dt><dd> Moon, D. A., "Object-oriented
|
||
Programming with Flavors," in Proceedings of the First Annual
|
||
Conference on Object-Oriented Programming Systems, Languages, and
|
||
Applications, ACM, 1986.<p>
|
||
|
||
</p></dd><dt><a name="ref21">21.</a></dt><dd> Myers, R., Broadwell, P., Schaufler,
|
||
R., "Plasm: Fish Sample," [installation piece], ACM SIGGRAPH art show,
|
||
1985.<p>
|
||
|
||
</p></dd><dt><a name="ref22">22.</a></dt><dd> Papert, S., "Teaching Children to be
|
||
Mathematicians vs. Teaching Them About Mathematics," International
|
||
Journal of Mathematical Education and Sciences, V3, pp. 249-262,
|
||
1972.<p>
|
||
|
||
</p></dd><dt><a name="ref23">23.</a></dt><dd> Partridge, B. L., "The Structure and
|
||
Function of Fish Schools," Scientific American, June 1982,
|
||
pp. 114-123.<p>
|
||
|
||
</p></dd><dt><a name="ref24">24.</a></dt><dd> Pitcher, T. J., Partridge, B. L.,
|
||
Wardle, C. S., "Blind Fish Can School," Science 194, #4268 (1976),
|
||
p. 964.<p>
|
||
|
||
</p></dd><dt><a name="ref25">25.</a></dt><dd> Potts, W. K., "The Chorus-Line
|
||
Hypothesis of Manoeuvre Coordination in Avian Flocks," letter in
|
||
Nature, Vol. 309, May 24, 1984, pp. 344-345.<p>
|
||
|
||
</p></dd><dt><a name="ref26">26.</a></dt><dd> Pugh, J., "Actors--The Stage is Set,"
|
||
acm SIGPLAN Notices, V19 #3, March 1984, pp. 61-65.<p>
|
||
|
||
</p></dd><dt><a name="ref27">27.</a></dt><dd> Reeves, W., T., "Particle Systems-A
|
||
Technique for Modeling a Class of Fuzzy Objects," acm Transactions on
|
||
Graphics, V2 #2, April 1983. and reprinted in Computer Graphics. V17
|
||
#3, July 1983, (acm SIGGRAPH `83 Proceedings), pp. 359-376.<p>
|
||
|
||
</p></dd><dt><a name="ref28">28.</a></dt><dd> Reynolds, C. W., Computer Animation in
|
||
the World of Actors and Scripts, SM thesis, MIT (the Architecture
|
||
Machine Group), May 1978.<p>
|
||
|
||
</p></dd><dt><a name="ref29">29.</a></dt><dd> Reynolds. C. W., "Computer Animation
|
||
with Scripts and Actors," Computer Graphics, V16 #3, July 1982, (acm
|
||
SIGGRAPH `82 Proceedings), pp. 289-296.<p>
|
||
|
||
</p></dd><dt><a name="ref30">30.</a></dt><dd> Reynolds, C. W. "Description and
|
||
Control of Time and Dynamics in Computer Animation" in the notes for
|
||
the course on Advanced Computer Animation at acm SIGGRAPH `85, and
|
||
reprinted, and reprinted for the notes of the same course in 1986.<p>
|
||
|
||
</p></dd><dt><a name="ref31">31.</a></dt><dd> Selous, E. Thought-transference (or
|
||
what?) in Birds, Constable, London, 1931.<p>
|
||
|
||
</p></dd><dt><a name="ref32">32.</a></dt><dd> Scheffer, V. B., Spires of Form.'
|
||
Glimpses of Evolution, Harcourt Brace Jovanovich, San Diego, 1983
|
||
(reprinted 1985 by Harvest/HBJ), p. 64.<p>
|
||
|
||
</p></dd><dt><a name="ref33">33.</a></dt><dd> Shaw, E., "Schooling in Fishes:
|
||
Critique and Review" in Development and Evolution of
|
||
Behavior. W. H.<p> Freeman and Company. San Francisco, 1970,
|
||
pp. 452480.</p><p>
|
||
|
||
</p></dd><dt><a name="ref34">34.</a></dt><dd> Shaw, E., "Fish in Schools," Natural
|
||
History 84, no. 8 (1975), pp. 4046.<p>
|
||
|
||
</p></dd><dt><a name="ref35">35.</a></dt><dd> Sims, K., Locomotion of Jointed
|
||
Figures Over Complex Terrain, SM thesis, MIT Media Lab, currently in
|
||
preparation, April 1987.<p>
|
||
|
||
</p></dd><dt><a name="ref36">36.</a></dt><dd> Symbolics Graphics Division,
|
||
S-Dynamics (user's manual). Symbolics Inc., November 1986.<p>
|
||
|
||
</p></dd><dt><a name="ref37">37.</a></dt><dd> Symbolics Graphics Division,
|
||
S-Geometry (user's manual), Symbolics Inc., October 1986.<p>
|
||
|
||
</p></dd><dt><a name="ref38">38.</a></dt><dd> Pinker, S. (editor), Visual Cognition,
|
||
The MIT Press, Cambridge, Massachusetts, 1985.<p>
|
||
|
||
</p></dd><dt><a name="ref39">39.</a></dt><dd> Thomas, K, Johnson, Ox, Disney
|
||
Animation.' The Illusion of Life, Abbeville Press, New York, 1981,
|
||
pp. 47- 69.<p>
|
||
|
||
</p></dd><dt><a name="ref40">40.</a></dt><dd> Wilhelms, J., "Toward Automatic Motion
|
||
Control," IEEE Computer Graphics and Applications. V7 #4, April 1987,
|
||
pp. 11-22.<p>
|
||
|
||
</p></dd><dt><a name="ref41">41.</a></dt><dd> Zeltser, D., "Toward an Integrated
|
||
View of 3-D Computer Animation," The Visual Computer, VI #4, 1985. pp.
|
||
249-259.<p>
|
||
|
||
</p></dd></dl>
|
||
|
||
<p><br></p><p>
|
||
</p><center>
|
||
<a href="http://www.cs.toronto.edu/~dt/siggraph97-course/cwr87/cwr87p3.gif"><img src="Craig%20Reynolds%20Flocks,%20Herds,%20and%20Schools%20A%20Distributed%20Behavioral%20Model_files/cwr87p3.gif" width="90%"></a><p>
|
||
</p></center>
|
||
<p><br></p><p>
|
||
|
||
</p><h3>Footnotes</h3>
|
||
|
||
<dl compact="compact">
|
||
|
||
<dt><a name="foot1"><sup>1</sup></a></dt><dd> Note: this is a reprint of
|
||
the original publication in the proceeding of SIGGRAPH `87 (Computer
|
||
Graphics 21(4), July 1987, edited by Maureen C. Stone, pages
|
||
25-34). It was produced by applying optical character recognition
|
||
software to scanned images of the original hardcopy pages. The author
|
||
wishes to thank Ken Cushman of SGI who generously donated his time and
|
||
facilities to perform the OCR work, which allowed this old paper to
|
||
get back online. Be forewarned: the OCR process introduces errors
|
||
into the text. Most of these have been corrected through
|
||
spell-checking and spotty proof-reading. Some errors may persist.
|
||
|
||
<p>
|
||
</p></dd><dt><a name="foot2"><sup>2</sup></a></dt><dd> Author's current address:
|
||
Silicon Studio, 2011 North Shoreline Boulevard, MS 980, Mountain View,
|
||
CA 94043, USA -- craig@studio.sgi.com --
|
||
http://reality.sgi.com/employees/craig/
|
||
|
||
<p> Permission to copy without fee all or part of this material is
|
||
granted provided that the copies are not made or distributed for
|
||
direct commercial advantage, the ACM copyright notice and the title of
|
||
the publication and its date appear, and notice is given that copying
|
||
is by permission of the Association for Computing Machinery. To copy
|
||
otherwise, or to republish requires a fee and/or specific permission.
|
||
|
||
</p><p> (C)1987 ACM-0-89791-227-6/87/007/0025 $00.75
|
||
|
||
</p><p>
|
||
</p></dd><dt><a name="foot*"><sup>*</sup></a></dt><dd> In this paper flock refers
|
||
generically to a group of objects that exhibit this general class of
|
||
polarized, non colliding. aggregate motion. The term polarization is
|
||
from zoology. meaning alignment of animal groups. English is rich with
|
||
terms for groups of animals; for a charming and literate discussion of
|
||
such words see An Exultation of Larks. [<a href="#ref16">16</a>]
|
||
|
||
<p>
|
||
</p></dd><dt><a name="foot**"><sup>**</sup></a></dt><dd> This paper refers to these
|
||
simulated bird-like. "bird-oid" objects generically as "boids" even
|
||
when they represent other sorts of creatures such as schooling fish.
|
||
|
||
</dd></dl>
|
||
|
||
</body></html> |