How to procedurally displace / deform curve points?

Hello all,

I’m coming from C4D and trying to learn Blender. I recently had this setup to do for a project, but tried to do it in Blender without success… I am not sure if it would be better with Geometry Nodes or with well used deformers.
The goal of the setup is to animate the ribbons like an ocean wave.

My approach in Cinema 4D was:

  • Create a subdivided spline (curve)
  • Duplicate it in a array
  • Create a subdivided plane, that I wrap on the curves (using C4D’s spline wrap deformer)
  • On the curves, use a “Plain effector”, telling to shift points upwards, but that I restricted with a spherical falloff
  • Another plain effector shifting the points backwards, restricted to a capsule falloff

I have been thinking about doing this in GeoNodes, getting reference to points, using a SetPosition node, but don’t know to handle Falloffs neither how to wrap planes on the curves.

Thank you in advance for your insights, I’d love to be able to do this in Blender for future client projects !

This is how I would approach it:

  1. start with a mesh line in geonodes
  2. displace the points based on the distance of a point to an empty, using a float curve and two multiplications to define the falloff
  3. use subdivision surface to define the final resolution and create smoothness
  4. convert to curve and then back to mesh with a line as profile curve to create a band

curve_deform_geoneodes_3.4.1_v02.blend (864.3 KB)

Thanks a lot ! It makes me discover the Mesh Line node, I did’nt even know it was a thing.

Your approach indeed works nicely. But how could I control the falloff with a more precise and 3D shape ? (in my example the sphere and capsule shapes play an important role in the final shape).
The problem is also that when doing an Array, the empty only offsets the points of one curve at a time. I tried to use an object but it doesn’t take its shape into account and works on only one spline at the time anyway.

  1. regarding multiple strips: you can use instancing within geometry nodes to create multiple versions of a single object, do not forget “realize instances” in this case

  1. I guess an adjustable spherical falloff can be achieved by using the size of the empty as an additional input:

    image

but if you want the rotation of the ellispoid to have an effect, more involved math is required.

curve_deform_geoneodes_3.4.1_v03.blend (931.5 KB)

2 Likes

@LordoftheFleas Thanks a lot ! :pray:
This exactly what I was looking for. I really like GeoNodes’ approach. It might take a bit more time to setup, but then you really have control on everything !
Whereas in C4D it’s fast to setup but it can be incredibly painful once you get into complex rigs, and sometimes not even working properly.

I’m still a bit confused about these chains of subtract - divide - multiply etc, I mean I understand it’s just not natural to me but I will get there.

Have a nice day !

No problem! Another 2 points:

1)Effects of rotation of the ellipsoids can be achieved by rotating the difference between the geometry position and the empty position by the empty’s rotation

  1. I am not sure how the “capsule” falloff works, but I assume it basically implements the distance to a line segment. This can be done in geometry nodes by instancing such a line segment and using geometry proximity to compute the distance:

  1. If you want to create a visual representation of the capsule, you can also do this in geometry nodes:

The idea here is that a pure scaling in y direction only affects the length of the line represented, i.e. it only affects the displacement of the half-spheres (does not turn them into ellipsoids):

curve_deform_geoneodes_3.4.1_v05.blend (1022.3 KB)

2 Likes

@LordoftheFleas Wow, amazing :smiley: :pray: I’ll have a deep dive into this !
That’s my first post here I think, what a great community ! I hope to be able to help and share about Blender in the future.

1 Like