Randomly Generated Wavy Surface

I am working on making a large headboard and would like to CNC mill a random looking wavy texture into it. I have a script that can generate something close but its not quite there.

I am able to set the size of the workable rectangle. From there I can generate a list of numbers for each side of the rectangle and have it split however many times I input. The list for each side sets the min and max for the waves and they intersect throughout the surface. All I do is set the rectangle size and randomize the gene pools for each side of it, then I can bake the surface.

My problem is I cant figure out how to split each side of the rectangle randomly. Currently I can generate a nice wave field but you can clearly see a grid pattern throughout since each side is being manipulated from the same points.

Attached is an image of what I am going for and my current output.
Any suggestions?


I see five curves being connected to Network Surface, not four? All four edges of the rectangle have the same number of points? And I see no evidence of “randomize”?

The fifth curve is one coming from the gene pool labeled center, but I am not using it as it wasn’t doing much, I have it turned off. Yes currently all sides have the same amount of points.

For randomize, I am just randomizing the gene pools by right clicking on it and “randomizing 100%”.

This is an effort to simplify the code “The Grasshopper Way” but you can still see a grid pattern… :thinking:

WAVY SURFACE_2023Feb28a.gh (12.7 KB)

P.S. This surface (“normal”) is facing down. You can flip it be swapping the U and V inputs.

P.P.S. Two more randomized methods but that grid look remains.

WAVY SURFACE_2023Feb28b.gh (17.4 KB)
WAVY SURFACE_2023Feb28c.gh (16.8 KB)

1 Like

I wouldn’t do this with Grasshopper, but rather with just a simple Noise texture for displacement.

1 Like

WAVY SURFACE_2023Mar1a.gh (18.8 KB)


See this as well
Parametric Pattern

SubD approach could also be a way (SubDFriendly base curve, rebuilt with 75 CP in Rhino for this example)

SubDWaves.gh (15.6 KB)