Instancer
Scatter clones into a grid, a ring, a spiral, or along a path — and drive each one separately.
Instancer is the Repeater's bigger sibling. Instead of one transform applied over and over, you pick a layout — grid, radial, linear, fibonacci, spiral, scatter, or a path you drew — and it places the clones for you.
The part that matters: every clone carries its index. Drivers read that index, so a Random driver gives each clone its own wander, an Oscillate driver with Phase per copy turns a row into a travelling wave, and the force drivers turn the whole set into something that swirls or gathers.
When to reach for it#
- Crowds, confetti, stars, dot grids, bar arrays.
- Anything with more than about twenty copies where you want variation.
- Layouts that follow a shape — clones running along a curve you drew.
- Whenever you want a Repeater but need the copies to move independently.
How it works#
The layout puts each clone at a position. Then the per-clone steps run: rotation adds, scale multiplies, opacity multiplies, all keyed to the clone index. Then the deterministic randoms offset each clone by a seeded amount, so bumping Seed reshuffles the whole set but the same seed always gives the same arrangement — a render on the farm matches your preview exactly.
Drivers run last, per clone, with the clone's own index and position. That is why Instancer skips the normal single-pass driver step: applying drivers once to the source and again per clone would double the motion.
Stagger shifts each clone's time. Set it to 0.05 and clone 10 sees the timeline half a second earlier than clone 0, which is the cheapest way to turn any animation into a cascade.
Parameters#
Grid for rows and columns. Radial for rings and clock faces. Linear for a straight run. Fibonacci for sunflower packing, which fills a disc evenly with no visible rows. Spiral for an Archimedean coil. Path to follow a shape layer you point it at.
Grid only. The total is columns × rows, so 10 × 10 is a hundred clones. Past roughly 400 the DOM path starts costing frames; that is what the GPU render option is for.
Distance between grid positions, centre to centre. Smaller than the layer and the clones overlap, which is fine and often the point.
Shifts every other row sideways, as a fraction of Gap X. 0 is a plain grid, 0.5 is a brick wall, and anything between gives you the staggered look a plain grid never has.
Clone count for every layout except grid. On radial with multiple rings this is the count per ring, so 12 clones across 3 rings is 36 in total.
Ring radius for radial, and the outer radius for spiral.
The arc the clones spread across. 0 to 360 closes the ring and spaces clones evenly with no doubled clone at the seam. Any other span treats the first and last clone as the endpoints, so 0 to 180 puts one clone at each end of a half circle.
Concentric rings, each one Ring spacing closer to the centre. Ring spacing larger than Radius pushes inner rings through the middle and out the other side, which makes a rosette.
Rotates each clone to face away from the centre. On for clock ticks and petals. Off when the clones are text or icons that need to stay upright.
Degrees added per clone index, on top of whatever the layout did. On a grid this makes a smooth twist across the field.
Multiplied per clone index. Same compounding warning as the Repeater: 1.05 across 60 clones is nearly 19×.
Seeded per-clone jitter. This is what stops a grid looking like a grid. A little goes far — 10 px of position jitter on a 46 px gap already reads as hand-placed.
Reshuffles every random at once. Nothing about the arrangement is time-dependent, so the same seed renders identically in preview and on export.
Seconds of timeline offset per clone. Positive values make later clones lag. Combine with any driver or keyframe animation on the source to get a cascade for free.
Which clone paints on top. Normal, reverse, random, or sorted by distance from centre. Only matters when clones overlap — but when they do, near-centre-first is what makes a radial burst read as three-dimensional.
Recipes#
A wave of bars
- Draw one tall thin rectangle.
- Add Instancer, Layout linear, Count 24, Step X 22, Step Y 0.
- Add an Oscillate driver targeting Scale Y, Frequency 0.6, Amount 0.5.
- Set the driver's Phase per copy to about 20°.
Phase per copy is what makes it a wave instead of 24 bars pumping in unison. Without it every clone is at the same point in the sine.
Confetti that settles
- Draw a small rounded rectangle.
- Add Instancer, Layout grid, 12 × 8, gaps around 60.
- Push Random position to 30, Random rotation to 180, and pick a Seed you like.
- Add a Turbulence driver, Amount around 120, Scale 0.0025, Flow 0.4.
- Set Stagger to 0.03.
Turbulence reads each clone's position, so clones near each other drift together in sheets rather than scattering independently. That is what makes it look like air rather than noise.
Things that catch people out#
Add a driver to an instanced layer and it does not move the original — it moves each clone with that clone's index. If you wanted the whole array to move, animate the layer's own transform instead, or put the Instancer on a child of a Null and move the Null.
Set Layout to Path and nothing happens until you choose a source shape. The source stays visible unless you hide it, which catches people out.
A few hundred clones is comfortable. A few thousand needs the GPU render option, which rasterises the source once and draws every clone as an instanced quad. That is fast, but the source is frozen at rasterise time, so per-clone effects stop varying.
See also#
Something here wrong or missing? Tell us in the community.