algorithmic modeling for Rhino
Working off Marc Syp's video idea I've created my own version. It's a little more clunky, but it gets the job done. It all starts from my excel file where I've listed program names and then areas. These are imported through the plug-in
Ghowl to Grasshopper. In grasshopper you have to manually list which items should be attracted to what. My file has a bunch of adjacency requirements, then a few off site requirements I've tried to communicate in my diagram. This is where list-item grabs the appropriate areas and attracts them to each other. The example is for an elementary school.
Next I've set surfaces in rhino for attraction. This example is for a vertical elementary school, so for example views were important for certain rooms. With Marc's program, they all tend towards a sphere themselves. For more vertical designs, I've added a core attractor surface to draw the bubbles vertically. This can definitely be refined, but I wanted to share it asap to all those people waiting for Marc to share something. All in all it's basically a simple sphere packing script I found and adapted to suit architectural purposes.
Here's a video of it in action
You have to install the gHowl dependencies "OpenXMLSDKv2". Should be included in the plug-in package. Hope that works.
Cant thank you enough for this. Its been a great help for me with my studies!
I would like to take it a step further in the form finding process and wondered what you think might be the best way to replace spheres with boxes representing the volumes of rooms? So the area would stay the same but a standard height would be added eg.3m.
I have also wondered the same thing. I could not find an effective way to make boxes instead of spheres in the definition. To translate the adjacencies into useable floor area the logical next step for me was to use 3d voronoi. As a addition to my script I grabbed all the center points of those spheres, ran them through the 3d voronoi, and generated a surface at the center point bounded by each respective voronoi cell in that same plane. The areas were surprisingly close to what I had specified, and it maintained the adjacencies quite literally. Of course it does not relate to how we actually use space today and you end up with wasted space in corners with tight angles.
I managed to get boxes to generate instead of the spheres and they had the correct floor area (using the square root tool for the plane) and I used a slider for the heights of the boxes. I have attached an image of the bits i've added, its probably mathematically wrong but it looks right to me at the moment (my lack of knowledege on this subject meant I couldn't work out the section of your GH file that discussed the overlapping of spheres).
Ideally what I could do with is preventing the boxes from overlapping and sitting at increments i.e. every half a storey 1.5m?
Thanks again for such a handy script!
Looks good. It would be easy to remap the x value on the center points to 1.5m intervals. But then you end up with each area on it's own floor, which is not typically what you'd like since some programs would inevitably share a floor.
Now that I am thinking about it, you could set a building height on a slider, then divide that into respective levels, remap z-values of the sphere to that same building height domain then calculate the nearest floor for each point, and move them each by that vector then add your squares around each point. This wouldn't be perfect, you'd likely have a few overlapping areas, but it might be a good starting point.
Cool, i'll give it a try tomorrow!
Is there a way of preventing an over lap of the boxes horizontally too?
HI! I tried to create boxes and to making them stack! I think that i am close but something is wrong with the box collide, what do you guys think of this attempt? I am currently trying the definition and excel document you provided Jesse. When the definition is ready i will use it on a building program for a test center in the north of Sweden which is one of my current projects!
I was just wondering if you made any further progress with this stacking version of the definition. If you've had any breakthroughs it would be really useful to me, as I'm trying to make this work at the moment.