PMPropMaster PCG

User Guide

Overview

PropMaster PCG is three dressing tools for Unreal Engine 5.8 that turn a blockout into a dressed scene in minutes. Each tool is a Blueprint you drag into the level, fill with meshes, and tune from its Details panel.

ToolBlueprintUse it for
SplineBP_PCG_PropMaster_SplinePaths, walls, fences and pipes along a spline, or scatter filling a closed spline area
VolumeBP_PCG_PropMaster_VolumeDressing a box: floors, walls and ceilings of a room, or the outside of rocks and props inside it
Mesh CoverBP_PCG_PropMaster_CoverMeshGrowing moss, vines, debris and decals over meshes already in the level

All three share the same building blocks: layers of main meshes, Cluster Mesh around them, Cover Mesh by Intent on top of them, Decals, an Optimize section and the Footprint cost readout.

Your first result

  1. Find the Blueprints under PropMasterPCG Content > Tools and drag one into the level.
  2. Shape it: move the spline points, or scale the volume box over your area.
  3. In Prop Master, open layer Index [0] and add a mesh under Spawning > Static Meshes.
  4. Click Refresh under PCG Controllers. The tool regenerates by itself after most edits; Refresh forces it.
  5. Add more layers for more kinds of meshes. Later layers can avoid what earlier layers placed.

Panel basics

Every tool's Details panel has the same top-level sections, in this order. Collapsing a layer and opening it again folds its sections, so long panels stay easy to scan.

SectionSetting or buttonWhat it does
SelectionHide Selection OutlineRemoves the orange selection outline from the spawned meshes while the tool is selected, so you can judge the look. It comes back when deselected.
Prop Master / Mesh CoverLayers (Prop Layers, Mesh Cover Layers)The list of layers this tool spawns, in order. Each layer is one kind of dressing. Later layers can avoid earlier ones.
LayerLayer TitleThe name shown on the collapsed layer and in front of its sections.
LayerMuteSkips the layer without losing its settings.
LayerSoloWhen any layer is soloed, only soloed layers generate. Use it to tune one layer at a time.
SeedGlobal SeedOffsets every random choice in the tool.
SeedRandomize Global SeedPicks a new random Global Seed and regenerates.
Footprint ControllersUpdate Footprint, Measure GPU Cost, Set Baseline, Clear BaselineCost readout of what the tool made. See Footprint.
PCG ControllersRefreshRebuilds the layers and regenerates. Use it after editing a preset asset, or on the Mesh Cover tool after moving the meshes it covers.
PCG ControllersConvert to MeshBakes the spawned meshes into a new plain actor where they are, and switches the tool's PCG off so nothing spawns twice.
PCG ControllersDisable PCG / Enable PCGRemoves the spawned meshes and stops regenerating, or switches it back on and regenerates.
Preset ControllersPresetsPreset assets whose layers are added to this tool's own at generation time.
Preset ControllersSave as PresetSaves all layers into a new Preset asset, ready to add to another tool of the same kind.
Preset ControllersEdit PresetsCopies every preset's layers into the tool's own layers, where you can edit them, and empties the Presets list.
Generated (advanced)WarningsPlain-language problems from the last build, such as an empty mesh list or a tag no actor has. Check it first when something does not spawn.

Most changes regenerate on their own. Every random choice is seeded, so the same settings always give the same result.

Spline tool

The Spline tool places meshes along a spline or fills the area inside a closed spline. Each layer runs through the sections below, top to bottom.

Spawning: what gets placed

SettingWhat it does
Activate Main MeshSpawns this layer's main meshes. Off skips them; clusters and cover can still run.
Static MeshesThe meshes picked for each point. Each entry has a Weight (2 = picked twice as often as 1, 0 = never).
Static Meshes > Add TagTags the spawned meshes, so other tools' tag filters can see them (for example, keep another spline's clusters off them).
Static Meshes > Local TransformsThis mesh's own offset, rotation and scale, to fix off-centre pivots, wrong facing or mismatched sizes. Random Rotation Steps turns it by whole steps (90 = quarter turns) for modular pieces that must stay square.
Static Meshes > Forward AxisThe mesh axis that runs along the spline, for Grammar and Mesh Along Spline.
Grammar > Use GrammarLays the meshes end to end along the spline in a pattern of their Symbol letters instead of scattering. Along the spline only. The Cheat Sheet in the panel shows the pattern syntax.
ActorsBlueprint actors picked at random alongside the meshes (each counts as Weight 1). They are real actors, so keep counts modest.
Mesh Bounds ModifierGrows or shrinks the layer's footprint (width and length only) for its clusters, tag filters and later layers' overlap checks.
TagsSpawn Only On Tag / No Spawning on Tag with a bounds modifier each: spawn only on, or never on, actors and meshes carrying a tag.
OverlapNo Overlap of Previous Index Spawns / Clusters: keeps this layer clear of the layers above it.

