Pattern Painter is a Unity Editor tool designed to speed up level design, prototyping, and game development workflows. It enables efficient placement of Game Objects in various geometric patterns.
Getting Started
The basic workflow is:
- Select a Game Object as a base surface for projection.
- 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.
Placement Mode
Open the Pattern Painter UI via Tools > Pattern Painter
Select a single Game Object in the scene to serve as a “base surface” onto which the pattern will generate Placement Points. The selected Game Object or at least one of its children must have a Mesh.
You will see a live preview of Placement Points (green spheres) projected onto the selected Game Object.
If they don't appear:
- Move the camera closer to the object.
- Adjust pattern settings to reduce point density.
Select a pattern and click “Calculate Placement Points”
.
Prefab Settings
Set a Prefab in the “Prefab to Instantiate”
field. The green spheres will update to the Prefab’s silhouette.
Optionally, assign a Parent Object from the scene to keep prefabs organized.
Click “Create Prefabs at Placement Points”
to generate prefabs at the Placement Points.
Alignment Settings (Optional)
Adjust the rotation of generated Game Objects using the “Prefab Rotation Mode”
dropdown, then click “Recalculate Prefab Rotation”
.
Align to Terrain (Optional)
To align objects to another surface (e.g., a terrain), create a temporary cube to serve as a surface to project your pattern.
Then select the Alignment Layer of the terrain and click “Align With Surface”
.
Important:
- Target surface must be on a selected Alignment Layer.
- It must have a Collider.
- It must be below the base surface in world-space (Y-axis).
Developer Notes
- Pattern Painter supports Undo & Redo for placement operations.
- Warning appears if the pattern is too dense or too large.
- Press
Space Bar
to cancel a long-running operation. - For best performance, bake meshes together instead of tracking many nested objects.
- Base surface must have a height (may not work on a single Plane).
- Supports only one base surface selection at a time.
Known Limitations
- Currently designed for 3D workflows, not tested for 2D.
- Not recommended for high-density, large-scale terrain object placement.
- Base surface must have a height, for example, a Cube instead of a single Plane.
- Current version supports only one base surface selection at a time.
Release History
- 💪 Version 2.0.0 (2025-04-14)
A lot of improvements in this version, so we bumped it up a WHOLE version number!
- New Logo! We have a shiny new logo.
- Updated the preview to show your GameObject's mesh to skinned mesh instead of just the bounds.
- User can control the transparency of the preview.
- Automatically set the spacing when you load a new GameObject to the tool.
- Improved the threshold to “align with surface normals” .
- Improved UI to show all setting and support options in their own section.
- Fixed a minor bug that could cause previous versions to get stuck in an infinite loop in certain cases where you re-load a scene.
- Code improvements under-the-hood to make it easier to maintain and improve the tool going forward.
- 🇨🇳 Version 1.1.1
- Added Chinese (Simplified) localization for the entire tool UI!
- Language can be switched from a simple menu.
- Messages, buttons and documentation are fully localized in 4 languages.
- 🇺🇸 🇯🇵 🇪🇸 Version 1.1.0
- Added Spanish localization for the entire tool UI!
- Language can be switched from a simple menu.
- Messages, buttons and documentation are fully localized in 4 languages.
- Improved UI layout to better accommodate localized text.
- 🚀 Version 1.0.0 (2025-02-18)
This version includes the ability to create the following patterns & functionality:
- A rectangular grid.
- A checkerboard.
- A straight line.
- A circular line.
- Concentric circles.
- Radial spokes outward from the center.
- Live preview of the pattern placement points.
- Show estimated size of Game Objects on the scene.
- User friendly status messages.
- Align with surface.
- Abort long-running process.
- Update rotation of created Game Objects.
- Specify the parent for the newly created Game Objects.
- Undo/Redo.