3D-Voronoi geometry structure?

Hello, I’m looking for any pointers for a way to create a Voronoi geometry structure/fill inside a given simple mesh (a box, a cylinder) with an algorithm. The closer the effect to this or this, the better. I appreciate the author used multiple tools to achieve this. But how would you start? Thanks.

How familiar are you with Houdini? It’s surely is doable to do in threejs/webgl (I’d do it in my own Polygonjs, but there are a few nodes I would still need to code first)

Here is a Houdini example scene file in the mean time (Do let me know if that’s not what you’re after).
voronoi_web.hipnc (133.0 KB)

But in summary, the steps I’ve used are:

  • scatter points inside a volume
  • use those points to create a voronoi (which is typically used to fracture objects)
  • remove all polygons, keeping just the edges
  • use polywire to create tubes around the edges
  • add a subdiv to give it the organic look


Hey @gui, thanks. I’ve downloaded Houdini free and managed to replicate the steps, although am not sure what some of them do (vdbfrompolygons, ends). But I got the basic mesh that has a potential to be taken further. About that – how can I export the mesh, so I can 3D-print it?

Also, how can I modify the scatter points to have them concentrated more in the middle of the volume?

But thanks for introducing me to yet another 3D software :slight_smile:

So vdbfrompolygons will convert the polygons a vdb, which is a volume representation. It outputs voxels, not polygons. You can middle click on it to see what it creates.
And ends, in this case, is set the convert the polygons to ‘open’, meaning you will only get the lines or wireframe, not the polygon itself.

Regarding 3D printing, I don’t have enough experience with that to help. But I think you’ll need a fully closed geometry. Even though that might already be the case, I’ve added another vdbfrompolygons, followed by a convertvdb, to convert back to polygons. This will ensure the geometry is closed.
Then maybe you can just export it as an obj? (Right click on the node, then save->Geometry)

As for having more points in the center, you would need to edit the first vdb to have the voxels in the center with a higher density. The scatter node will then create more points around the denser voxels. Here is another file, where I’ve created a volume VOP, which allows you to affect each voxel as you want. If you go inside that node, you’ll see a metaweight plugged in the density. This will lookup the metaball, and add density where it is.
But there are many other ways to do a similar operation. You could simply move a sphere in the center and use the scatter node on it. That may give you a similar result.

Ah, you’ll see I’ve also added some nodes to handle the attribute creaseweight on the left of the graph. This is for the subdiv node. It seemed that it was making the edge of the box a little too curvy, so that can control it a bit.

Hope that helps. Let me know if any is not making sense. And do post the picture once printed, I’m curious. It could look very nice with a translucent material, or with a light inside.

voronoi_web_more_points_in_center.hipnc (179.7 KB)

Thanks, that looks much much better. I need to dive into the “creaseweight” attribute as this gives different results in my case. Also, there’s this unexpected polywire sticking outside the volume – not sure why. But looking great, nonetheless!

MMM_T_Voronoi.hipnc (188.7 KB)

1 Like