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

  • 1
    $\begingroup$ Does this answer your question? Duplicating light along path in blender 2.8 $\endgroup$
    – Emir
    Aug 9 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
    Aug 9 at 12:58
  • $\begingroup$ @Emir .. almost, but no scaling. $\endgroup$ Aug 9 at 19:31

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.

  • $\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
    Aug 10 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$ Aug 10 at 8:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.