Voronoi subdivision mesh after form finding

I’m struggling to find how in this video he obtained the mesh with voronoi cells as output from the form-finding. What I was able to do is with edges as you can see.
If anyone know how he converted the geometry into mesh in order to get that mesh as result would be very helpful to me.

Another thing: in the video they use attractor points to create openings and until now I have used attractor point to scale surfaces, never for this reason. Is the process the same?Voronoi subdivision.gh (19.6 KB)

Thank you.

1 Like


This isn’t exactly the same but might get you closer - it uses Kangaroo 2 and a bullant component at the end to easily re-make a network from affected lines. Probably good enough if/for form-finding?
voronoi_form_finding_no_mesh.ghx (324.6 KB)

Hope it helps!

oh, forgot to add a trimmed brep example, same difference:
voronoi_form_finding_no_mesh2.ghx (337.7 KB)

Thanks a lot,
I need to install bullant before to try.
After this process will I get a surface?

Thanks a lot again,

As stated before this isn’t the same as what’s in the video but similar - you can try it without bullant for form-finding purposes, it just won’t make network patches at the end without it but the rest of it will still work. You can still make an Ngon mesh at the end from the lines, or a normal mesh from offsetting the voronoi cells.

Beside @René_Corella brilliant example, you can also take a look at my solution:

marinellacontestabil.gh (29.6 KB)


though @Mahdiyar also provided you with an elegant option, yes you can get a surface, or surfaces, from the polygon patches (using bullant) or from the mesh produced from the lines using weaverbird.
voronoi_form_finding_no_mesh2b.ghx (470.7 KB)

Using polyline network (thickened mesh):

weaverbird’s mesh from lines + smoothing:

1 Like

Thanks a lot,
I’m gonna definitely try both!

If I wanted to planarize voronoi cells, could I include planarization within the process?

thanks a lot,

For meshes like this with mostly hexagonal faces combined with negative Gaussian curvature, planarization is not easy at all, and it isn’t generally possible simply by adding planarization goals.

That approach can work well (with just a little bit of smoothing or other goals to keep the faces from distorting too much) for quad meshes, or hex meshes with all positive curvature, since the points often don’t have to move too far across the surface to make the faces planar.
With negative curvature and hexagons though, some of the faces need to become non-convex, and this doesn’t happen spontaneously during relaxation. There was a thread about this recently here:

Thanks for the answer but in the case I have positive curvature and I want to apply the same process for voronoi shells with this kind of supports, the process in “PlanarHexShell” is still valid?
(I suppose- but I’m not sure-in this case I can use also the planarization process without Kangaroo 2.5 but with an older version too).

voronoi positive.gh (20.1 KB)

This should work:
planar_shell.gh (24.5 KB)

It has 2 relaxations - the first for the form-finding of the shape, then use the data-dam to pass it to the second stage with the planarization. Start with the slider for planarization low, then slide it up to enforce it as a hard constraint. Finally click the last data dam to pass to the planar surface component.

The shape of the panels could probably be improved if instead of using a random point distribution for the initial Voronoi, you used a more even distribution.


I have another question regarding the optimization through Galapagos. If I want to start from the example of @Mahdiyar how I could set the variables in the design process to carry out an optimization of the Voronoi diagram. I try to do this in order to minimize nodal displacement but I’m not very sure that I really act on the Voronoi diagram.

Thanks a lot,