Gradient Mesh Pattern on a ribbed surface

Dear all,

I have having trouble to create a pattern of the image below where the mini diamonds are forming an edge which curve at the end as the rib curve in. I managed to create the GH for the overall rib surface and mesh pattern but missing the final step to cull the pattern thats in the rib.

Currently, I can only reach this step:

the image below is what I am looking for as a final result.

I have attached an internalised version of the GH for reference. File in mm
the internal geometry may be away from the 0,0,0
I would greatly appreciate it

251010_Ribbed_Internalised.gh (167.1 KB)

if you could help give me some idea or help me to resolve this together.

Thank you very much.


Hi Joseph,
Thanks for looking into it.
Yes, I did use some plugins that I found in food4Rhino…
Unfortunately, I didn’t manage to do it purely on GH default… Sorry about that

I’ve opened the file to try and help. Just as a general comment, the file seems super heavy and quite messy with cable management, so that makes it harder for others to help you (and harder to work yourself frankly). I had to disable the GH solver just to open the file.
When it comes to heavy geometry, a good trick is to test stuff on only a few faces to figure out a solution, then apply it to all the geometry when you have something that works.
Breps get heavy very quickly as you use loads of them, so I try to use meshes where I can (curved geometry are also expensive to build). (Edit: never mind I see you’re using meshes)
I’m also not completely sure what you’re trying to do here.

That’s a good concept even when the geometry isn’t heavy… test with just 3 or 5 parts instead of I don’t know 100?

Mesh explode btw. can be replaced with the Explode component in Rhino 8 and 9

Thank you Martin! will use Explode instead.

Something else which I think I would try to avoid is the mismatching subdivision.

Thank you Nick for the advice.
Indeed, I should reduce the parts as its getting very heavy and slow.

Essentially, I am trying to create a pattern that is in the red zone only like the sketch below:

so that the pattern is only highlighting the edge of the geometry instead of filling it all up..

I tried using distance from the edge of each rib panel as a control factor to dispatch but that doesn’t give me the roundness near on both end of the panel..

in overall the orange in the image below is what I desire:

Yes I was going to bring up the same thing as Martin. Clean geometry usually translates to cheaper/easier/cleaner fabrication.
I think you’re on the right track using attractor curves. I would try an approach like this where you measure how far each face is from the atttractor curve and remap it to an offset value.

Thank You Nick,

That’s a good idea. I completely forgot I could create a new attractor, maybe at the centre of the rib, so the culling is in reverse.

Do you have any suggestions on how I could make it lighter? I think at the moment I am creating millions of mesh faces and culling one bits by bits.. I m not sure if this is the most efficient way..

There is another problem of the mesh faces not being planar.
If you want better performance you could skip the use of meshes and mesh offsets altogether.
Generating the curved surfaces themselves seems fine.


But I would subdivide them into planar quads or triangles and just work with polylines. This would also force you to be more precise with how each panel is being offset. I have found it difficult to be precise with Weaverbird offset components.
If you literally have millions of faces to deal with, then it might be best to just process sections of geometry at a time as opposed to trying to compute everything all at once. Once you have your final geometry, joining as much as can into larger meshes will help a lot. Rhino and grasshopper will have a much better time handling 1 mesh with 1,000 faces than 1,000 single faced meshes.
So ideally you work everything out with points and lines, then mesh everything at the end.

I haven’t done much to the script, but I’ve attach what I have in case you might find it useful.

251010_Ribbed_Internalised_nl.gh (171.7 KB)

@adrian.yiu

Have a look at the attached file. I have spent some time working on your script doing a few different things.

First I cleaned up the script, deleted anything that wasn’t being used, and cleaned up the cables.

Secondly rebuilt a few parts of the script in cleaner ways, as well as changed the workflow. I tried to be as true as possible to the original geometry and intent, but I have taken some artistic license in a few ways. I have rationalized the geometry quite a lot.

This script does what I think you were initially asking for, but also it’s an example of how I like to tackle cable management (which I take pretty seriously (and I think you should too!)). It also demonstrates what I mean by working with lines and points to greatly improve computation speed. The finale results deals with thousands of mesh faces, but is pretty fast because it never handles individual faces as mesh. I used a few attractor curves to achieve the roundness you’re talking about without dealing with any Breps.

Hope it helps.

251012_Ribbed_Internalised_nl.gh (70.1 KB)

Hi Nick,

Sorry for the late reply. Thank you very much for taking so much time looking into this for me.
I looked at your script and it is so much cleaner! Definitely learn a lot. Mine was way too messy.
It gives me new insight in doing many things too! Much appreciated. I will try do it again myself so I get to really learn it.

Happy to help, and glad you found this helpful. I’m sure you will learn fast with that attitude. I have been using Grasshopper for 8 years now, and am still learning new things all the time.
Cable management is highly underrated in my opinion. Takes a bit of getting used to, but it makes your life way easier in the long run. It makes your work far more legible to yourself and others, not just while you’re working on it, but if you ever come back to it in the future.

You can also ‘group’ clusters of components together to behave like components themselves. Data in on the left and data out on the right. This makes troubleshooting a breeze. It also makes it much easier to manage large files with hundreds of components as you can of course start to label or annotate each group. A clean script will make it far more intuitive to understand how information is flowing, so it’s easier in turn to understand how you can change things.