Distribution: where and how many

SettingWhat it does
Spawn Inside SplineOn fills the closed spline's area. Off places along the spline, where Mesh Along Spline and Grammar are available.
DensityPercent of candidate points kept.
DistanceSpacing between candidate points.
Use Count / CountSpawns an exact number of points instead of using Distance.
Clump TogetherGathers meshes into patches. Clumping 0 = even scatter, 1 = tight clumps. Clump Size sets the patch size, Clump Pull moves points toward the patch centre and Min Spacing pushes them apart again.
No OverlappingRemoves meshes whose bounds overlap another of this layer (one survives).
Stack VerticalStacks rows of each mesh. See below.
Distribution SeedRe-rolls this layer's point pattern.
Inset Within Closed Spline (inside only)Inset Min keeps points away from the edge; Inset Max keeps only a band along the edge. Both are shares of the way to the centre.
Start and End (along only)Fit to Curve adjusts spacing to fit the spline exactly. Start / End Offset leave the ends empty.
Activate Mesh Along Spline (along only)Bends one mesh along the whole spline (pipes, fences, curbs) instead of scattering. Mesh Along Spline Scale sets its thickness.

Stack Vertical

Stack Vertical builds rows of each mesh on top of itself. Along the spline it makes a wall; inside the spline each point becomes its own pile. Rows always sit on the real size of the mesh below, and a tilted piece makes a stack that leans with it.

SettingWhat it does
ActivateTurns stacking on for this layer.
Rows Min / Rows MaxRows per stack, counting the bottom one. Each stack picks a count in this range.
Row GapPositive leaves a gap; negative sinks rows into each other (rocks, sandbags).
StaggerWall: every other row slides along by this share of the mesh length (0.5 = brick pattern). Pile: each row shifts and turns a little at random.
Row RotationEach row turns this many degrees further than the row below. 90 = log-cabin crossing; small values twist the stack.
Taper (walls only)Each row is this much smaller than the one below (0.1 = 10%), for sandbag or dry-stone walls.
Keep Stacking ChanceAbove Rows Min, the chance a stack goes on to the next row. Below 1 gives a ragged top or piles of different heights. Nothing ever floats.

Cover Mesh by Intent puts Top cover only on the top piece of each stack and Bottom cover only on the bottom row. It is not available with Mesh Along Spline. Actors stack too: their size comes from the Blueprint's static meshes, so a set with tall parts (poles, lamps) stacks on its tallest part; use a negative Row Gap to pull those rows down.

Transforms

SettingWhat it does
JitterRandomises where each point lands inside its spacing cell. 0 = exact spacing (lights, fence posts), 1 = anywhere in the cell.
Global Position / Rotation / ScaleApplied to every mesh in the layer.
Offset Position / Rotation / Scale Min and MaxA random amount between Min and Max per mesh, per axis. Uniform Scale uses only X.
Keep Inside Spline / Keep Inside MarginInside the spline: a mesh pushed outside by the offsets gets a new or smaller offset, and is only dropped if its own spot is outside. Margin keeps big meshes from hanging over the edge.
Absolute RotationUses Global Rotation as the final rotation instead of following the surface.
Offset SeedRe-rolls the random offsets.

Projection: landing on the ground

Projection drops each point onto the surface below it. Main Mesh and Clusters have the same settings, each on its own.

SettingWhat it does
Activate ProjectionProjects onto the surface. Off keeps the spline's own height.
Projection TypeDefault, Mesh Only, Landscape Only, or Landscape and Mask Mesh: which surfaces the ray may land on.
Use Landscape HeightfieldMuch faster than rays on landscapes, when there is no snap limit or slope range.
Align to SurfaceTilts each mesh to the surface.
Snap to Surface Max DistanceDrops points whose surface is farther than this. 0 = no limit.
Surface Angle Min / MaxSteepness allowed, in degrees: 0 = flat, 90 = vertical, 180 = ceiling. 30 to 40 keeps meshes off steep hills.
Projection Height and DepthWhere the ray starts above the point and how far below it reaches. Lower them to land under a bridge or roof.
Overhang Cleanup0 = off. 1 removes any mesh hanging past the edge of its surface; 0.5 needs half of its footprint supported.
Landscape LayersOnly On / Never On Landscape Layer by paint layer name, with a weight Threshold and a Clearance ring checked around each mesh (keeps tree canopies off roads).

