Curve displacement with Geometry Nodes

For one of my projects I needed to connect two sets of points with curves and then displace those curves with a noise. Sound simple right? Look at the image below. It’s not. At least not until we had Geometry Nodes.

Before I made what you can see above I did couple tests with old particle system that we have in Blender. And the results were quite good too. Here is 5000 curves drawn by a particle system with outside rectangular emitter, turbulence fields and central attractor.

The main problem with particles is that you can precisely control from where they are spawned, but not where they will die. At least not with the amount of precision that I’m looking for.

If you look closely there is a similarity between above setups. Curves starts at the edge and end at the center. The difference is that with the first system we have full control over how and where curves terminate. With the second system we don’t. Both effects are valid, and can serve different purposes, but it’s really good to have both.

Then how are those curves deformed? Well lets start from the beginning. First we need two sets of points that will determine where curves should start and end. All we need are two guide curves, or in this case extruded vertices. It doesn’t matter if the guide curves/meshes have different length, and number of verts:

Now we need to create new object that will serve as a base for GN setup. We import both previous guide objects, convert them into curves, resample them and spawn new curve line instance on every point of one of them.

Next steps are:

  • setting instanced curves end positions to second guide curve
  • resampling instanced curves
  • finding their middle segment
  • applying displacement to all instanced curves
  • creating falloff effect that takes into account instanced curve length and starts from the middle segment

Rest of the work is to play with noise values, polish the setup and multiply entire thing by the number of instanced curves. In this case - a thousand times.

Last step is to have fun with it:

Shoutout to @higgsas for his nodegroups with spherical falloff!