Group Behaviors and Artificial Life Claire O’Shea COMP 259 – Spring 2005 Overview Motivation “Flocks, Herds, and Schools” “Artificial Fishes” “Cognitive Modeling” “Constrained Animation of Flocks” Summary Motivation Many animations require natural-looking behavior from a large number of characters Flock of birds School of fish Crowd of people Motivation How do we generate this motion? Keyframe every character This is very labor-intensive, usually ends up looking unrealistic OR... Let each character generate its own motion! Much easier, and produces natural, unscripted motion Motivation Questions about this method How do we write rules to define natural behavior? Can self-directed characters do anything “intelligent”? How can we give the animator some control over the scene? We’ll find out in the papers… “Flocks, Herds, and Schools: A Distributed Behavioral Model” Craig W. Reynolds, 1987 “Flocks, Herds, and Schools” “A flock is simply the result of the interaction between the behaviors of individual birds.” Model a flock of “boids” (bird-oids) as a particle system Each particle has an orientation Behavior of one particle depends on other particles “Flocks, Herds, and Schools” Modeling boid flight The boid itself can move only in one direction (“forward” along its local positive z-axis) The boid steers by rotating about its local x and y axes The boid’s local coordinate system can move and rotate freely within world coordinates “Flocks, Herds, and Schools” Modeling boid flight Banking turns The y-axis is always aligned with the direction of acceleration During straight flight, this is gravity During a turn, radial forces cause the bird to “bank” (rotate around its z-axis) “Flocks, Herds, and Schools” Modeling boid flight Gravity is used only to help define banking angle; it is not actually applied as a force Upper bounds are set on speed and acceleration Other forces (buoyancy, drag) are not modeled “Flocks, Herds, and Schools” Modeling flocking behavior Three basic rules, each of which generates an acceleration request 1. Collision Avoidance 2. Velocity Matching 3. Avoid running into other boids or static obstacles Match velocity with nearby flockmates Flock Centering Stay close to nearby flockmates “Flocks, Herds, and Schools” Combining acceleration requests Weighted average Fails in certain critical situations (ex. imminent collisions) Prioritized allocation Acceleration requests are accepted in priority order, until the maximum acceleration is reached Works well (at least for this simple system) “Flocks, Herds, and Schools” Simulated Perception All the behavior rules depend only on nearby objects An individual boid is only aware of other boids which lie in a spherical region around it Sensitivity falls off as the inverse square of the distance Demo: A flock of boids “Artificial Fishes: Physics, Locomotion, Perception, Behavior” Xiaoyuan Tu and Demetri Terzopoulos, 1994 “Artificial Fishes” Simulate a fish using a “holistic model” Physical form Movement Perception Behavior “Artificial Fishes” Fish Physics Spring-mass model 23 point masses, 91 springs External springs are “muscles” Fish moves by changing the rest length of these springs! “Artificial Fishes” Fish Movement: Swimming Fish swings its tail back and forth by alternately contracting and relaxing the muscles on each side Displacement of water produces a reaction force normal to the fish’s body (Fiw) {r1, s2, r2, s2} – amplitude and frequency of muscle contractions Control amount of force, and thus swimming speed Optimal values found experimentally A reaction force (Fiw) is applied at point ni and acts along the inward normal. It propels the fish both sideways and forward. “Artificial Fishes” Fish Movement: Turning Fish quickly contracts the muscles on one side while relaxing them on the other {r0, s0, r1, s1} – contraction amplitude and frequency of the turning muscles Experimentally determined for turns of 30, 45, 60, and 90 degrees Arbitrary turns are generated by interpolating these parameters “Artificial Fishes” More Fish Movement Pitch and yaw are controlled by the pectoral fins Force applied on the fins: fish’s velocity angle of fin surface area to body F f Α(n v)n Α(||v|| cos γ)n fin’s normal vector Raising or lowering the leading edge of the fin makes the fish swim up or down Setting the two fins at different angles causes fish to roll Setting fins perpendicular to body decreases forward speed “Artificial Fishes” Fish Perception Simplified simulation of vision Fish can see things that are within its viewing volume (a 300 degree solid angle around its head) and not occluded Radius of viewing volume determined by translucency of the water “Artificial Fishes” Fish Behavior Fish behavior is influenced by several factors Individual habits (preset by animator) Mental state (functions evaluated at each timestep) Perceived environment Intention generator picks an intention based on these factors. “Artificial Fishes” Fish Behavior Mental state Hunger: digestion rate time since last meal amount eaten H (t ) min[ 1 ne (t ) R(t H ) / ,1] libido function Libido: time since last mating L(t ) min[ s(t L )(1 H (t )),1] fear of predator i Fear: appetite distance to predator i F (t ) min[ F i ,1] F i min[ D0 / d i (t ),1] i “Artificial Fishes” Intention Generator Decides on a behavior based on mental state and priority ordering: 1. 2. 3. 4. Check for imminent collisions Check for nearby predators (calculate F(t)) Evaluate hunger and libido (H(t) and L(t)) Evaluate happiness with the ambient conditions “Artificial Fishes” A complete fish model: “Artificial Fishes” Different types of fish can be created just by changing the intention generator! Predator: Prey: Demo: Foraging Fish “Cognitive Modeling: Knowledge, Reasoning and Planning for Intelligent Characters” John Funge, Xiaoyuan Tu, and Demetri Terzopoulos, 1999 “Cognitive Modeling” Builds on the idea of a holistic character model, but adds another layer: cognitive modeling Character can learn about its environment Character can plan ahead to achieve goals “Cognitive Modeling” Some AI background: situation calculus Situation: a description of the state of the world at a given time Fluent: a property of the world that can change over time Primitive action: function that translates from one situation to another situation Precondition axiom: a statement about the state of the world before the primitive action Effect axiom: a statement about the state of the world after the primitive action “Cognitive Modeling” Situation calculus examples: (These examples are in CML, a language developed for this paper) Fluent: Broken(x, s) Whether x is broken in situation s Precondition axiom: action drop(x) possible when Holding(x) A primitive action Effect axiom: occurrence drop(x) results in Broken(x) “Cognitive Modeling” Domain knowledge specification Character should not have perfect knowledge of the world; this is unrealistic and uninteresting. A better model: character makes plans based on limited information, “knows” when it needs more information Need a way to express uncertainty about aspects of the world! “Cognitive Modeling” Interval-valued Epistemic Fluents The usual way to represent uncertainty in AI is with epistemic κ-fluents, but these are difficult to implement. An alternative is to use interval arithmetic! For each sensory fluent f, introduce an interval-valued epistemic fluent If. The width of the IVE fluent expresses uncertainty about the value of f. “Cognitive Modeling” Interval-valued Epistemic Fluents: Example speed(x, s): the speed of object x in situation s Ispeed(s): what the character “thinks” the speed of x is in situation s Suppose we know the speed at s0: speed(x, s0) = 20 Ispeed(s0) = <20, 20> As time goes on, we are less certain about the value! speed(x, s1) = 25 Ispeed(s1) = <10, 30> “Cognitive Modeling” Character direction A character can “plan” by finding a sequence of primitive actions that accomplish a goal Equivalent to searching a tree Complexity: exponential in the length of the plan! Animator can “prune” the search space by specifying complex actions (sequences of primitive actions) Results in nondeterministic behavior; the same goal can be accomplished in many different ways! “Cognitive Modeling” Creating an animation with “smart” characters Still need all the lower-level modules (physics, perception, behavior, etc) Add a reasoning engine to choose a low-level behavior! “Cognitive Modeling” Example: Prehistoric world A T-Rex wants to chase raptors out of its territory It knows that they will run away when it approaches, so it “herds” them out “Cognitive Modeling” Example: Undersea world A merman tries to escape from a shark The merman hides behind obstacles, so that the shark can’t see him “Constrained Animation of Flocks” Matt Anderson, Eric McDaniel, and Stephen Chenney, 2003 “Constrained Animation of Flocks” The papers we have looked at so far focus on creating animations with minimal input from the animator But in real applications, the animator usually wants to specify what happens in the scene! “Constrained Animation of Flocks” Two-step model for constrained animation Produce a trajectory that satisfies the constraints Evaluate plausibility and refine the trajectory “Constrained Animation of Flocks” Constraints Point constraints: a character must be at a point at a certain time Center-of-mass constraints: the center of mass of some group must be at a point at a certain time Shape constraints: a group must lie inside a polygonal shape Except for point constraints, these are not guaranteed to be satisfied – only approximated. “Constrained Animation of Flocks” Behavior model Based on Reynolds’ model Each character gets a randomly sampled wander impulse at each timestep. The wander contribution added to the character is a combination of this wander impulse and the normalized wander contribution from the previous timestep. ŵci-1: previous wander contribution (normalized) wii: current wander impulse wci: total wander contribution for this timestep “Constrained Animation of Flocks” Finding initial trajectories Find configurations that satisfy all the constraints, then interpolate trajectories in the “windows” between them Possible methods (some or all of these may be used): Forward simulation Path transformation Backward simulation “Constrained Animation of Flocks” Finding initial trajectories Forward simulation Used when initial conditions are given for a window Position characters to meet initial conditions, then run an unconstrained simulation using the behavior model “Constrained Animation of Flocks” Finding Initial Trajectories Path Transformation Used when the window is part of a sequence of point or COM constraints Fit a B-spline curve through the sequence of points Run a forward simulation, and at each timestep, move the character onto the curve “Constrained Animation of Flocks” Finding Initial Trajectories Backward Simulation Used when end constraints are given for the window Position characters to meet end constraints, then run the simulation backwards (just reverse the birds’ perception) Blend the resulting trajectory (xbackward) with the forward simulation (xforward) using a weighting function: x (1 u ) x forward uxbackward u (2t 3t ) 3 2 “Constrained Animation of Flocks” Evaluating plausibility of an animation Determine whether the wander impulses are plausibly distributed (gw) Determine how well the animation satisfies the COM and shape constraints (gc, gs) Bias the animation toward producing a single flock (gf) The overall plausibility function: g ( A) g w ( A, t ) g c ( A, t ) g s ( A, t ) g f ( A, t ) t “Constrained Animation of Flocks” Evaluating the wander impulses From the given trajectories, we can deduce the wander impulse of each character at each timestep gw evaluates whether the wander impulses look like they were sampled from the right distribution In this model, the wander impulses had uniformly random direction and normally distributed length, so we evaluate how well the lengths |wii| fit a normal distribution: g w ( A, t ) i 1 w 2 e ||wii ( A,t )||/ 2 w 2 “Constrained Animation of Flocks” Evaluating constraint enforcement Center of mass constraints: COM(A, t) is the center of mass of the group at time t Cx is the center of mass defined in the constraint g c ( A, t ) C Shape constraints: 1 com 2 e ||COM ( A,t ) C x ||/ 2 com2 cs is a user-defined constant dist(S, A, t) calculates the sum-of-squares distance of each character from the shape g s ( A, t ) e cS dist( S , A,t ) S “Constrained Animation of Flocks” Generating a better animation If the current animation fails the plausibility test, the system generates a new one using one of the following strategies: Completely re-generate some or all of the trajectories Add random “bumps” to a trajectory Change the character’s velocity along a trajectory Only point constraints are enforced during this phase “Constrained Animation of Flocks” Repeat the sampling process for a given number of iterations, or until a plausible animation is found. This animation was generated in 1000 iterations (about two hours) Demo: Constrained Flocking Summary “Flocks, Herds, and Schools” Simulates “boid” physics, perception, and behavior Fairly unrealistic physics – no attempt to actually model flight Fast and simple to implement, scales well to large numbers of characters No real control possible from animator Summary “Artificial Fishes” Simulates fish physics, perception, behavior, and intentions Realistic physics is used for movement (though not always for rendering) Intention generator enables fish to engage in complex behaviors No animator control possible, except in choosing initial values Summary “Cognitive Modeling” Adds another layer of character simulation (cognitive model) IVE fluents create a realistic model of character’s domain knowledge Tree searching lets character “plan ahead” to accomplish a goal Animator can help control scene by scripting a series of actions Summary “Constrained Animation of Flocks” Introduces random variation into the trajectories using a wander impulse Allows animator to specify constraints on movement Not real-time: requires an iterative refining process Produces “plausible enough” trajectories, not always completely realistic ones Summary AI methods can generate complex animation of multiple characters without low-level control from the animator Behavior rules can be combined with a physically-based model to create realistic scenes Problems: Difficult to implement user-specified constraints Complexity issue: hard to generate scenes with many characters in real time