I would like to duplicate an object along a path, and also have the ability to manipulate the orientation of each instance individually.

Expected result:

enter image description here

Like in the picture above, where each object's orientation is determined by some unit vector defined somewhere, and possibly each object is just an instance of a duplication.

What have I tried #1: mesh & dupliverts

Parenting the object to a mesh, and selecting "Duplication > Verts" on that mesh, results in all the objects having the same orientation:

enter image description here

I'm not sure what happens exactly when I enable "Rotation" under "Duplication":

enter image description here

I know it should be possible to make the "vertex normals" count, but I don't know how to do that, and how to control these normals.

What have I tried #2: curve & dupliframes

Parenting the object to a curve, enabling "Duplication > Frames" on the object ("Speed" un-checked), then changing the "Frame number" in the Curve setting to match the number of Bezier handles.

This would be a worse solution, as the duplication would happen at each 1/n-th of the curve length, not at each Bezier handle. However, it doesn't work as the duplicated object don't seem to orientate according to the Bezier handles:

enter image description here

What I'm looking for

A solution that uses duplication, modifiers, standard mesh editing tools, or even python¹ would be appreciated. Consistent results are crucial!

Using particle systems wouldn't be great, as it's complicated to have fine control over each single particle/hair.

Please no animation nodes, as I can't seem to fully comprehend the pipeline. It'd be fine only as long as the solution is guaranteed to be the same, and already evaluated, every time I open the file, and static at every frame.

If I can't obtain this, I'll have to just manually (or via script) duplicate and adjust the objects, which is nonoptimal as the file size and memory usage would increase.

¹ I'm thinking of something like my attempt #1, where the orientation is linked (how?) to the vertex normals and python assigns these normals, if there's no GUI way to accomplish this.

Edit: @Lemon's suggestion (particle system)

One way to introduce some control on the orientations is to create a mesh with N vertices, assign a particle system to this mesh with

  • "Render>Object"

  • Emission: Number = N, Emit from: Verts, "Random" un-checked, Velocity = 0, Physics = No, Rotation enabled.

enter image description here

One can then play with the "Rotation" settings.

However, having control over "Rotation", in a way not limited to "Phase" and "Random", is what I need. I can start from one of these settings, but then I need to be able to control and adjust some of the particles.

The file


Updated with @Lemon's suggestion:

  • 1
    $\begingroup$ Particles system works. Draw a line (mesh) with n vertices. Set your shape as dupli object (render panel of the PS). Set the PS emit from verts with no random and set the particle amount to n. Now you can play with the rotation panel of the PS (either velocity or phase or random + the initial orientation that can be chosen). $\endgroup$
    – lemon
    Mar 12 '18 at 12:21
  • $\begingroup$ @lemon this might actually solve part of my problem, i.e. giving different orientations (thanks for the tip!) but it doesn't allow me to have control over each single instance, or does it? I can't seem to be able to "comb" these particles $\endgroup$
    – Nicola Sap
    Mar 12 '18 at 13:05
  • $\begingroup$ So another suggestion: a curve plus a plane with array modifier and curve modifier. Then make your mesh dupliface of the plane and adjust the rotation using the twist of the curve (edit mode for the curve, select a vertex and ctrl+T to twist). There is no random here but you can control "all" by adding as curve vertices as you want. $\endgroup$
    – lemon
    Mar 12 '18 at 14:22
  • $\begingroup$ @lemon nice! Unfortunatly I'd be bound to having constant distance between each instance. (I know I'm too demanding!) $\endgroup$
    – Nicola Sap
    Mar 12 '18 at 14:28
  • 1
    $\begingroup$ Related blender.stackexchange.com/a/163958/15543 see bottom example. Can set vert normals. (Hassle IIRC the normals are lost if vert mesh is edited. Haven't looked at new point cloud object in 2.9) $\endgroup$
    – batFINGER
    Dec 22 '20 at 15:25

Your Answer

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

Browse other questions tagged or ask your own question.