Deforming an edge loop with a curve

While creating a few simple 2D shapes, I thought it might be nice to control certain edge loops with curves. I started by creating a vertex group from this selection:

image

Next, I created a curve (its origin is at the 3D cursor’s position):

Then I added the curve modifier and adjusted the settings (curve, vertex group, axis) accordingly.
Expected result: the vertices snap to the curve and are deformed accordingly when I edit the curve.

However, this happens:

image

The first few vertices are somewhat correct but after that it’s all a mess. My first guess was that the Deform axis was wrong but this is still the setting with the best result and rotating the curve’s origin isn’t helping either. (The mesh’s origin doesn’t seem to matter at all.)

Another guess was that the curve’s radius is just too large. Increasing it makes matters worse but decreasing it to almost 0 didn’t help either.

So, not getting it to work isn’t such a big deal but I’m still super curious to know what it is that I missed here. It seems to be such a basic and straightforward thing… Any insights are appreciated.

curveDeform.blend (864 KB)

1 Like

Hello!
Curve modifier is used to curve normally straight things - imagine how it takes the chosen axis of the objects coordinate system and bends it along the curve.

You might need a different method of controlling those edge loops, or a different way of creating them in the first place - depending on your needs :thinking:

1 Like

I just had some success making Hooks for a mesh’s vertices and then parenting said Hooks to a Curve’s vertices (bypassing the modifiers altogether). That gives you the option to control a preexisting Edge Loop with a Curve, but in order to get the full benefit of the Bezier handles, you might need to do some further experimentation.

1 Like

you can do this with geometry nodes, by using proximity, adjusting the position of the closest vertices to the curve, set snap to it.

g03

5 Likes

I see, thanks for helping me out! I was already suspecting that I’m doing something fundamentally wrong. Never used the Cuve modifier a lot before.

@dimitarsp nice, I initially dismissed the Idea to use geometry nodes because I thought it would be an overkill but this solution might actually be useful in a lot of cases!

edit: I simply used my vertex group as input and connected that to the Selection socket of the Set Position node. Sure has its limits but works OK for such a case.