Cluster Mesh: smaller meshes around each main mesh

SettingWhat it does
Activate Cluster MeshSpawns clusters around each main mesh.
MeshesCluster meshes with a Weight each.
Amount & SizeDensity (percent), Density at Max Distance (thins toward the edge), Chance to Cluster (share of main meshes that get one), Size (half-size in cm) and Distance Scale Amount (scale at the edge).
Clump Together, SeedSame as Distribution, for the clusters.
TransformsCluster position, rotation and scale offsets, plus Keep Clusters Inside with its margin.
Around the Main MeshMain Object Tightness pushes clusters away (positive) or lets them closer (negative). Follow Main Mesh removes a cluster when its main mesh is removed. Distance from Main Mesh caps how far clusters reach.
OverlapNo Overlap keeps cluster meshes apart, with a Bounds Override.

Decals

SettingWhat it does
Activate Decals / Decal MaterialsTurns decals on. Materials must use the Deferred Decal domain. Each decal is an actor.
Decals On Top of Meshes / Decal ChanceAdds decals at a share of the spawn points, on top of the meshes. Off mixes decals in with the meshes instead.
Decals Only (Clear all Meshes)This layer spawns only decals.
Cluster DecalsDecals on the cluster points, on top of or instead of the cluster meshes, with their own chance.
TransformsDecal Size (X = projection depth), random scale and spin.
RenderingDecal Fade Screen Size and Decal Sort Order.
Max DecalsCaps the decal count. Thousands of decal actors get slow. 0 = no limit.

Optimize

Main Mesh, Clusters and Cover Mesh by Intent each have the same switches.

SettingWhat it does
Cull Distance Start / EndFades meshes out between these distances. 0 = never culled.
Receives DecalsOff keeps decals off these meshes (turn off for trees and grass).
World Position OffsetOff stops wind animation. Saves GPU on large counts and fixes blinking shadow blobs.
Visible in Ray TracingOff makes Lumen and ray tracing ignore them. Helps dense grass that shows dark blotches.
Cast ShadowOff: no shadows. A big saving for grass, pebbles, debris and moss.
No Collision (main, clusters) / Collision (cover)Main and cluster meshes can drop collision to save memory. Cover meshes have none unless you turn Collision on.

Debug

Work in Debug Mode runs every placement step but spawns nothing, so regenerating is fast. The Show switches draw debug boxes for main, cluster and cover bounds, and shade slope ranges from white (Min) to black (Max).

Volume tool

The Volume tool casts a grid of rays across a box and dresses the surfaces they hit. Spawning, Transforms, Cluster Mesh, Decals, Cover Mesh by Intent, Optimize and Debug work as in the Spline tool; this section covers what is different.

Projection (top of the panel)

One setting for the whole tool, above Prop Layers.

OptionRays startUse it for
Inside a RoomOn the centre of the box, going out to each sideFloors, walls and ceilings of a room, and anything inside it
Around ObjectsOn the far side of the box, crossing itThe outside of rocks, ruins and props placed inside the box

Faces: which surfaces get dressed

The box shows the labels Up, Down, Left, Right, Front and Back. Each checkbox names the way the covered surfaces face, so it means the same thing in both Projection modes.

CheckboxCoversInside a room this is
Up-Facing SurfacesFloors, ground and the tops of objectsThe floor
Down-Facing SurfacesCeilings and the undersides of objectsThe ceiling
Left-Facing SurfacesSurfaces facing the Left labelThe Right wall
Right-Facing SurfacesSurfaces facing the Right labelThe Left wall
Front-Facing SurfacesSurfaces facing the Front labelThe Back wall
Back-Facing SurfacesSurfaces facing the Back labelThe Front wall

