# Create repeating geometry across a face

I'd like to create repeating instances of geometry over a single selected face of an existing mesh. Such as the small square cutouts in the pictured panel:

• I cannot use a material because the result will be 3d printed and requires real geometry.
• A displacement modifier with an image looks awful and has far more geometry than is needed.
• There is node to generate points, but only generates randomly distributed points.

I got an answer suggesting I use a grid node or subdivide the existing input face. Subdividing a face only seems to divide at the edges which is not a grid for non square faces. I might be able to use math to parent a grid node to a face, but it will exceed the bounds of the face.

The image I chose for this question doesn't illustrate the question well. The following might help. I can instantiate the shapes, but getting them distributed across a face has my stuck.

Thanks

• @HarryMcKenzie I'm allowing myself to reopen, because I think what both the current answer here and the 2 answers in the linked thread are missing is a technique to position the grid on a face of choice. And when in doubt, I think it's better to be on a safe side and keep the Q open. To Jay: consider clarifying your problem by presenting an example mesh (a simple one if possible), on which you want to select one face and fill it with elements. Maybe even model manually the before and after versions of it. Commented Jun 11 at 7:20
• Also, is the face always a quad? Commented Jun 11 at 7:21
• @MarkusvonBroady thank you for clarifying :) Commented Jun 11 at 7:58

Here's a setup that doesn't use a grid. For grid based setup, you'd pretty much use the obtained points here to position the grid. Of course you could calculate the positions without spawning curves and resampling them - by using lerping (vector mixing) between face corners, but I think this method here is easier, and I wouldn't be surprised if it's also more performant.

You can see I align the instances both to the normal, and to the direction of the curves. However, maybe you want to align also to the other pair of edges, then you have to figure out the logic when to switch (based on factor being 0 or 1? Or interpolating near those values?) between the two…

Also consider that you can resample at the end by length if you want a somewhat even distribution with non-square or even non-rectangular quads.

• Shows off your depth of knowledge
– Jay
Commented Jun 11 at 13:46

It should be no problem to array a set of squares on a grid.

1)We can use mesh to points set to faces and instance on points to array the squares on a black background.

2)We can eliminate the outer row of squares with a raycast node.

You can then change the value of the raycast node to control the size of the grid.

For example:

I am not sure if you wanted to produce a kind of grate- If you actually wanted to knock out the squares instead of coloring them, you could replace the join geometry node with a mesh boolean set to difference.

After that, you can save a copy, apply the modifier and resize it according to real-world units.

• If I read the docs correctly that works for a source mesh subdivided to one face per square. Can this accomplished when applied to a plane primitive with only one face?
– Jay
Commented Jun 11 at 4:49
• In my example, creating a grid node would work the same way. 2x2, with 15 vertices per side. This is even more straightforward. Commented Jun 11 at 5:17
• The underlying object doesn't need to limit what you produce with the geometry nodes, of course. Commented Jun 11 at 5:19

Diamond Plate Pattern

Build the node tree from a curve shape such as a star node or .svg instanced on a grid node.

Select alternating parts of the grid with the index and the modulo node, so that you can have two rows.

Each row can be instanced using a separate instance on points node so that they can be angled differently. This generates a lot of patterns (parquet, crosses etc..).

The entire pattern can be rotated and scaled. Then you can extrude or boolean the geometry.

We can use the grid node as the input or use the group input only to set the shape of the selection with the raycast node, and as the surface for the boolean.

• Nailed it this time :)
– Jay
Commented Jun 11 at 16:06
• At the top left is a geometry node named "Starting Grid." Is that the input?
– Jay
Commented Jun 11 at 17:12
• Yes, it is. In this tree, the source object is not used. The group input is left out. Commented Jun 11 at 17:38
• Depending on your use case- the group input could still be used to 'trim' the shape of the pattern. It could be plugged into scale elements>raycast. Commented Jun 11 at 18:02
• I have edited my answer. Commented Jun 11 at 20:08