Download presentation
Presentation is loading. Please wait.
1
Flocking References: http://www.red3d.com/cwr/boids/ xxx
2
What is it? A way to simulate "herds": – Flock of birds – Flock of fish – Herd of wildebeest – A group of enemies First image: http://www.hanskellner.com/2007/03/02/dusk-flock-of-birds-video/http://www.hanskellner.com/2007/03/02/dusk-flock-of-birds-video/ Second image: http://www.environment.ucla.edu/podcasts/article.asp?parentid=4002http://www.environment.ucla.edu/podcasts/article.asp?parentid=4002 Third image: http://virtualiansanity.blogspot.com/2010/09/lion-king-favorite-scenes.htmlhttp://virtualiansanity.blogspot.com/2010/09/lion-king-favorite-scenes.html Fourth image: http://en.wikipedia.org/wiki/Resident_Evil_4
3
Boid Representation
4
Boid Representation, cont. Independent Steering? – For most characters, the orientation should match the direction of the linear velocity Need a refresher on the math? – Sometimes, you do want a separate facing direction… [optional] Max Speed (a scalar) – Useful to keep speed under control – Refresher (with vectors)? Image: http://www.atariage.com/screenshot_page.html?SoftwareLabelID=906
5
Steering
6
Steering, cont.
8
Flocking overview Every frame: – Generate 0 or more steerings (force vectors) From a set of low-level behaviors – Seek – Flee – Wander – Avoid-another-boid – Align – Obstacle-avoid Each force vector is created considering only that behavior – Combine these steerings into a single force vector – Apply it using the position-/velocity-update formula.
9
Low-level behavior: Seek max_accel
10
Low-level behavior: Flee max_accel
11
Low-level Behavior: Wander Approach #1: – Add random.uniform(-m, m) to heading. – Generate a force vector in this direction – Problem: tends to be "jittery" Approach #2: – Every few seconds generate a new seek target. – Problem: can be abrupt. Approach #3: – Place a target n units in the heading direction – Add random.uniform(-m,m) to it's rotation This is relative to the heading direction – Seek towards this target – Usually a little less "jittery" Even though the target itself is "jittery"
12
Low-level behavior: Avoid-another-boid Simple: – If within n units, flee More advanced: – Predict if we'll collide, and if so steer to avoid – "Problem" cases: Moving parallel to each other -- no collision! Intersecting paths, but no hit. – Calculating the correction force vector. – Can also consider a "cone of vision"
13
Low-level behavior: Align Given: a direction vector. Simple -- just accelerate in this direction!
14
Low-level Behavior: Obstacle Avoid One approach: Usually you want to modulate the force based on distance.
15
Blending
16
Blending, cont. Problems: – Contradictory forces (Equlibria) – Oscillating: If you gradually adjust weights, this shouldn't happen. – Near-sightedness E.g. taking the wrong route in a maze. Combine this with A* to get around this. – Behaviors that should take precedence: E.g. Wall-avoid if we're close; otherwise, 0.5 wander, 0.5 seek. – Use a decision tree.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.