3
$\begingroup$

I'm trying to create simple objects (e.g. cylinders) on a curve like a circle. The objects should increase in size but the distance between the objects should remain constant. Furthermore, I don't want the objects to be deformed while mapping them on the curve. I found several related questions, but they were outdated or missing one of the requirements I have.

For me it feels like something that should be rather simple, but I was not able to find a proper solution yet. What I found/tried so far:

  • The "hack" with duplifaces which apparently made this work in the past was removed from blender.
  • I tried to make an array of structures and map them with a curve modifiere on the circle. However, if I add an empty as the "object offset" (which seems like the way to go if I want to change the size), I get large deformations of my objects.

Without scaling of the empty With scaling of the empty

$\endgroup$
3
  • 1
    $\begingroup$ Does this answer your question? Duplicating light along path in blender 2.8 $\endgroup$
    – Emir
    Commented Aug 9, 2021 at 12:05
  • 1
    $\begingroup$ Unfortunately this does not answer the question. With the provided answer I can multiply the object along the path. But it's not possible to set the distance since it is based on the number of vertices and I would like to have a rather smooth cycle. Furthermore, I see no option of changing the size of the object with this suggestion. $\endgroup$
    – twife
    Commented Aug 9, 2021 at 12:58
  • $\begingroup$ @Emir .. almost, but no scaling. $\endgroup$
    – Robin Betts
    Commented Aug 9, 2021 at 19:31

1 Answer 1

5
$\begingroup$

This could be the right plumbing for your case:

  • Create the curve to be followed
  • Create a plane, an array of which will act as a mount for your objects
  • Assign the plane an Array modifier, (Possibly set to fit your curve)
  • Assign the array of planes a Simple Deform > Taper, along the array axis
  • Assign the tapered array a Curve modifier, deforming it along your curve.

Now, in the plane's 'Object' tab > 'Instancing' panel, set it to instance from faces, with 'Scale by Face Size' checked. The 'Factor' can be adjusted:

enter image description here

  • Parent your object to the array of planes:

enter image description here

You can adjust the interval, taper, scale factor, etc, and hide the instance original and the instancer from the viewport and/or renders.

$\endgroup$
2
  • $\begingroup$ Thanks alot! This seems to work very nice for my usecase. Just before reading your answer, I managed to find a somewhat similar approach. But instead of the Simple Deform -> Taper, I used an Array Object-Offset of the planes with an empty and scaled it in the process. Your method, however, is superior since it allows a constant distance between the cylinders and the height is not affected as much. Ideally, I would like to limit the scaling to the x/y dimensions but this is a optional. Thanks again! $\endgroup$
    – twife
    Commented Aug 10, 2021 at 8:12
  • $\begingroup$ Hi @twife ! Thanks. You did specify equal intervals.. :) There's also a way with Geometry Nodes, if you want to have more control over the scaling on the way along your curve, but it's a bit more complicated. $\endgroup$
    – Robin Betts
    Commented Aug 10, 2021 at 8:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .