# Geometry Nodes - Hexagonal grid on existing geometry

I am working on a fan design of the TARDIS Console room from Doctor Who, and intend to use geometry nodes to generate the roundels that can be seen on the walls. My plan is to do this by subdividing the walls and instancing cylinders to use with a boolean node, then instance modeled roundels over the holes this leaves. However most in TARDIS console rooms the roundels are arranged using a hexagonal pattern (I.E rows using alternating heights) as opposed to a grid pattern. I have tried using the triangulate and dual mesh nodes however when run through a mesh to curve node it still ends up a grid pattern.

There are tutorials for Geometry Nodes Hexagonal grids, but as best I can tell, they use mesh primitives generated within the node tree, namely the mesh line or mesh grid. While a passable alternate option, ideally I want the node network to employ the existing geometry I model for the structure of the room instead of needing to position and resize the panel for each individual wall, which the solutions I have found would demand.

Does anyone have a solution to distribute points in a hexagonal pattern using the pre-existing geometry?

Edit: The example suggested is unfortunately not what I am looking for as they involve geometry entirely generate within the node tree, as I said before my intention is to use existing geometry, that is to say the geometry of the model that I would be employing to build the main structure, something entirely generated within the node tree would then need to be adjusted and positioned to correctly interact with the node tree, which would be additional hassle if it were possible to avoid it: the current idea would be to select the walls as part of a vertex group and expose the selection of a separate geometry to get the faces which would serve the basis of my array.

It was also suggested that I add a visual example of what I'm trying to achieve, so I quickly googled TARDIS Wall to get an example:

As I wrote above, the idea would be to place points in this pattern, then instance cylinders to cut into the wall using a boolean math node, then instance a more complex design in the holes I cut.

Further Edit: I have begun the mesh now, here is a screenshot of it. The selected faces are the ones I want to put Roundels on

• Does this answer your question? How can I create a hexagonal structure with Geometry Nodes? Jul 31, 2022 at 17:25
• in my opinion you should add some sketches/pictures how it actually looks like and what you want to achieve to make that clearer. Jul 31, 2022 at 17:49
• Regarding your image: This is exactly what you can achieve with the proposed technique. Somehow you have to create the hexagonal pattern for your cylinders, no matter which mesh you then want to cut with Mesh Boolean. Therefore this is a duplicate. Or is your question more about aligning an existing mesh to another (e.g. along the normal and resized), rather than creating a hexagonal structure? Jul 31, 2022 at 19:33
• The idea is to convert the planes of the existing mesh into the hexagonal grid to convert to points to instance on, the examples I have seen are all using mesh primitive nodes to generate the positions of the points. If there is a way for that to be done, I don't know it and would like to know if anyone else does. I know the suggested techniques, and I know they will work, but if I can use the planes of the existing mesh so I don't have to then align them manually if there's a way I can just place the modifier on the structure and put the required walls in a vertex group. Aug 1, 2022 at 7:23
• And these walls are all rectangular upright faces (ngons)? Or do they have more than four vertices or irregular shapes? Could you share this file? ...It depends a lot on the structure of the mesh in this case, because you would have to convert it back to three values: Height, Width, Up-Direction (per face/surface). Aug 1, 2022 at 7:45

Unfortunately, since you haven't shared your mesh, I can only make guesses, and you may need to make some adjustments to make this work for you.

Anyway, one possible solution could look like this:

The wall simply consists of vertically standing faces, with the lowest edge resting on the ground plane.

1. First, the faces selected by vertex groups are separated from the geometry.

2. All points above Z $$0$$ are removed from this geometry. This leaves the horizontally running curves.

3. At the same time a value for the height of the geometry is created from the Bounding Box.

4. Both parts are then converted into curves. The following mechanism is used, where I subdivide the curves according to its length and a given radius for the hexagons:

5. The curves thus subdivided can then be further processed well. So that no objects are created at the lateral edges, the starting point and end point of the horizontal curves are removed.

6. Then the vertical curve is istantiated along the points of the horizontal curves.

7. After converting the instances into a mesh, the intervening points that are not necessary for the hexagonal pattern are removed.

8. The rotation for the cylindrical instances is generated from the normals of the original faces.

9. In the end, just instantiate cylinders/circles at the points and cut the mesh accordingly.

Here is the node tree:

(Blender 3.2, Sample scene included)

Update

And here's a hexagonal grid along certain faces selected via vertex groups, for those who are totally nuts and really want to do this to themselves:

(Blender 3.2, This file contains only the new scene)

For the implementation I simply used the technique shown above, but captured the width and height per face individually and created the hexagonal grid per face accordingly.

...I recommend a more powerful Computer for this crazy setup!

• Thank You, I didn't share the Mesh because I hadn't started yet, I was trying to figure out if it could be done before starting. Aug 2, 2022 at 9:25
• @medafan53 I updated the answer and added some stuff that might help you. Have fun with it! Aug 4, 2022 at 21:29