Boids?

Hi there,

I was looking at the example and found a post about “Boids”. I’m trying to
find some articles which describe how to programs visualizations (like in the video at vimeo).

Does someone knows some articles about these kind of topics?

Example:
http://www.vimeo.com/1241853

Roxlu

funny, i was just looking at this yesterday. google ‘boids’, i believe the author’s homepage is the first link. clicking around should get you some pseudo-code.

it’s also worth looking into Perlin Noise flocking. and worth noting that just recently some scientistis somehow discovered that actually, this algorithm isn’t how birds flock in nature after all, which explains why it always looks a bit artificial (to me at least).

hehe hi damain, that was quick :wink:

I was also looking for blogs/sites which write about these kind of things. There are lots of “data visualization” blogs, but none describe them in depth / how they are created with code examples…

the video you are linking to was by ‘pelintra’ on the OF forums. There’s a thread about it at http://forum.openframeworks.cc/t/experimenting-with-boids–flow-fields/811/0

I haven’t looked at the source code, but I don’t think they are Boids as in the Craig Reynolds sense (i.e. his algorithm of align direction, match speed, aim to center of mass etc.). Pelintra’s video says he uses Perlin noise flow fields - I’m not sure if this is instead of Boids, or as well as - he can probably answer that himself - but I can say, you can definitely get away with not using Boids at all by using perlin noise to align the individuals (or even control more parameters) - thats the perlin noise flocking that Damian is mentioning. ( http://www.vimeo.com/1582196 this was in processing, now porting it to OpenFrameworks, with no Boids algorithm at all). But you will need to add extra layers of behaviour (i.e. forces) to make sure they don’t go out of your boundaries or do things the way you want them to…

I find it quite fun to sit down with pen and paper and think what kind of rules there should be and how your individuals should behave to look like a realistic animal / flock :stuck_out_tongue:

hi.
yea memo is right. i didn’t use any of craig reynold’s rules. at first i did some (semi-functional) code using those rules but i wasn’t happy with the result, so i turned to perlin noise to get a more eccentric and exaggerated behavior, like the stuff you see from robert hodgin (flight 404).
maybe “boids” is not the best word to describe what i did but in lack of a better term i used it anyways.
anyway, you can find the source here in this thread http://forum.openframeworks.cc/t/sound-reactive-boidskinda-in-a-flowsphere/842/0

and here is another example that uses perlin noise to generate “boids” that is probably a little simpler and easier to understand: http://forum.openframeworks.cc/t/experimenting-with-boids–flow-fields/811/0

1 Like

Thanks a lot Pelintra! …

(another thing I’m looking for is how to create those nice “sperm tails” in 2D than…)

I think its redundant but where is - from Craig Reynolds:

OpenSteer is a C++ library to help construct steering behaviors for autonomous characters in games and animation

http://opensteer.sourceforge.net/

@roxiu:the “sperm tails” can be made in many ways. here is how i do it: i usually make a very simple “Point” class that has some vectors (position, velocity and acceleration) and a function to interpolate with a given target. the trail is composed by an array of those “Points” and then make a loop where each point is interpolated by the position of the next point in the array. The last one is the one you are controlling with the perlin noise or whatever method you use, the rest just follow it. now if you connect those points you get a line tail. now you probably want some width to your tail and that is covered in this thread http://forum.openframeworks.cc/t/problem-with-crossproduct-for-perpendicular-using-ofxvec3f/959/0

anyway, if you look at the source here in this thread http://forum.openframeworks.cc/t/a-whole-lot-of-balls/889/0, there is some code to make trails for particles using the way i just described. now maybe someone has a better way of doing this? :slight_smile:

THANKS!