Pattern Painter is a Unity Editor tool for placing Game Objects in geometric patterns across your scene. Drag a Paint Volume over meshes and terrain, or select one object and fit the volume to it. It is built for fast level-design iteration, from small props to dense prefab runs.
- Grid
- Checkerboard
- Line
- Circle
- Oval
- Triangle
- Rectangle
- Pentagon
- Hexagon
- Zigzag
- Arrow
- Star
- Concentric Circles
- Radial Spokes
- more to come!
Getting Started
The basic workflow is:
- Place a Paint Volume: drag it over your scene, or select one object and press Fit Volume to Selection.
- Project a pattern of Placement Points and tweak its settings to your needs.
- Instantiate a Prefab at each Placement Point.
Optionally:
- Adjust the rotation of generated Game Objects.
- Align objects to other surfaces, like terrains and other meshes.
Surface Source
Open the Pattern Painter UI via

Section 1 of the window decides which surfaces receive Placement Points. It offers two options: Paint Volume, or Off to hide every Scene view preview. Your choice is remembered from then on.

Paint Volume (default)
Drag a box or cylinder over geometry you have already built. Whatever surface lies inside it receives points, whoever owns it: several meshes at once, a terrain, or geometry you cannot re-parent. The volume is editor state: it never enters the Hierarchy, never adds a component, and never dirties a scene.
Painting onto one object
Select the object and press Fit Volume to Selection. The volume wraps around it, and its surfaces receive points like any other surface inside a volume. As of 4.1.0 this replaces Selected GameObject, which is no longer a Surface Source; if you last used it, the tool opens in Paint Volume.
Off
Use Off when you do not need a preview. It hides the Paint Volume wireframe, shell, surface highlight, and grips, plus prefab ghosts and placement-point spheres. It does not clear the volume, pattern, or prefab settings, so choose Paint Volume again when you are ready to continue.

Placing a volume
Drag the grips in the Scene view, or type exact numbers into the window. Three buttons do the rest:
- Fit Volume to Selection wraps the volume around whatever you have selected. It is how you paint onto a single object.
- Move Volume to View lands the volume on the surface under the middle of the Scene view, centered so half its height sits above that surface. It is not a recenter on the camera pivot.
- Reset Volume returns the volume to its default size and position.

The volume is bounded at both ends
Projection starts at the volume's top face and travels exactly the volume's height. Geometry above the volume no longer occludes what is inside it, and geometry below the volume is no longer caught. This is what lets you paint one floor of a building, or the ground under a canopy.

Terrain
Terrain is a first-class surface. Terrains are sampled directly, so they need no Collider and the heights are exact. A terrain that has been rotated cannot be sampled and is skipped with a message saying so. Terrain trees and detail meshes are never targets.

Create floors in empty space
Enable Fill Misses at Volume Bottom to create new floors, bridges, and floating platforms without a temporary base mesh. Each point still uses the nearest eligible mesh or terrain hit; only misses fall back to the volume's bottom face. The setting is off by default and never fills outside the true box or cylinder footprint.
Surface Layers
Decides which layers can receive points. Objects Pattern Painter created are always excluded, whatever this is set to, so a second run never paints on the first run's output.
Highlight Surfaces In Volume
On by default. Tints the surfaces that will receive points, so you can see what the volume has caught before pressing anything. Terrain gets its footprint draped over it instead. Turn it off on weak hardware.
Volume Color, in Settings and Support, tints the volume's wireframe, shell, highlight, and grips independently of Preview Color. Both are saved per user, so upgrading does not reset them.

Placement Mode
Open the Pattern Painter UI via

With a Surface Source set in section 1, section 2 is where you choose the pattern itself. Pick Grid, Line, or Circle, then adjust its settings.
For modular floors, assign your pieces in Prefab Settings, choose Grid, then click Adjust to Mesh under Cell Size. It copies the shared X/Z mesh footprint into the grid so a Paint Volume can fill with edge-to-edge tiles. The button is available only when every assigned prefab has matching X/Z mesh bounds; empty slots and colliders are ignored.
Line Shapes
Under Line > Shapes, the Line pattern traces an outline. Every shape places exactly one object on every corner, with even spacing along each side, so points never bunch up or double at a corner.
- Zigzag runs Size X long and Size Y from peak to peak. Teeth sets the number of peaks. It is an open path, so both ends get a point.
- Arrow fills Size (width × length) and points forward.
- Star is a five-pointed star whose Size is its outer diameter, pointing forward.
- Arc: a partial arc, less than 360 degrees, has a point on both ends. A full circle places its seam point once.
You will see a live preview of Placement Points (green spheres) projected onto the surface. Live preview keeps updating automatically up to 50,000 placement points.

If they don't appear:
- Move the camera closer to the object.
- Adjust pattern settings to reduce point density, or use Calculate Placement Points when you are ready for a dense pattern.
Select a pattern and click .

Prefab Settings
Assign one or more Prefabs in the field. The preview updates to the Prefab silhouette before you create anything.
Multiple Prefabs and Empty Slots
Use + to add prefab slots and x to remove them. Assigned Prefabs repeat in slot order across every projected point, and the ghost preview uses that same order.
Optionally, assign a Parent Object from the scene to keep prefabs organized.

Click to generate prefabs at the Placement Points. Pattern Painter reports both the previewed point count and the created object count when it finishes.
Alignment Settings (Optional)
Adjust the rotation of generated Game Objects using the dropdown, then click .
Face Toward Center Line and Face Away From Center Line turn each object toward, or away from, the nearest point on a line through the middle of the pattern, rather than one center point. The line runs along the longer side of the pattern and turns with it. Two rows face straight across at each other, like guards lining a hallway, and the ones at the ends no longer turn inward.
Rotation Offset (Y) adds one extra turn, from -180 to 180 degrees, on top of any mode, so turning every object a quarter turn, or all of them the other way, is a single slider. The preview shows it immediately; press Recalculate Prefabs Rotation to apply it to objects you already created.
Align to Terrain (Optional)
To align objects to another surface, such as terrain, choose a target surface below the objects.
Then select the Alignment Layer of the terrain and click .

Important:
- Target surface must be on a selected, target-only Alignment Layer.
- No Collider needs adding: alignment follows the target mesh surface, borrowing a Collider temporarily where there is none, and a terrain already carries its own.
- It must be below the objects in world space (Y axis).
Developer Notes
- Pattern Painter supports Undo & Redo for placement operations.

- The high-density warning appears above 50,000 points when you click Calculate Placement Points.

- Press
Space Barto cancel long-running generation, projection, creation, rotation, or alignment work.
- Dense patterns are dramatically faster as of 4.0.0, but baking or combining complex meshes still improves projection and alignment cost.
- Minimum point spacing is half your pattern's own spacing, capped at 0.5 units. Before 4.0.0 it was a flat 0.5, which silently discarded points from patterns finer than that.
- A Paint Volume is editor state, not a scene object. It adds no component, never enters the Hierarchy, and dirties no scene.
Known Limitations
- Designed for 3D editor workflows with world up = Y; not tested as a dedicated 2D workflow.
- Projection is straight down. A Paint Volume pushed into a vertical wall cannot place points on the wall. With Fill Misses at Volume Bottom off it produces almost nothing; with the setting on, misses land on the volume bottom. Use volumes for ground, floors, and roofs.
- Very large, terrain-scale object placement can still be expensive. Split massive scatter jobs when a dedicated terrain scatterer would be a better fit.
- A terrain that has been rotated cannot be sampled and is skipped. Terrain trees and detail meshes are never placement targets.
Release History
Three new Line shapes, rotation that faces a center line, a Rotation Offset slider, and a preview that matches what you create. Fit Volume to Selection replaces Selected GameObject.
- New Line shapes under Line > Shapes: Zigzag, Arrow, and Star. Zigzag runs Size X long and Size Y from peak to peak, with a new Teeth setting for the number of peaks, and gets a point on both ends. Arrow fills Size (width × length) and points forward. Star is five-pointed, with Size as its outer diameter.
- New Face Toward Center Line and Face Away From Center Line rotation modes. Each object faces the nearest point on a line through the middle of the pattern, so two rows of guards down a hallway look straight across at each other.
- New Rotation Offset (Y): one extra turn from -180 to 180 degrees on top of any rotation mode. The preview shows it immediately; press Recalculate Prefabs Rotation to apply it to objects you already created.
- Now also available for Unity 6.6 (URP), alongside Unity 2022.3, 6.0, and 6.3.
- Changed: Selected GameObject is no longer a Surface Source, so section 1 offers Paint Volume and Off. To paint onto one object, select it and press Fit Volume to Selection. If you last used Selected GameObject, the tool opens in Paint Volume.
- The Scene view preview now matches the objects you create. A prefab with a scaled root no longer previews at the wrong size, a rotated root is respected under Default Prefab Rotation, and a prefab whose pivot is off-center no longer drifts when facing the pattern center.
- Line patterns with an offset now face the right center under Face Toward Center of Pattern and Face Away From Center of Pattern, in the preview, on creation, and in Recalculate Prefabs Rotation.
- Line shapes place exactly one object on every corner, with even spacing along each side. The triangle no longer leaves a gap at its base, and the oval no longer crowds its narrow ends. Outlines and positions are unchanged; the number of points along them may differ slightly.
- Partial arcs now have a point on both ends, so a 180 degree arc is no longer lopsided. A full circle still places its seam point once.
- A shape's Size no longer jumps to around 1000 when you drag its label past the edge of the window. It now stops at 1.5 times the longest side of the Paint Volume.