How can I create a bird murmuration in grasshopper

Hello everyone,
I’ve been all over the internet, forums, youtube and even resorted to chatGPT to help me, and have still not been able to figure out something that seems so easy.

I’m trying to replicate a bird murmuration in Rhino using grasshopper3d as well as using attractors.

Using a single point as the origin (first bird.) This “bird”/point needs to be surrounded at equal distance from each other and the main bird, by seven other birds. These seven new birds are now surrounded by seven others at a larger distance but still all equally separated from each other and the “bird” they follow.

Secondly I need to create a way to repel them from specific points or objects or whatever in order to create the murmuration concept.

My physical model I created was using mostly equilateral triangles as well as some isosceles triangles. I can attach a picture of my physical model.

In grasshopper I’ve managed to get a gradient of points using an exponent graph of 7, but I dont know how to get them to space apart from each other equally while also being random. It’s a strange shape that is incapable of laying flat and cant be drawn but i do have somewhat of a diagram I can also attach. My goal is this: Once I create this point cloud and repel the points from certain spaces, I can create a shape using the triangles to almost aggregately place into a negative space. If that makes sense. You can understand it better in my physical model, however to be honest, I dont even know if it’s possible at this point.

If anyone has any idea how I can get something even close to this, that would be so so so helpful.
Thanks so much.



*The lowfi render I did was with a model I created in rhino by creating each triangle and replicating the physical model I had used for form finding (it took me a very long time.)

Thank you!!

If no good Samaritan provides a solution using native components I’ll post an indicative C# that does that (it’s rather very easy).

That said if the goal is to create a realistic AEC “envelope” (say a “shader” of some sort) this is not the way to cut the mustard … for too many reasons: for instance the LBS structural stiffness, clash events between tubes/sleeves etc etc.

BTW: What means clash? (having real-life structural members in mind)

Imagine a random (stand alone) structure like this:

… then clash means this (where Red indicates the obvious):



I think this is “kangarooable”, but I’m below the iq threshold it would take to functionally kangaroo it

one thing that is not completely clear to me: there are groups of 7 birds mantaining same distance from each other and from their “pilot bird”, pilot bird which is the one that belongs to the inner group that generated it → while trying to transform this into a geometrical constraint, is it right to say the distance between “any two connected birds” should be the very same along the whole flock?

if that is true, then this thing might be a starting point?


the_flock.gh (16.3 KB)

1 Like

The easiest way to do it is to mastermind a way to grow randomly a Tetrahedron Mesh (ensures the distances part - if you insist on that) … but if this is some AEC thing the equal distances goal is pointless (BWT: Who’s gonna see that in real-life ???). Plus the Tetra thing yields a robust LBS: the most important part on that type of random - realistic - thing.

2 Likes

Wow this is amazing. I see what you mean when you mention the clash. Even still- the look of this is so close to what I’m working on and It’s just so awesome to actually see a model of it because I’ve been beating myself up trying to create it.

wow wow wowwwww. Thank you!

Wouldn’t that be more appropriately modelled using boids/agents:

From a quick search there might be several plugins that provide such functionality:

https://www.food4rhino.com/en/browse?searchText=boid&form_build_count=1&sort_by=score

1 Like

The distance between birds is supposed to grow as it moves away from the “pilot bird” and wouldn’t be as noticeable until you get into larger quantities, and the purpose is to create a sort of gradient. If this was created into a pavilion or structure, my goal was to make the points/joints/birds become a more noticeable solid while the panels become glass, creating shadows from the joints that somewhat imitate the whole concept.

Check out the Quelea plugin on food4rhino

https://youtu.be/INJ4NiyA2d4

The very first example on the video looks just like a murmuration. I think it can handle flocking and maintain a separation.

Yes! Boids are exactly what this is but because they’re so complex and work with more of a swarm intelligence, I needed to simplify the process/work so I could come up with a more geometric shape. Using the triangles was the path I took however that posed new problems once I went that route.

Can’t you use boids to get the basis for a geometry and then use the boid points to construct your triangles afterwards?

Can anyone explain to me what are agents?
Are they some kind of special objects(have special attributes) represent other geometries in simulation so you can save computational power or maybe be more accurate when making special behaviour simulation?
Like in boids simulation, one might need agents with “birdy attributes”?

A bit off topic, A great deal has been written about this topic :slight_smile: Here a nice intro to get you started on the more general concept Actor–network theory - Wikipedia

Given the opportunity:

Assuming that this is some sort of AEC thing (i.e. your “boxes” captured above are buildings).

  1. ALWAYS try to design something bottom to top: i.e. BEFORE thinking the engine mastermind the pistons. This means: resolve the LBS desired AND the envelope in 1:1 detail (or some LBS/envelope combos).
  2. AVOID thinking anything in terms of abstract Lines/Surfaces. Reality and Theory have nothing in common. This brings us to a variety of real-life puzzles the likes of clash events and many others (including cost)
  3. AVOID following some abstract idea (for instance the equal distances thing) if this is just an academic concept. In 99.9999% of cases nobody (i.e. any observer) cares about things like these.
  4. Topology without a robust/fully resolved LBS (Load Bearing Structure) is a 100% nothing thing. In fact anything worth the name is the dressing of some LBS worth the name (see what I.M.Pei did in that immortal Louvre Pyramid and compare to many naive/kitsch contemporary AEC attempts).

Bad news: it’s highly unlikely that you can do anything realistic/rational without code (but hope dies last). If you want to be in high demand (as a pro) start walking the walk.