The same section holds Main Mesh / Cluster Overhang Cleanup (0 = off, 1 = remove anything hanging past its surface's edge) and Minimum Surface Width, which keeps main meshes off ledges and rims narrower than the width you set.

Distribution

SettingWhat it does
DensityPercent of rays kept.
Use Count / CountAn exact number of rays spread over the chosen faces.
Width and Height ControlsWidth / Height Spacing = exact distance between rays on each face. Min / Max (0 to 1 of the box) limit rays to a band, for example only the lower half of the walls. Width / Height Scale grow or shrink meshes across the face.
Main Surface Angle Min / MaxWorld slope allowed: 0 = flat floor, 90 = vertical wall, 180 = ceiling.
Max Surface AngleHow far a hit surface may tilt away from the face direction and still be used.
Align to SurfaceOn: meshes stand out from the surface they hit. Off: they keep the face direction as up.
Clump Together, No OverlappingSame as the Spline tool. Keep Clump Pull low on uneven walls.
Stack VerticalPiles on every face, growing straight out of the surface: up from floors, sideways out of walls, down from ceilings. Taper is hidden (piles only).

Volume-only Transforms

SettingWhat it does
Surface Facing AxisWhich side of the mesh faces out of its surface (floor, wall or ceiling alike), keeping the mesh upright on walls. Use it instead of a Global Rotation to stand pieces up.
Random Rotation StepsTurns each mesh by whole steps around its own axis (cliff pieces, tiles, crates).
Offset From SurfaceMoves meshes out from the surface (positive) or sinks them in (negative).
Keep Inside Volume / MarginDrops meshes (and their clusters) pushed outside the box by the offsets.

Volume limits and debug

Mesh Cover tool

The Mesh Cover tool dresses meshes that are already in the level: rocks, cliffs, ruins, or the Spline and Volume tools' own spawns. Each Mesh Cover Layer picks its targets, then places Cover Mesh by Intent entries and decals on them.

Targets: what gets covered

SettingWhat it does
Target ActorsPlaced actors picked with the eyedropper or drop-down. Every static mesh on them is covered, wherever they are.
Target MeshesStatic meshes to cover by asset. Empty = every mesh inside the Spawn Only On Tag area.
Search Entire LevelOff: only meshes whose centre is inside the tool's box. On: the whole level (loaded World Partition cells only).
Include InstancesAlso covers instanced meshes such as foliage and the Spline and Volume tools' spawns, not just Static Mesh actors.
Target Size Min / MaxSkips targets smaller or larger than this (largest side, as placed). 0 = no limit.

Layer contents

SectionWhat it does
Cover Mesh by IntentOne entry per cover style (moss, vines, debris), each with its own Top / Side / Bottom, Facing and Tags. See Cover Mesh by Intent.
DecalsActivate Decals, Decal Materials, Decal Chance (share of cover points that get one), Decals Only (No Cover Meshes), Transforms (size, scale, spin), Rendering and Max Decals.
OptimizeCull distances, decals, wind, ray tracing, shadows and collision for the cover meshes.
DebugWork in Debug Mode, Show Cover Mesh Bounds and Show Cover Slope.

Max Targets (per layer) is a safety limit on how many targets a layer may ray-trace. The tool does not notice when you move the meshes it covers: click Refresh after moving them.

Cover Mesh by Intent

Cover Mesh by Intent grows smaller meshes over the main meshes (in the Spline and Volume tools) or over the targets (in the Mesh Cover tool). Each entry is one cover style, such as moss, vines or debris. Entries never repeat each other and never space out against each other.

Entry settings

SettingWhat it does
Layer TitleThe entry's name, shown on the collapsed entry and in front of its sections.
ActivateMaster switch for the entry. Off places nothing but keeps Top, Side and Bottom as they were.
FacingCovers only the side facing a direction. Facing Arrow = the tool's forward direction (the Mesh Cover tool shows an orange arrow). Face Toward Actor = surfaces turned toward a picked actor. Max Angle sets how far a surface may turn away.
Top / Side / BottomThe three cover categories, below.
TagsSpawn Only On Tag / No Spawning on Tag areas for this entry. Tagged splines make a strip; Spline Path sets its width at each end (taper), Edge Jitter, Jitter Scale and Edge Softness. Other tagged actors use their bounds, grown or inset by Mesh Bounds Modifier.
Cover SeedRe-rolls this entry's cover.
Clear Cover Inside Meshes / ClearanceRemoves cover buried in or pressed against another surface, checking Clearance cm out from each point.

Top, Side and Bottom

Top covers up-facing surfaces, found by rays cast down. Side covers the object's sides with sideways rays. Bottom covers the base, like moss creeping up from the ground. Each category has its own copy of these settings.

SettingWhat it does
ActivateTurns this category on.
Copy to Other CategoriesCopies this category's meshes and settings into the other two, keeping their Activate and Height. Unticks itself.
MeshesCover meshes picked at random. Empty = nothing spawns.
DensityHow tightly the surface is covered. 100 = a candidate every 45 cm.
Chance of Covering ObjectChance that each object gets this category at all.
Cover SpacingMinimum distance between two cover meshes of this category. 0 = off.
Clump TogetherGathers the cover into patches, with Clump Pull and Min Spacing.
TransformsJitter, Position Offset (X and Y slide along the surface, Z lifts or sinks), Absolute Rotation, Rotation and Scale Min / Max.
Align to SurfaceThe mesh's up axis follows the surface. Off keeps it upright.
Flip Z AxisHangs the meshes straight down from where they touch, for moss or vines dangling from a ledge.
Height Min / MaxThe band of each object to cover, in percent of its height (0 = bottom, 100 = top). Defaults: Top 66 to 100, Side 33 to 66, Bottom 0 to 33.
Cover Scale By HeightScale at Height Max (x1 at Height Min). 1 = off.
Surface Angle Min / MaxSteepness to cover: 0 = tops, 90 = sides, 180 = undersides.

Optimize > Cover Mesh by Intent holds the cull distances, decals, wind, ray tracing, shadow and Collision switches for every entry of the layer. Cover meshes have no collision unless Collision is on.

Footprint

The Footprint section, under Footprint Controllers, shows what the tool made and what it costs. It updates by itself after every generate. Notes and Changes sit at the top: Notes flags likely problems, and Changes shows how far each number moved.

Buttons

ButtonWhat it does
Update FootprintRecounts now.
Measure GPU CostRenders a couple of seconds from the current viewport with the tool shown, then hidden, and records the difference. Measure from the same spot before and after a change.
Set BaselineRemembers the current numbers. Changes then compares every later update to them, which suits an optimize pass.
Clear BaselineForgets the baseline; Changes compares with the previous update again.

The numbers

GroupNumberWhat it means
RenderingInstancesMesh instances this tool spawned.
RenderingMesh ComponentsAbout one per mesh and settings combination; each is at least one draw call per pass. Fewer is better.
RenderingUnique MeshesDifferent mesh assets in use.
RenderingNanite / Non-Nanite InstancesNanite stays cheap when dense. Large non-Nanite counts are the usual performance trap: enable Nanite or add cull distances.
RenderingNon-Nanite Triangles (LOD 0)The worst case up close.
RenderingShadow-Casting, WPO-Animated, Ray-Traced InstancesHow many instances the matching Optimize switches leave on.
RenderingDecal Actors, Other Spawned ActorsEach is a full actor. Keep decals in the hundreds, not thousands.
MemoryInstance Memory (MB)Transforms, render data and collision bodies for these instances.
MemoryInstances With CollisionEach carries a physics body. Optimize > No Collision removes them.
MemoryMesh Assets (MB)The mesh assets used, shared with anything else using them. Textures and materials are not counted.
Loading and StreamingInstance Data on Disk (MB, est.)Roughly what the level has to read when this tool loads.
Loading and StreamingMesh Files (MB, editor)Mesh asset file sizes in the editor. Cooked builds are usually smaller.
Loading and StreamingTool Size (m)Width and length of everything spawned. With World Partition, one big actor loads all its instances at once.
Loading and StreamingSpatially Loaded, PCG PartitionedWhether World Partition streams the tool by distance, and whether the PCG output is split into cells.
Loading and StreamingLast Generate (s)How long the last full generate took in the editor.
GPU CostGPU Cost (ms), Share of Frame (%), FPS With / Without ToolSet by Measure GPU Cost. Measured says when, and whether the tool has changed since.

Meshes (most instances first) lists the heaviest meshes, so you know where to start optimizing.

Tips and troubleshooting

Keep it fast

When something looks wrong

SymptomCheck
Nothing spawnsWarnings first. Then Activate Main Mesh, an empty mesh list, Mute / Solo, and Density.
Meshes float or sinkProjection Type, Snap to Surface Max Distance, Projection Height and Depth; in the Volume tool, Offset From Surface.
Meshes don't follow the slopeAlign to Surface on, and Absolute Rotation off.
Meshes on roads or pathsNever On Landscape Layer with a Clearance ring, or No Spawning on Tag on the road spline.
Volume dresses the wrong sideCheck Projection (Inside a Room or Around Objects), then the Faces checkboxes against the labels on the box.
Mesh Cover finds nothingTargets: box placement, Search Entire Level, Include Instances, Target Size Min / Max. Click Refresh after moving the covered meshes.
Cover buried in walls or floorsClear Cover Inside Meshes with a larger Clearance.
Stacks too far apart or overlappingRow Gap (negative sinks rows together).