Describe this force field type pattern please


I can’t see most of what you’re doing. sorry. One thing jumps out though… in my code, SDivide is well before SrfGrid, not after it as in your code. The damping takes place before SrfGrid as it affects the height of the points that define the “ripples”. It looks like you are creating a grid of points using ArrLinear instead of SDivide?

if you are OK to work with mesh there is not a great difficulty to do what you want.
Begin to work with coarse mesh (triangular or quad) then when happy go for more refined mesh. (37.3 KB)

Subd version


Hey @laurent_delrieu, thanks for providing all these details. For some reason, no matter what input I change, the middle portion of the plane remains empty. Do you know what is causing this?

In order to be helped, it is best to post the script.
I just think this is a scale problem.
There are 2 differents scales
Scale for the Sinus/Cos and scale for the noise.

Math.Sin((pt[i].X + att * noise[i] / 2.0) * a)

If only sinus

Math.Sin((pt[i].X) * a)

There is a period that is

2*\pi = period * a
period = 2*\pi/a

a=0.25 => period = 6.28/0.25 = 25

@laurent_delrieu Thanks for the quick response. Yes, I’ve realized that my scaling was way off and I’m able to get a clear pattern now. The last problem I have is that there tends to be some faded or empty sections of the output (see photos). Is this also a scaling problem?

Noise on Quad (59.9 KB)
Noise on Quad Mesh.3dm (199.3 KB)

Not easy to say, it seems that the example you provided doesn’t generate the last picture.
As the last part of equation is Math.Pow(Math.Cos((pt[i].Y *att * noise[i] / 2) * a), 1) / 2.0 there is an effect of Y coordinate. You could add a variable say y0 to do Math.Pow(Math.Cos(((pt[i].Y-Y0) *att * noise[i] / 2) * a), 1) / 2.0

Try to deconstruct the equation to see what it outputs. I generate them a bit randomly. If it was OK I keep them but I didn’t document them (such a shame).
Power of 2
Power of 1

1 Like

Hi together,

I am trying to build a sole with the script from Laurent. Is there any way to keep the edges and in some way influence the “waves” in their position and direction?
Thanks a lot for your help.
250222_Sole.3dm (1.1 MB) (41.3 KB)

Bildschirmfoto 2022-02-25 um 12.41.34


A little bit late at the party :sweat_smile:
but could be helpful for others.
To make a smooth border, I use Mesh Edges to get the edge.

You can change the distance and the type of transition.

You can offset without making solid. Here using Pufferfish plugin. But could be done easily with legacy components.
So you’ll have 2 meshes.

As these 2 meshes have same topology linking them is easy. Just use that.

Then glue the whole thing

Using this you don’t change the noise pattern but the way pattern (960.9 KB)


I’d missed this. What a great application! Good work as always @Laurent

Thank you very much @laurent_delrieu! It’s never too late for anything!:slight_smile:

can do this pretty simply:

rectangle pop 2d —> heteroptera noise field —> sample field at points —> remap tensor values to sin / other graph —> move points to normal or z or whatever

1 Like

Nice! Looks like there’s a weird pinch point in the centre but sounds like a much more simple way of achieving this effect!

just need to adjust the filed a little, fields are so random anyway,

can change the scale of the noise:

the pinch is just not enough definition in the sample grid:

scaling the noise:

height is mapped to whatever domain and graph you want

gaussian point charges:


This is a nice solution - it’s neat, easy to follow from the image you posted and has reasonable control over the final outcome so I ticked the solution box here even though there are other ways to do this kindly posted in the thread above!

Thanks again for sharing this and highlighting the Heteroptera plugin!

1 Like

Pretty happy with this as an oak frame… doesn’t need a picture!

Lots went wrong with this…
Mitre joints were appalling.
CNC Router Spindle died halfway through machining
Machined the pattern slightly too deep and needed some rework
Wish I’d tweaked the top left hand corner a bit to have closer ripples.



How about gluing the mitered pieces to make the frame before applying the CNC?


I did, but I didn’t pay attention to the flatness of the oak when I cut it and the mitres were terrible!

Many options, a) use the cnc to cut the miters, b) mill from a solid piece of wood, or c) incorporate the visible joint into part of the design aesthetic, or d) make joints a ‘puzzle piece’ fit, e) make the joints a ‘sine wave’ fit , f) the list goes on

Yes, I’ve done all these things in the past. b) is often not possible as pieces of wood big enough are either prohibitively expensive or do not exist. I’ve machined puzzle piece joints which looked good (getting the right clearance can be tricky)

What I did wrong this time was simple… The timber had been planed years ago and I assumed it would still be flat. Unfortunately there was a slight twist or bow which must have meant the saw did not cut at 90 degrees to the front face. So my 45 degree angle was OK but because the edges weren’t square it left and equal but ugly gap along the mitre and I didn’t have a proper clamping system that would close the gap.