21
$\begingroup$

Following this question.

Since you can't use an array modifier on lamps, how can you create an array so that all lights are clones of the same original and can be edited as one?

$\endgroup$

2 Answers 2

35
$\begingroup$

Start with a plane that has the proportions of your lamp, enter edit mode and do loop cuts CtrlR so you end up with as many vertices as you need lights.

enter image description here

Set instancing to Verts.

enter image description here

(for versions 2.79 or older) Set the duplication to Verts.

enter image description here

Add a spot lamp on the same place as your plane.

enter image description here

Select your lamp, then shift-select your plane and press CtrlP and select Parent to Vertex

enter image description here

You have now an array of lights!

enter image description here

enter image description here

To have the array follow your plane's rotation select the lamp and add a copy rotation constraint.

enter image description here

enter image description here

Note that the object doesn't necessarily have to be a plane, it can be any shape you want and it doesn't even need to have faces, as the lamps are controlled by vertices.

$\endgroup$
3
  • 1
    $\begingroup$ and adding/removing vertices gives control on the number of lamps. Easy scaling/spacing...Very nice! Can be subsurfed! :) (for test/final render) $\endgroup$
    – Bithur
    Commented Feb 8, 2015 at 0:18
  • $\begingroup$ i was able to change the plane to a set of 3 vertices on a single line (no longer a plane technically), then added modifiers to the plane to create an array of sets of lights that i used to illuminate a bank of warehouses. $\endgroup$
    – neoscribe
    Commented Oct 14, 2015 at 6:52
  • $\begingroup$ @neoscribe indeed you don't need a regular polygon, since you are just using the vertices to attach lamps to it. $\endgroup$
    – user1853
    Commented Oct 14, 2015 at 13:28
1
$\begingroup$

Valid for 3.1.

Lights must be anchored to an object, but you can use an array as well to create the anchors. The advantage is you can manage light locations and number using the array modifier parameters.

(With recent versions of Blender it's also possible to use geometry nodes to instance lights on vertices as explained in this Q/A.)


As the most simple anchor is a vertex, just create a mesh with a single vertex, then apply a modifier to create the array:

enter image description here

In the example above two arrays are used to create a grid of single vertex objects.

Then follow the process already explained in the currently selected answer, i.e.:

  • The distance between light origin and object origin will determine an offset for instances we're going to create. This offset is usually not desired, so move the light to the single vertex object location.

  • Parent the light to the object by last selecting the object (parent). Reminder for parenting: In object mode, Use Object | Parent | Object (shortcut Ctrl p). You can also drag-drop the light object onto the parent in the Outliner:

enter image description here

  • In the object, switch Instancing from None to Vertices. The child light is now instanced for each vertex of the parent (here only one vertex), and because the light is now part of the vertex, array modifiers duplicate it as well:

enter image description here

$\endgroup$

You must log in to answer this question.