Salt crystal weathering mimic

Hi, Please find attached the image, in this image shown here is aftereffects of weathering of salt crystals bed in California!,i was wondering if something like this can be mimicked in grasshopper?

any lead in a correct direction would be appreciable,


  1. Get a gazillion of points (LIDAR or “fake”) and make a terrain (triangulation) . Do not use Delauney (use some very good and fast Ball Pivot algo). Better: use some top subdivision app (the likes of Modo) and/or MeshLab (free) and/or whatever available.

2A. Remove mesh faces according some logic (attractors or other) in order to achieve the weathering effect.
3A. Get the Edges and try ExoW (very tricky) or Intra Lattice or Modo or MeshLab or whatever. But on the other hand ExoW handles only edges while you need to thicken faces and edges as well.

2B: Forget thicken and do not remove faces - just do a “sheet” : “distort” inwards face collections (of variable size) mimicking the holes.If you paint the sides and the bottom black and the rest white … what’s more to ask? In fact I have a C# that does that but what was the def name???

If you have big N of points (therefor mesh faces) you’ll need a cetrain computer power (CPU and GPU). Anyway in the old GH Forum there’s various threads implicitly or explicitly related with “similar” matters. Do some search there.

1 Like

Maybe try Cocoon:


I have done that with noise

see there


Using voxels from Mesh Tools you can make a dense block of points, remove points via curve path attractors, assign a voxel to each remaining point, then smooth the results. In this video I removed the voxels via a curve oriented with the rhino camera but the same can be done with any path of curves.


Nice things all these. But what about a privitive real-time (on some i7) thingy? I mean something whithin my max upper limit to wait a computer: say 50-100 milliseconds.

Here’s a preview of the crudest (of crudest) solution known to man:

  1. Using Mesh Mashine on a given surface do some mesh with a gazillion of faces. Optionally distort that (mesh normals) acc some min.max value.
  2. Spread random points on the donor surface. Do not use David’s excelent PopGeo thingy since this does a (mighty) job for “even” distribution and we … er… need crude things.
  3. Sample the mesh face centers into a List.
  4. Sample in a DataTree the (random min-max) prox points from List 3 (and their indices) using each random point from List 2. Point3dList is the fastest way to do that.
  5. So we have the “hole” faces (since we have their indices) and the only thing remaining is to move randomly inwards these (taking care for some transition for the lips). and do some bridging with the surface mesh faces.

Crude? Stone Age? yes … but real-time. More tomorrow.

1 Like

Alright! This was something really cool stuff. I really liked daniel’s cocoon option. Tho i need to do bit of a study on coocon. I never used it.

C# lost (blame advancing Alzheimer and tons of Vodka). New C# under way (~50%).

The 1Z question: After the preparation (of this and that) … in the remaining 27 milliseconds can we distort the mesh and paint the caves/holes pink? That’s the big challenge for the brave caveman.

Bring me a Cray.

Hahaha yea can paint PINK in those last 27milliseconds😅

Deep in the pink abyss lives the PinkSaur (The Merciless): nasty prehistoric beast with 3 ears.

Woah nice… could you share the script? :nerd_face:

You must publish here a genuine and passionate Ducati hymn in order to get it. Bad words related with Honda/Suzuki/Kawasaki/Yamaha and the likes are strongly encouraged.

In the mean time: there’s several boolean toggles that allow basically 3 modes:

(1) Do nothing (best option if you ask me). You just see the MeshMashine made mesh (resolution is controlled there) out of a valid BrepFace .

(2) Preview .You set values for random points (on the BrepFace), how many Mesh Faces (min/max) you’ll get near these and mesh or caves (min/max) distortion depths. Random points are NOT using David’s even distribution logic yielding a more chaotic result. Expect ~75 milliseconds for that.

(3) Distort : 3 modes available. 3.1 Distort the mesh, 3.2 Distort the mesh and the caves. 3.3 Distort the caves. A flip option does mountains instead of caves. Note: attempting to change the pink color may cause the activation of the PinkSaur virus that would destroy your computer (and you). The virus part is written with invisible characters (C)™.

Keep in mind that the thing is just an oversimplified distorted sheet that gives-up almost everything in pursuit of the real-time response (for very heavy meshes expect ~500 milliseconds).

Moral: no pain no gain.

1 Like

Hi laurent
i tried the rock cellular def but i can’t reach the erosion result like the pic i mean the cavity part . Does the cavity has to do with simplex noise part ?

Yes cavity means use of noise and Isosurface (Millipede here)
I added a faster version here, see last script

great help , so how is it applied to ones referenced geometry , ( cause milipede’s iso surface works cubic ) ?

yep got it :)) it’s about the values and the input mesh
Thanks a lot