Quick Scatter Pro
Scatter prefabs over your terrain by rule, then read what actually happened: the spacing really achieved, how many things overlap, and why every candidate that did not land was thrown away.
by Krykftn | Advanced Editor Tools & Systems
Price History +
Any tool can throw objects at a landscape. This one measures the result afterwards and tells you the truth about it.
THE REPORT IS THE PRODUCT
After every run the inspector shows what really happened, measured from the objects now in your scene rather than copied from the settings above them:
How many candidates were considered, and how many became objects.
Where every rejected candidate went: no ground, slope, height, thinned by density, over the limit.
The spacing you asked for, and the closest pair actually found.
How many objects overlap another, using each prefab's own width.
The density you ended up with.
Measuring afterwards is the only way the report could ever disagree with your settings, and disagreeing is exactly what makes it useful. In the demo scene: 7 asked, 7.017 measured across 80 trees. 3.2 asked, 3.210 across 463 rocks. 1.3 asked, 1.301 across 2812 blades of grass. Zero overlaps in all three.
When nothing is placed, the inspector names the reason instead of shrugging: no collider, wrong layer, the area sitting under the ground rather than over it, slope range too narrow.
EVEN, NOT RANDOM
Points come from Bridson's Poisson-disc sampling. Random points clump in some places and leave holes in others; a grid reads as artificial. Poisson-disc fills the area evenly and still looks natural, and it is what makes a spacing guarantee possible at all.
Same count, same area, same seed: Poisson-disc came out at 5.000 where 5 was asked for. The same number of uniform random points came out at 0.437.
SAME SEED, SAME LANDSCAPE
The generator belongs to the call, not to Unity. UnityEngine.Random is global mutable state: scattering with it would disturb anything else drawing numbers that frame, and a coroutine running alongside would quietly change your layout.
So the same seed and the same rules give the same points, on every machine and every run. That is what makes a scattered scene something you can commit to source control and reproduce, rather than a one-off you must never touch again. Two areas sharing one profile can still differ by a seed offset, and the profile asset is not modified.
THE RULES
Spacing, density, and a hard limit.
Surface layers, slope range in degrees from flat, world height range.
Follow normal, from upright to lying square on the surface. Trees want a little; rocks want a lot.
Random yaw, surface offset, per-entry scale range and weights.
SIMPLE TO USE
GameObject > 3D Object > Scatter Area, drag it over your ground, give it a profile, press Scatter.
Everything it makes goes under one child, so scattering again replaces the last run cleanly and deleting the area takes its work with it. Nothing else in your scene is touched, and one undo puts any of it back.
Profiles are assets, so one look can be shared by every area in the level.
PREFAB LINKS KEPT
Scattering in the editor goes through PrefabUtility, so everything it places is a real prefab instance. Edit the tree and all three thousand of them change.
NO DEPENDENCIES
No packages, no manager object, no bake. It works on anything with a collider: meshes, Unity terrain, or a mix. Built-in, URP and HDRP, because it places your prefabs and never touches how they are drawn.
AT RUNTIME TOO
ScatterEngine.Scatter(profile, centre, size, rayHeight, out report) is plain runtime code. The same call that fills a level for you at author time can fill one at load time, with the same seed giving the same result.
WHAT IS IN THE BOX
Scatter Area component, with one-click scatter and clear and full undo.
Scatter Profile assets: what to place, and the rules for where it may land.
The Scatter window: every area in the scene, with scatter-all and clear-all.
ScatterMath: Poisson-disc, slopes, weighted picking and the measuring, as plain C# you can call from your own tools and tests.
A demo scene: one landscape with trees, rocks and grass under three different rules.
Full commented C# source.
Support: koraykaftanoglu@gmail.com