Flat Equal Paneling on a Curved Surface?

Kangaroo is built into grasshopper now. I’m using Grasshopper 1.0.0007 which is built into Rhino 6 (i’m on 6.25.20114.5271)

Can you please send HS_kim SplitSurface_re.gh link or definition?

Hi Dharman,

I was looking for examples which showcase planarization and stumbled upon this example. This looks really nice and works perfectly. I have one more question to ask, is there a way to sort these geometries with respect to similar geometries? I know how to sort them with area and length’s but not with similar shapes.

You’ll need to define what similar means. There’ll probably need to be some kind or heirarchy. For example first distinguish by number of edges (4,5,6,7 etc) then by edge lengths, or vertex angles. You can use k means clustering for this. It is complicated by the fact that the panels have rotational similarity. You may end up with a Dendrogram of panel families. As per museo soumaya link above. As that document explains, this is a very tricky problem. It’s easy to get something which gives you bunch of colored panels which look similar, but to actually make a bunch of the panels not unique is very difficult to algorithmically solve. I think in the end they defined some areas manually in order to classify panel families. I can upload a k means example when I’m next at a PC

kmeans_web_tiny_slow
Heres a sample of using the Owl kmeans component. i’ve shown how you can use weights to control the relative importance of each tensor component. if you set everything except EdgeCount to 0 you’ll just get clusters representing all unique edge counts.


planar_panels_3.gh (137.6 KB)

I’ve shown how to create an average panel for each cluster too, which is then used to replace every member of the cluster.

unique panels coloured by cluster:

average polygon. each cluster member is identical. note inconsistant gaps. initial polygons are not regular

all panels in each cluster:

It would be worthwhile performing some kind of fitness check to determine a good value for K. for instance you could check the cumulative total difference between.

Also the original triangular tessellation is not very good. i’s suggest using kangaroo to create TangentInCircles. this ought to give much more regular starting polygons, however the boundary condition will be problematic.

Hope this helps you!

14 Likes

Hi Dharman,

Thank you for the reply, by similar I mean the shape of the panels so that we can make molds of panels which are similar in shape (length, width and height). Yes, I read a few thing about k means but have never used it myself. Yes, that will be really helpful will take a look at the example.

Wow, this is really helpful Dharman. Thank you so much, actually I went through the script and I had a few questions to ask -

  1. It is written that ‘tensor dimension and weights much match’, but from where did the number 1000 and 0.100 come from?
  2. I apologize as I have no much knowledge of K-means and owl component, what exactly is happening there in the ‘K-means cluster grouping’ group in grasshopper?
  3. Lastly, once we have the panels in each cluster, is there a way to sort the panel that are same in their dimensions and geometrical form so that we can lets say give one shape and say, make 20 laser cut parts of this same shape. I hope I could convey my thoughts.

And thank you once again for all your help. This is really helpful.

Glad this has helped you and that you have more questions.

  1. I should have written that the count of dimensions and the count of the weights must be the same. The value of the edgecount weight is very high to ensure clusters don’t have some members with differing edge counts (eg hexagons and pentagons). The weights determine how much importance each dimension is given.
  2. Google k means. Essentially the tensors are vectors which can have as many dimensions as you want. Dimensions can be any number you want. It could be the R component of an RGB colour or it could be the length of a curve. Visuals of k means usually show tensors with two dimension drawn as x and y. Watch this
  3. That’s already happening here:
    Whatever you choose as K, will be the number of unique panels

Apologies for making this example a bit over complicated. It follows on from work I have done previously on a project, where I was interested in doing this but it was not in our scope. I might try to make a simpler sample focussing on the clustering only. There is also a simpler example in the owl folder

1 Like

Hi Dharman,

Thank you for being patient and replying to my answers.

So if I understand it correctly, the number of inputs in dimensions and inputs in weights must match. And the input of maxEdge, maxRadius and minRadius for weights can be any minimum number, in this case 0.100?

Thank you for sharing that video, I think I understood what K-Means mean. Like you said, it can be any attribute of the geometry as long as it is expressed in numbers which can be the cluster the objects/panels.

Sorry, but I think you meant the the K in the K-means clustering group, the one marked here changes the radius of the panels. I changed the K input to 500 which was connected to the N of random component and still I am not able to get set of panels which look alike. Sorry if I am doing something wrong here. And while I was changing the K values the Average Tset componnet sometimes gave error saying - TensorSet has no Tensors. I have no clue why that happened.

No the example you have shown is really good, I am learning it for the first time so I have many doubts. Lastly, thank you for suggesting to look at the OWL example, I looked at it and to take that example a step forward, can you tell me how to segregate same cuboids?

I hope I am not bugging you a lot by asking so many questions and thank you once again for all your help.

HI ,

Iam trying to get planer equal triangle panels for a curved surface , The size of each panel needs to be (950X950mm- a square with two triangles) , by using lunch box but controlling U & V as shown below is not achieving the required size .
Any idea ?

image
Triangle Panles.gh (9.9 KB)

Most surfaces cannot be covered by triangles or any other shape which are exactly the same. That is how basic geometry works…

One class of surfaces which can be covered by triangles which are exactly the same are “developable” surfaces. I don’t think there are any other classes of surfaces with the same property but I could be wrong.

1 Like

Hello~can i ask you something about kangaroo: i opened your script and it seems i lack these two objects: Simple Remesh and RemeshByColour. I am using rhino 6 and I downloaded Kangaroo2 from food4Rhino and had them replace the original one in component folder. Do you know why these two are missing?

Thanks a lot in advance!
4

Good afternoon Michael,
I am trying to create planar panels using a custom grid, exactly like the MAAT museum
I have seen almost all of the threads and I cant seem to figure it out
MAAT Surface.3dm (165.6 KB)

The main goal is to have a majority of identical panels, and visually verify how many types of panels we have, and ultimately try to optimize it.

Would love if you had any insights!

Good afternoon dharman,
I am trying to create planar panels using a custom grid, exactly like the MAAT museum
I have seen almost all of the threads and I cant seem to figure it out
MAAT Surface.3dm (165.6 KB)

The main goal is to have a majority of identical panels, and visually verify how many types of panels we have, and ultimately try to optimize it.

Would love if you had any insights!

Hi @ortiz2401 , I’m not going to get a chance to look at this in any detail for a week or so. As far as I’m aware the tiles on that building are not planar. What have you tried so far? Maybe you could start a new thread specifically about where you’re stuck representing the MAAT tiles?

I actually could not arrive at anything, not even the pattern itself. Would love some guidance to start with the overall grid, and then maybe I can take it from there

Hi @ortiz2401 , I’d probably start like this, with long strips, (or a grid of points) and treat every second row differently dividing into trapezoidal surfaces
Unfortunately the widths of these are unlikely to be identical, so you may need to divide by other methods (plane intersection, graph traversal etc)
I believe this is a good starting point
MAAT.gh (11.3 KB)