"perfect" grid with nice boundary


this is more of a open question/challenge…
A lot of products, parts or even architecture have features where holes are arranged in some kind of grid. Think of venting holes, speaker grill, showerheads…

I find it very hard to cover non-rectangular shapes with nicely spaced points, a nice edge and some kind of order.

Take this superellipse:
You could do circle packing – but It tends to have “holes” in the arrangement of the points; also it is a bit chaotic;

You could just cull all points outside the shape; resulting in a very jagged edge

or recursively offset the shape and divide the curve; nice edge but not very even distribution

or split the shape in “rectangular” shapes and use surface points: ok I guess

  • Have you seen examples where this is done really good?
  • Do you know of another way to morph a grid onto this (or any) shape?

From my experience there’s no “perfect” grid. You can’t fit a square into a round hole. Something’s gotta give somewhere. It’s the question of customer’s personal aesthetics choice.

yeah, propably. But what is the best compromise? or how do you handle these cases? I personally don’t like the fade-out pattern so much

but b&o are doing some interesting stuff:


Not a real answer but who knows
Morph from source grid to target boundary curve

If customer doesn’t already know what he wants, we present him with a few options. Usually 2-3 (obviously having our own convenience in mind). If he still doesn’t like it, we explain why it can’t be done “perfectly” or present him with the worse aesthetically looking alternative, so he agrees to the one out of the first set of choices. :smiley:

Having said that, we’re not a design company and we can’t be spending engineering time on artsy fartsy stuff. :stuck_out_tongue:

To comment on your examples - all three perforation options are done with a different ruleset (I guess it depended on the fill shape), so which one is perfect?.. More to say, all three look handmade too.

Just like this one:


my approach would be similar to what you see in the B&O images, taking a curve that is unreleated to the shape so that you create some ‘tension’ in the appearance:


@gijs nice! I think for visual pleasing patterns aglinment is more important than spacing…

one other option would be quad remesh:

yes, I tried that as well, but I found that it draws you attention too much to the four ‘corners’

also I find alternating more pleasing than even:


relaxing the mesh helps, (a bit)
quadmesh output:



quad mesh + the dual mesh of itself gives a nice result but fails at the “corner”:

Some years back I made a lot of perforation patterns for Volkswagen/Bugatti and it indeed has always turned out to be a difficult job. I think an ellipse is a rather simple example because you can break it down to 4 edges, two of them equally sized, which makes it rather easy to fill up. Reality isn’t like this. The B&O example and the speaker below is by far the best, because from my experience the most important aspect is eye floating (don’t know if this translate right). Basically you don’t want any stop in the pattern. Therefore a perforation based on curves almost always yields best results. You always read the perforation as a dotted curve. A relaxed mesh returns equally spaced points, but has many directions, indicating something is not working right. jagged edges are usually more acceptable, if it follows some sort of regularity.


a bit better if you suppress the corners. But still I don’t quite like it as it is more difficult to ‘read’.



A very interesting topic,

There are many possible ways to relax these distributions – beyond just treating edges as springs.

As several people have pointed out, the flow of the curves can be more important than the spacing, so sometimes it makes sense to use bending along grid lines to keep them smooth.

Also, making any changes in edge length more gradual across the grid can help – so equalising concurrent segments along the grid directions.

The hardest part is often selecting the right topology. Internal irregular vertices tend to draw the eye, which we often want to avoid.

However, if we don’t have any internal valence 2 or 3 vertices, to meet a smooth boundary curve we need to either chop some grid cells diagonally at the boundary, or have some valence 2 corners, which tend to cause some bunching up around them.

If cutting cells diagonally, there are then various ways to treat the relaxation differently at the boundary to get the spacing nice.

Here are a few variations

dotdistribute.gh (36.7 KB)


Actually this picture hints a good trick when edges can’t be achieved well. You truncate or encapsulate the pattern with a visual gap or extrusion of similar diameter. Building a fake component-separation always increases the visual quality for free.

are you allowed to share some images of that?

1 Like

One advantage of using a triangular grid instead of quads is that you can turn corners with a smaller angle in the regular grid (multiples of 60 degrees instead of 90, or 30 instead of 45 if allowing half cells), so when relaxing these corners onto a smoothly curved boundary they cause less bunching and distortion.

dotdistribute_triangles.gh (36.0 KB)


the first one is quite nice!

but would it meet the bugatti-standart? :upside_down_face::wink: