Grasshopper

algorithmic modeling for Rhino

Hi guys,
my first post and first project here, i hope many more will follow. I learned GH through the primer and a workshop by Luis Fraguada in Berlin in Oktober - thanks again Luis!

It's a conceptual piece of architecture - a contemporary version of Plato's cave. The cave was the symbol for visual knowledge as unreliable and deceptive as opposed to the highest form of knowledge: the eternal forms in heaven or the Platonic solids. As empirical knowledge turned out as essential as math in the discovery of the world, we want to rethink the cave as a revaluation or an upgrade of the visual and the accidental. So we looked for ways of combining the freeform of the cave with the rigidly defined geometry of the Platonic solids. First idea was to make a sort of 3D tiling system with fragments of the solids that would combine into a flexible skin.

This is the most efficient system i've found out yet - thanks to a suggestion from Corneel Cannaerts, also a member here. By using spacefilling regular honeycomb structures (http://en.wikipedia.org/wiki/Convex_uniform_honeycomb) and connecting it to some freeform surface I achieved what I have in mind. (in fact, i suspect the skins you can produce with uniform honeycombs are the only possible solutions for 3D tilings with regular 2d polygons, but i'm not sure).

I've attached the 3dm file with the solids, the ghx with the code and some explanation, and one sketchup image to give you a quick idea of the concept.

Views: 4440

Attachments:

Replies to This Discussion

Enough talking, here are my questions:
1. Any generals ideas on increasing the performance would be appreciated. The system is slow and crashes from time to time. The amount of polys is probably the problem, but maybe there are some other bottlenecks in the code that I don't know of. I've tried using surfaces as base geometry instead of solids, but they were not copied correctly.

2. I'm looking for a way to only keep the surface on the inside of the space - to have a skin instead of a spaceframe. Problem is that I just don't see a way of having GH decide what the neighbouring geometry to a specific solid is, and to decide which faces to draw and which not, based on that information. It seems very complex to get that done, so any help there would be great.

3. I want to make a lattice from the solids as well. If i explode all the solids, I can get all the lines and then pipe them. Or I could add some hexagonal profile as well. Problem is there are a lot of double entries from the ribs where the solids meet. I've tried to get rid of those with the Simplify Tree command, but no results yet. Any ideas on how to achieve that?

Thanks a lot!
pitrak
One way to get rid of duplicates is to compare decomposed elements. If we share x y and z, cull the list.

Sounds like an interesting project... I am looking forward to seeing your work.
Thanks! That's also the only opinion I can think of right now.
Problem is we are comparing lines. So let's say I connect the first two types of solids to see if they share some edges. I explode the BReps, gets me some 3500 and 2600 edges. Connect those to End Points, then i map list 1 to 0;0;0, list 2 to 0;0;1. The only possibility i see now is comparing the x-values of list 1 to those of list 2. Simplify only gives me the list without double values, and it's not even working for me with this setup - I get as much input as output values.

Even if I get to detect the double values, I still have to detect the pairs of values of both endpoints in both orders (edge of the other solid can have start and endpoint switched...)
If it's possible altogether, I don't really see how I can do it, i'll break my head over it tomorrow..

If it's too big a problem, I'll just have to live with the double ribs that take double memory of course.. But I'ld like to get it solved just for the challenge and for learning GH.

BTW, I'm looking forward to seeing the rest of it as well, glad I'm not the only one ;)
Not sure if this is directly helpful, but thought I'd throw it in anyway.
I've got a Weaire Phelan Packing algorithm in my structural drawing plug-in for generating structural grids such as the Beijing Water Cube - http://www.youtube.com/watch?v=3jmS8jXNbrs. It can also generate only polygons intersecting a poly surface (http://www.youtube.com/watch?v=gVWyZ4_ldM4 )

In order to avoid duplicate lines in the resulting intersections, I determined the orientation of the polygons and added an option for no coincident faces to be generated. The same should work for you. I can add other packing algorithms if they are of interest.

Cheers,

Jon
Hi Jon, thanks a lot, that looks like a very interesting plugin you made there. I'll try it out later today - can I get a trial version?
Did you make it in Rhinoscript? That's probably a lot more powerful for what I'm trying to do, but I don't have the skills and need to finish this project in less than 4 weeks...
If you're interested in implementing these packings in your plugin, I can send you the base geometry of two honeycombs with the grids defining the centers of mass. I'll make 2 or 3 more later on.

Any suggestion on a good approach for the coincident faces? I don't have a clue for now..

cheers,
pitrak
Hi Patrick,

You could write the algorithm in Rhinoscript, however the performance would suffer.
Trial licenses for the plug-ins are available to everyone for at least a month (just download and follow the prompts to request the license file), and whilst I've started to charge (a small fee) to design firms for commercial use so that I can concentrate full time on the development of these tools, I'm hoping to keep it free for academics and students.

Feel free to send me your packing polygons. If you have any mathematical references of the vertices etc, that would help me quickly add them in.

Cheers,

Jon
This is a screenshot of what I'm describing above. Can't add the image in the post, it takes forever to upload (only 70kb). Is this normal?
Attachments:

Seems to be a problem with opera, firefox uploads it right away.
This is the solids structure as a spaceframe.

Jon, I've attached the 3dm files of two honeycombs here, the truncated and cantitruncated cubics. Only geometrical information i found was on the wikipedia page above.
Grid spacing with ribs of unit length is 1+(1.5*2^0.5) = 3.12 in xyz for the cantitruncated, with alternating grid points used for the different modules (that's why i only use odd numbers of grid points in the GH definition) and a second grid shifted in the three directions with half of the grid spacing.
Second system has the same grid spacing in x and y (not alternating though) and 3 as Z spacing.

The Cartesian coordinate system for the different solids:
Cantitruncated:
http://en.wikipedia.org/wiki/Truncated_cube (±ξ, ±1, ±1), (±1, ±ξ, ±1), (±1, ±1, ±ξ) where ξ = \sqrt2 - 1
http://en.wikipedia.org/wiki/Truncated_cuboctahedron (±1, ±(1+√2), ±(1+√8))
http://en.wikipedia.org/wiki/Truncated_tetrahedron permutations of (±1,±1,±3) with an even number of minus signs

Truncated:
http://en.wikipedia.org/wiki/Cuboctahedron (±1,±1,0) (±1,0,±1) (0,±1,±1)
http://en.wikipedia.org/wiki/Truncated_octahedron All permutations of (0, ±1, ±2)
http://en.wikipedia.org/wiki/Truncated_tetrahedron see above

cheers,
pitrak
Attachments:


So I made some progress on this over the Christmas/New Year.
Anyone else wishing to be involved in testing and development of this an download the StructDrawRhino plug-in from http://www.geometrygym.com/downloads

I hope to soon add more tesselation routines, add single face generation for the latest tesselation routines, and improve the performance of the wire-frame generation. You can view the current capability at http://www.youtube.com/watch?v=SeOzPmyiVng

I'd recommend as powerful computer as you can put your hands on for this, and also Rhino v5.

RSS

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service