Attractor-controlled paneling grid on a curved surface

Hi everyone,

I am trying to recreate the pattern shown in the attached image using Grasshopper, but I’m a bit stuck on how to properly map and scale it onto my existing, custom surface.

What I want to achieve:

  1. Subdivide my existing surface into a dense grid of quadrangular panels.

  2. Scale/deform these panels dynamically based on their distance to an attractor point (closer to the point = larger openings/thicker grid, further away = smaller openings, just like in the picture).

  3. Ideally, fillet/round the inner corners of the scaled panels to get that smooth, organic look.

My current issue: I know the basic logic of using Divide Domain², Isotrim, and Remap Numbers with a Distance component. However, I am struggling to get the scaling to work cleanly on my specific surface geometry without creating bad geometry or losing the grid structure when subtracting the shapes.

Could anyone guide me on the best workflow or share a quick cluster/screenshot of how to set this up correctly?

Thank you so much in advance for your help!

You may give it a try with Point Attraction of Panelingtools, and fyi.

Pt_PointAttraction.gh (9.5 KB)

thank you!

Any idea why my generate borders component did not run?

I attached the surface where I would like to create the grid if the shape is important

basesurface.3dm (399.6 KB)

Since this is a trimmed surface, and the control points extend far beyond the edges, you need to use the ShrinkTrimmedSrfToEdge to pull them back first.

This is not a flat surface, so the previouse gh definition cannot be applied directly. I made a new one for your reference.

Pt_3dSrf.gh (37.0 KB)

amazing thank you so much!

One last question:
is it possible to make an extrusion (maybe connected to the attractors) that create this kind of shape (if you look at the top row of the grid attached).

So that the grid consists out of openings and parts that close…

if its not possible do you have an idea how to generally get the grid as a poly surface or something so that I am able to to extrude it?

You can continue using Extrude based on the first .gh file I provided to achieve that.

About Extrude Grasshopper Online Document

any idea how to solve the problems?

1. Jagged/Unsmooth Transitions

In the transition zones where the influence of different attractors meets (marked in blue), the gradient breaks. Instead of a smooth, harmonic transition, the cell sizes change very abruptly, creating a jagged, irregular line across the grid.

  • Question: How can I smooth out the interpolation or the distance calculation of the points so that the pattern flows seamlessly across the surface?

2. Maximizing Cell Size Contrast

I want to drastically increase the contrast between the smallest and largest openings—very similar to the look in the attached reference image (Image 3). Right now (Image 2), the small cells are still too large, and the overall look is too uniform. I need extremely tiny cells at the fringes (pink areas) and very wide, open cells in the center, with a highly dynamic gradient in between.

  • Question: What is the best way to mathematically force this high contrast into my current setup? Should I remap the distance values (W / Weight output from the ptPointAtts component) using a Graph Mapper before morphing, or should I control this directly inside the pattern logic (the purple group using Offset)?

    should look like the reference image (3. image)

Das ausgewählte Bild wird in einer Lightbox angezeigt.Das ausgewählte Bild wird in einer Lightbox angezeigt.Das ausgewählte Bild wird in einer Lightbox angezeigt.

Das ausgewählte Bild wird in einer Lightbox angezeigt.