Generating karst-like structures

Hello,

I’m experimenting with sculptural geometries inspired by the aesthetic and procedural logic of Filippo Nassetti — especially his karst morphologies.

My intention is not to copy his work, but rather to understand the method and apply similar principles in my own design explorations.

What I have so far:

  • A base surface subdivided into a grid (using LunchBox or Isotrim).
  • Cell centers extracted.
  • Scalar values generated using 4D Noise plugin.
  • Blocks are extruded (via Extrude or Box 2Pt) vertically along the Z-axis.

The issue:

Currently, the elements rise strictly along one axis (Z), forming a terrain-like structure.
However, in Nassetti’s work, the blocks detach from the surface and extend into space along a consistent vector — producing a volumetric, porous morphology, like “feathers” or “plumes” drifting off the base.

What I’d like to achieve:

  • Displacement of blocks along a custom vector direction (e.g., X or surface normal).
  • Use of the noise values to drive both displacement and extrusion length.
  • Construction of elongated box shapes from a base point to a displaced point (not just extrude up).
  • Ideally, merge the elements into a mesh structure (using Weaverbird, MeshEdit, etc.).

Any advice, tips, or examples on how to approach this would be appreciated!

Thank you in advance for your help.

Karst.gh (17.7 KB)

No immediate thoughts on the generative bit, but I wonder if you’d find a voxel plugin like Voxeltools or Gelatinous Cube useful? https://www.food4rhino.com/en/app/voxeltools https://www.food4rhino.com/en/app/gelatinouscube

@Tom_Newsom thank you for the suggestion! I’m familiar with these plugins — I’ve worked with them before and I understand their capabilities quite well. They are indeed useful when you already have a predefined form or volume and simply need to voxelize it, adjust the cell size, and produce a “pixelated” structure.

However, my task is a bit different:
I’m trying to explore the generative logic itself, driven by noise functions, vector fields, directional graphs, and procedural rules that control how the structure grows. With voxel plugins I could model a final form manually and then “wrap” it with cubes — which works, but the geometry remains static and manually crafted.

What I need is for the form to emerge from the process, not appear before it.

Still, thank you for replying and suggesting an option — I really appreciate it! :handshake:

I saw a similar discussion earlier, in this thread:

It also deals with generating a column-based, pixelated structure, and in some ways the logic overlaps with what I’m trying to achieve. However, the key difference is that in all those examples the “pixel” elements grow directly from the base surface, remaining strictly attached to it.

In my case, the idea is different:
the structure should detach from the plane, move into space, and start forming a three-dimensional, porous network driven by noise functions, vector fields, and procedural growth rules. In other words, I’m looking for a truly generative, spatial system, not a set of columns extruded upward along Z from a single surface.

So while that thread is helpful as a general reference for voxel-based workflows, it unfortunately does not address the type of spatial offsetting and “lifting” of geometry that I’m trying to achieve.

The example in the first image I think could be generated with several overlapping 2D Perlin noises. One very large scale to give the gross shape (tall on the left, short on the right). Then a medium scale one (say, 1/4 the wavelength?) to make the major peaks and troughs, then a finer scaled overlay with non-uniform scaling to generate the “plate” features (which look like they are rotated from the pixel grid). Maybe do this twice with subtly different parameters to generate the “front” and “back” elevations.

There’s definitely some voxel-like processing going on though I think, because it’s not a stack of perfect prisms. There are some small overhangs and voids. Maybe there’s a third layer of noise - very fine grained and with the threshold turned right up so only a few voxels get removed?

Quick photoshop mockup:
(brightness values not to scale)

This’s a cool idea, and I definitely see some hidden potential in this approach.
I’ll try to explore and test it on my own — looks really promising.
If I manage to build something from it, I’ll definitely share the results (and if I get stuck too).
Thanks again for taking the time to explain this so clearly! :handshake:

Hello

some noise models have already some sub scale noise by using octave, lacunarity and gain. Also they could have some tools to deform like Warp. This is present in Fast Noise Lite

Gain = 0 (Left) Gain =0.5 (right)

But it is also a good way to make cumulative noise like advised by @Tom_Newsom

Nautilus

kartz like.gh (28.0 KB)

Fastest version using Mesh Extrude from Lunch Box

kartz like NAutilus LunchBox.gh (29.9 KB)

Feels like I’m creeping up on it, but it takes a lot of parameter tweaking.

I think there should be a more fundamental relationship between the plan view shape and the overall height map, but I have no idea what it is. I’m just using a very simple subtraction of one noise threshold from another. You have to tweak them into place to get a “sensible blob” (shown in blue below) and that blob is completely independent from the height map.

Karst Noise.gh (18.8 KB)

Wow :grinning_face:

I’m glad you like it :slight_smile: but it’s not a very elegant method. Feels like I’m fighting against it rather than spinning the wheel and producing thousands of them each as pretty as the last. Maybe that was the case for Nassetti too but, judging by his website, he has a very firm grasp of generative design and probably came at it from a different route.

You could always ask? :smiley: