Procedural placement and scattering
Placing trees, rocks and props by rules instead of by hand; how scatter graphs work, random versus Poisson disk distributions, ecosystem simulation, Unreal PCG, Houdini, Blender and Godot, and how Horizon Zero Dawn and Far Cry 5 used it.
Procedural placement (or scattering) means placing large numbers of objects, such as trees, rocks, grass and props, by rules rather than one by one. You describe where things should grow ("pines on north-facing slopes above 600 m, never on roads, at least 3 m apart") and the tool places them. Epic describes its Procedural Content Generation (PCG) framework as "a toolset for creating your own procedural content and tools inside Unreal Engine" (Unreal Engine Documentation: Procedural Content Generation Overview).
Procedural placement moves the artist's work from placing instances to designing rules, so that a whole forest updates when the layout changes. For the assets being placed, see foliage and vegetation; for generating the ground itself, see terrain and landscapes; for procedural modeling of individual assets, see procedural modeling.
#Why scatter by rules
- Scale. A StraySpark tutorial states: "hand-placement doesn't scale to a square kilometre" (StraySpark Studios: Scattering Foliage in Unreal: By Hand vs.…).
- Iteration. When a road moves, a brush-painted forest has to be repainted; with rules, you change a threshold and "the whole forest" updates (StraySpark Studios: Scattering Foliage in Unreal: By Hand vs.…).
- Small teams. According to 80 Level's summary of Guerrilla's GDC talk, "only 3 people actually made the nature assets" for Horizon Zero Dawn, whose world was assembled by a procedural system (80 Level: The Procedural Nature of the Horizon Zero Dawn).
#How a scatter graph works
Nearly every scatter tool follows the same pipeline, whether it is a node graph in Unreal, Houdini or Blender.
Unreal's PCG framework uses the same building blocks (Unreal Engine Documentation: Procedural Content Generation Overview):
- Points: "Locations in 3D space that are generated by the PCG graph and are often used to spawn meshes".
- Attributes: data stored on each point, either always present or created at runtime.
- Density: a value that "represents the probability of the point to exist at that position".
- Samplers: nodes that "generate points from a source of spatial data, such as volumes, surfaces, and meshes".
- Filters and Spawners: filter points "based on criteria or per-point", then place meshes or actors at the survivors.
A PCG Component "manages the generation of procedural content, both in the Editor and at runtime", and with World Partition the generated actors go into the same data and HLOD layers as their source (Unreal Engine Documentation: Procedural Content Generation Overview). See hierarchical LOD.
#Random scatter and Poisson disk sampling
The simplest scatter drops points at random. Pure randomness clumps: some points land almost on top of each other while gaps open elsewhere. Natural plant spacing is more even, because plants compete for light and water.
Blender's Distribute Points on Faces node shows the two common options (Blender Manual: Distribute Points on Faces Node):
- Random: "Distribute points randomly on the surface. This is the fastest distribution method."
- Poisson Disk: "Distribute points randomly on the surface while taking a minimum distance into account."
#Simulating ecosystems
Some tools go further and simulate plants growing, spreading and shading each other out.
Unreal's Procedural Foliage Tool (still found under Experimental settings) can "spawn an entire forest's worth of trees" from a Procedural Foliage Spawner volume (Unreal Engine Documentation: Procedural Foliage Tool). Each species has settings such as Shade Radius, Initial Seed Density, Average Spread Distance, Max Age and Can Grow in Shade, and Num Steps runs the simulation for a number of years; Epic's example grows trees over "3 years" (Unreal Engine Documentation: Procedural Foliage Tool). Blocking volumes keep trees out of paths and clearings (Unreal Engine Documentation: Procedural Foliage Tool).
Researchers at Disney Research proposed a middle way: an ecological simulation that artists steer with "global and local editing operators" applied to the live simulation, giving "an artist-directed workflow with both spatially and temporally-varying control" (Bradbury et al. 2015). They contrast it with "stochastic scatter-instancing tools" (Bradbury et al. 2015).
#Editor-time and runtime placement
Most projects scatter in the editor and save the result. Some games generate placement while the player moves.
In Godot, runtime scattering is usually written in code that fills a MultiMesh, which "can draw up to millions of objects in one go"; for a few thousand instances, GDScript "should be fine" (Godot Engine documentation: Optimization using MultiMeshes).
#Tools compared
| Tool | How it scatters | Notes |
|---|---|---|
| Unreal PCG | Node graph of points, density, filters and spawners (Unreal Engine Documentation) | Editor and runtime generation; World Partition aware |
| Unreal Procedural Foliage Tool | Ecosystem growth simulation (Unreal Engine Documentation) | Experimental; blocking volumes |
| Unreal Foliage Mode | Brush painting, including a Single tool for one instance (Unreal Engine Documentation) | Hand placement and touch-ups |
| Houdini Engine | Houdini Digital Assets run inside Unreal's PCG graph (Houdini documentation) | Can "sample a Houdini heightfield and return a list of points" |
| Blender Geometry Nodes | Distribute Points on Faces, Random or Poisson Disk (Blender Manual) | Export the result, or use for renders and previs |
| Unity terrain | Painted trees and details, with a global Detail Density Scale (Unity Manual) | For rule-based scattering, use scripts or packages |
| Godot | Script-filled MultiMesh (Godot Engine documentation) | No per-instance culling; chunk it |
For more tools and prices, including Geo-Scatter and SideFX Labs, see vegetation and procedural tools.
#Common mistakes
- Uniform random scatter. It clumps; use a minimum distance (Blender Manual: Distribute Points on Faces Node).
- No exclusion zones. Trees in roads, rocks in doorways. Feed paths, buildings and gameplay spaces into the graph as masks or blocking volumes (Unreal Engine Documentation: Procedural Foliage Tool).
- Changing the seed late. A new random Seed reshuffles every point (Blender Manual: Distribute Points on Faces Node), and hand-placed fixes stop lining up.
- Aligning everything to the surface normal. Grass and stones can follow the slope; trees grow upright. Use different rules per asset type.
- One giant output. Split results into chunks or partitions so they can be culled and streamed (Unreal Engine Documentation: Procedural Content Generation Overview; Godot Engine documentation: Optimization using MultiMeshes).
#Further reading and watching
References
- · Procedural Content Generation Overview · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
- · Scattering Foliage in Unreal: By Hand vs. Procedurally · StraySpark Studios, 2026 · article · accessed 2026-10-21
- · The Procedural Nature of the Horizon Zero Dawn · 80 Level, 2017 · article · accessed 2026-10-21
- · Distribute Points on Faces Node · Blender Manual (source), 2026 · docs · accessed 2026-10-21
- · Procedural Foliage Tool · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
- · Guided Ecological Simulation For Artistic Editing of Plant Distributions In Natural Scenes · Journal of Computer Graphics Techniques (Disney Research), 2015 · paper · accessed 2026-10-21
- · GPU-based Procedural Placement in Horizon Zero Dawn · Guerrilla Games (GDC 2017 talk page), 2017 · talk · accessed 2026-10-21
- · Video: The world generation tech behind Far Cry 5 · Game Developer, 2020 · article · accessed 2026-10-21
- · Optimization using MultiMeshes · Godot Engine documentation (source on GitHub), 2026 · docs · accessed 2026-10-21
- · Foliage Mode · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
- · Houdini Engine for Unreal: PCG overview · Houdini documentation, 2026 · docs · accessed 2026-10-21
- · Terrain settings reference · Unity Manual, 2026 · docs · accessed 2026-10-21
Pages that link here
- Modeling software Reference
- Game engines Reference
- Vegetation and procedural tools Reference
- Procedural modeling Topic
- Hero assets, props and filler Topic
- Modeling rocks, trees and terrain pieces Topic
- Instancing Key term
- Sculpting rocks and cliffs Guide
- Tileable sculpts Guide
- Terrain and landscapes Topic
- Heightfield erosion Key term
- Foliage and vegetation Topic
- Poisson disk sampling Key term
- Level design and environment art Overview
- Set dressing and art passes Topic
Last updated 2026-10-22