Geometry nodes: How to make a curve meander like a river?

I have a mesh circle in the yz plane. The circle is the basis for a river on a ring spacestation. So i would like for the curve to meander a bit along the global x axis and a bit along whatever the tangent of the circle is at each point, but not along the normals of the circle. Using the set position node to randomize the curve vertices in the global x axis is easy, but how can i add random offsets in the tangential direction at each vertex?

The attached image shows a tiny segment of the circle on the left and i drew the shape i want to achieve on the right.

Did you know… 💡

A natural river goes in a straight line only for up to 3 times its width.

I tried to capture this logic, but failed to do so, apparently my river is too lazy at bending - of course it could easily be remedied by decreasing the $$3.0$$ multiplier at the very beginning, but then it's just an arbitrary number, ugh.

At least it seems to scale well with the Width:

• This solution is really nice. Wouldnt just increasing the handle length make it more bendy? Is there no option to scale the handle lenght? I tried the set handle positions node with the curve tangent node as input for the offset but that doesnt...work Sep 23, 2023 at 2:35
• @sinwar the straight segments actually come from the bends being too big - ever 2nd point is displaced by too much and that creates too long segments. so decreasing the magnitude of random displacements will fix that. Sep 23, 2023 at 7:52
• No its not that. I found the real problem that prevents bendyness: Offsetting every 2. point. If you Off set EVERY point the river gets VERY bendy. just remove the selection from the set position node and then alternate between every 2. point instead of every 4th. Sep 25, 2023 at 14:52

you get this:

with this node tree:

first part just creates some open circle instances:

then i just double them to the other site and random the scale:

with the stored "top point" i randomize positions dependent on the distance to the top point so that the points move like proportional editing

after that just some "roundings" via blur node and some radius randomness and curve to mesh.

MY final solution (modifiying Markus von Broady's suggestion to make the river more bendy):

It got sooo bendy that i had to set the modulo node to 3 so the curves wouldnt constantly cut through each other^^

• Very nice, I thought your 'fix' would make the bends ugly (kind of "V" shaped) but no, great result. Sep 27, 2023 at 22:31