When birds fly as a flock, they exhibit very interesting behavior. They tend to share a common sense of direction and a common sense of speed, while at the same time, introduce their own component of randomness, which yields an end result which we humans interpret as "flocking".
And then, each individual bird flies with certain properties that you'd think were "but the only way" - physically allowable velocity transitions, avoidance with other boids, and avoidance with all obstacles (unless someone just wiped their window clean with Windex). There are additional aspects such as banking, soaring, diving, perching, etc. Check out this cute site on the aerodynamics of birds.
So my professor and I got down to deciding which parts of this fun problem we would tackle. We wanted boids to fly together as a group, to follow a common goal and to maintain some minimum distance to nearby boids. We also wanted to enforce bounds on their acceleration (both in terms of velocity direction as well as velocity magnitude), and have banking as some function of the sharpness of turns. Obstacle avoidance was the next step. If you stop and think about it, birds avoid obstacles depending on their distance to the obstacle, their current velocity (note that velocity has both a direction as well as a magnitude) and their final destination. We, therefore, came up with some neat ideas to avoid 3D obstacles, which would take into account all of the above. The end result was beautiful obstacle avoidance :) Finally, we needed to come up with parameters for setting up our camera, so that we'd be focused on the boids as best possible, considering that the boids could be well spread out, or flocking in a tight group, far from the goal, or hovering right over it.
At the end of it all, what can I say? The whole experience was wonderful. I'd be up night after night to get things to look right. And now I'm happy that I've succeeded at that. I guess I can't blame my friends for making these boids my "boyfriends" or my "babies" :P
View a clip of the boids program that Professor Mount and I finally produced. The boids are rendered as red bird-like objects, while the goal is a white 3D cross. I'm still working on getting a better mpeg encoder, as well as a movie compressor!
For more on Boids, please visit Craig Reynolds' site.