algorithmic modeling for Rhino
Dear all,
I am sending this email in order to ask your opinion about modelling cellular structures in rhino or grasshoper.The concept of my model is a cellular structure that consists of 2 types of polyhedra cells,more specific the Weaire and Phelan structure.https://en.wikipedia.org/wiki/Weaire%E2%80%93Phelan_structure
The size of each cell is 10mm * 7mm.The whole size of the model that I want to create is a box of 160mm * 160mm * 100mm that is consisted by 900-1000 polyhedra. Moreover this model is going to be 3d printed and imported in a software fro thermal simulations in order to test its performance.First I tried to create a model that it is possible to be 3d printed and has some transformations in order to distinguish for the printer the solid and void part.Although I started with creating blocks and groups and using the array and copy command there are a few problems that I am facing.First the file is "heavy" and not easy to manipulate.Secondly as a next step for my model I want to manipulate the size of the polyhedra in order to create a variety of sizes.For example create smaller sizes of polyhedra at the edges of the model or at the planes of the box and larger polyhedra in the middle of the box.Do you have any suggestions on how to proceed?Is modeling in rhino a good option because until now I have spent hours to built this model and it takes hours also to manipulate.I was thinking to try to use grasshoper 3d as a second option however I am not familiar with the software and think that it might take longer to achieve my goal.Do you have any suggestions for a direction to follow in grasshopper in order to develop my model?I am looking forward for your suggestions.I have also attached some images of the model in this mail.Thank you in advance
Kind regards
Tags:
Heavy file:
Well this is easily addressed in GH using blocks (instance definitions) instead of copying 1M times the "donor" object.
I mean that you should create some geometry - the "cells" (when in GH) > then define (still in GH) some instance definition (or many: case variants) > then place it according some "policy" (3d point grid and the likes). Note: Only doable with code, mind (C# in my case).
Obviously you can skip the creation part and instruct GH to deal with instance definitions already listed in the Block Manager (say: find the block named "cell666_B3" blah, blah) ... but that means that you can only use them (meaning a rather "limited" parametric approach) and not make them from scratch (meaning a true parametric approach).
But I guess that you've tried the block way in the Rhino environment already. That said I use rather solely this approach in GH and yields quite manageable object collections - I would say "real-time" response (up to 20K instances) but I use dedicated Xeon E5 1630 V3 workstations (with NVida Quadros K4200 and up for the graphic response part of the equation) so the "performance" is rather a subjective thing.
Modifications:
easily doable with GH (on instance definitions at placing time: since you need only to scale them and not vary their topology).
Anyway post a portion of the R file.
Here's a small demo of the above (it places airplane seats ... instead of your cells and obviously it doesn't scale them, he he, but that's rather trivial):
This :
... after making the proper "placement" grid (not that simple, mind: regulations et all)... it "loads" the desired plane (an instance definition: 40 planes available) in the appropriate layer (automatically created) and then place any seat "combo" (out of 50 available, i.e. instance definitions of 2 types: business/economy). It's so fast that when you alter the 2d grid ... it can keep-up live with the delete this [all blocks using the previous grid] re-load that [new blocks using the current grid] sequance. Tested up to 5K seats (for the next 7444447, he he) - BTW: these are rather far more complex than your "cells". Seats are multi-nested and multi-layered thus you can control rather easily what Rhino displays in Views in what detail.
Dear Peter,
Thank you for your reply and your suggestion on how to proceed.Moreover thank for the example with the airplane seats.First I would like to say that i would have uploaded the 3d rhino file,however the size of the file is aroun500MB.I tried to dicrease it by using the save small option that rhino provides but then it is reduced only 400Mb..I think it is not possible to upload so huge files in the forum.In addition I would like to clarify that I said I would like to have this transition from smaller size to larger size of cells,but I did not mention the fact that I also want a transition from polyhedra to spheres.So as a result have a variety of polyhedra and spheres.To be honest I have not decided yet whether I want to use grasshoper only to create faster a model,so in that case use this process in order to avoid the array part in rhino or whether I am going to approach it as a parametric tool and then receive multiple results of sizes according to the definitions and the domains that I will insert.Thank you for the detailed explanation.
Kind regards
Valentini
Dear,
Well .. the whole scope of my writing is to AVOID the 500000Mb part, he he ... therefor (for having a rather convincing example ... BUT using solely C#) you should upload ONE polyhedron (or a collection of, say, 5-10 > from the "base" > increase the N of facets > to sphere).
As we already discussed ... the topic of scale (of the SAME object) as utterly insignificant with regard "performance".
So you should think this issue as follows:
Imagine having 10K of these thingies (perfectly manageable collection with a decent contemporary CPU + a decent OpenGL GPU, made via instance definitions obviously) that require 5 "phases" to become spheres.
So we have 2K of the "base" polyhedron, 2K of the next, ... 2K spheres (or whatever percentage you like). In plain English: dealing with 5 instances ... and THAT is really peanuts (even for a 8086, he he). But even if we had more (say: a "finer" transition resolution, so to speak) it's also peanuts.
Now... the option to create these inside GH (BTW: I have code that does anything imaginable) is also utterly insignificant: the only thing that I'll do is to add some lines of code more (i.e. "get this" and "define" an instance definition + one function that does parametric polyhedra). Of course I have code that does this therefor "add" actually stands for "cut and paste".
best, Peter
BTW: I take for granted "some" sort of common sense:
I mean: IF (just one "step" BEFORE the sphere) you want 1M instances of a poly-thingy with 1M "facets" ... well ... I do hope that you understand that even a Tesla system (running, say, a properly configured CATIA) may give-up for more than obvious reasons.
Moral: be "modest" and GH can handle lot's of instances almost in real-time.
On the other hand ... here's the ultimate solution for you (I mean ... er... some solution, he he) in case that there's potentially a BIG N of faces around:
1. As you may know a polyhedron as Brep is rather far more "taxing" than the equivalent mesh.
2. Of course we can "decompose" any polyhedron in his BrepFaces and create a mesh.
3. Now the big thing ... see this? It's a sardinizer (C)(tm)(US Patent pending): a collection of paranoid C# thingies that create random planes on surfaces and then apply random transformations on ... er ... hmm ... sardine instance definitions (obviously of the finest quality).
4. Here's some sardines (of the finest quality) according some (user defined) paranoid transformations (i.e. arbitrary) - including scale (response is as always "real-time"):
5. So what may you ask ... what is exactly the big thing with these ^$@^$ sardines? Well the big thing is that these are meshes of a certain "complexity" (i.e. millions of mesh faces):
6. And despite the millions of faces ... GH emerges victorious with regard that "real-time" challenge:
Moral: use only Da Morgada sardines (in pure olive oil > yummy) and have faith.
Geometry Gym via GH may help you automate the modeling of the cell structure, depending on what types of volumes you're trying to fill.
As a chemist by training I will point one thing out quickly, that any regular 3D structure can be represented perfectly by a "unit cell" that repeats boringly like an XYZ stack of cardboard boxes, but not cube ones, in fact having different X, Y and Z dimensions.
Then there's "space groups" which I never understood. Those are only distantly related to the unit cell. They are about...?
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by