I'm trying to create a row of street lights, both the lamp pole and a spot light. Since i can't simply join these two and use an array + curve modifier to set this up (using an array modifier + a curve modifier always deforms the mesh) so i came to the conclusion that working with collections and instances would be my best bet.

To get to my current result i parented the spot to the lamp mesh. Then i parented those two objects to a plane. after that i parented the plane (and so also the lamp mesh and the spot) to a curve that i converted to a mesh. I then activated Instancing for the curve with verts which resulted in something like this:

enter image description here

As you can see the lamps all face the same direction, while i want them to be rotated inwards. There's an option for 'aligning the objects to vertex normal'

enter image description here

but enabling this exposes a multitude of problems:

  • Problem 1: it turns out there's two instances of every object. (i have no idea why)
  • Problem 2: the street light meshes get deformed.

enter image description here

  • Problem 3: the actual lights all face toward the same place

(I drew over the lamp directions with blue arrows for visibility)

If anyone knows how i can get this to work i'd really appreciate it, but other techniques are welcome too.


You almost got it. You can do it by using an array + curve modifier, you just need to use the plane as an instancer.

Select the plane, add an array modifier and set the length to "fit curve", and set your curve. Add a curve modifier, set it to your curve again. Make sure to parent the lamp post to your plane, then go to the plane's object properties and select "Faces instancing". Here you go : enter image description here

Note that this will not work well if you use a 3D curve.

| improve this answer | |

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.