The Scaffold Builder is a procedural actor that grows a complete scaffold structure for you: vertical poles (standards), horizontal rails (ledgers and transoms), walkable deck planks, diagonal bracing, joint couplers, stairs and ladders, and optional clutter props. You place one actor in your level, choose a look and a few dimensions, press a button, and it assembles the whole thing.
Everything is built as Instanced Static Meshes, which means thousands of poles and planks stay cheap to render - roughly one draw call per element type rather than one per piece. When you are happy with the result you can bake it down into a single static mesh asset.
There are three ways to lay it out:
Grid: a regular rectangular block of bays. The everyday mode.
Along Spline: the scaffold follows one or more splines you draw, so it can curve around a building or run along an irregular path.
Wrap Target Mesh: you point it at another actor (a tower, a tree, a statue) and it automatically rings that object with scaffolding, following the real outline of the object - even L-shaped or concave ones.
Drag a Scaffold Builder actor into your level.
In the Details panel, open "01 - Generation" and set Style to Modern or Medieval. This loads a matching set of meshes and sensible default sizes.
Open "02 - Dimensions" and set Grid Width, Grid Depth and Number Of Floors to roughly the size you want.
Press the "Generate Scaffold" button at the top of "01 - Generation".
Adjust, regenerate, repeat. When you like it, press "Save As Static Mesh" to bake it.
If you want to see changes update live as you drag sliders, turn on
Auto Generate (see the tips section for the catch).
Generate Scaffold - Builds (or rebuilds) the scaffold right now from the current settings. This is the main button you will use. It is safe to press as many times as you like; each press throws away the previous result and builds fresh.
Save As Static Mesh - Bakes the whole assembled scaffold into a single static mesh asset saved to disk. Use this once the look is final. The baked mesh is a normal asset you can place, duplicate, and ship like any other - it no longer depends on the builder actor.
Distribution - Chooses the layout method: Grid, Along Spline, or Wrap Target Mesh. The other fields in this section show or hide themselves depending on which one you pick.
Style - The overall look. Medieval loads timber-and-lashing meshes and stamps the medieval cell size (210 cm bays, 200 cm lifts). Modern loads steel tube-and-clamp meshes and stamps the modern cell size (200 cm bays, 250 cm lifts). Manual leaves all the mesh slots alone so you can hand-pick every mesh yourself.
Important: choosing a Style fills in the meshes AND the bay/floor sizes for you. After that, every value stays fully editable - changing a mesh by hand quietly switches Style to Manual so your picks are never overwritten.
Preset - Stamps a coherent set of DIMENSIONS, bracing and variation - but NOT meshes and NOT style. Think of Style as "what it is made of" and Preset as "what shape and behaviour it has." Presets include Modern Access Tower, Modern Facade Run, Medieval Putlog, and Medieval Double-Pole. The moment you hand-edit any value a preset controls, Preset flips back to None so it does not fight your manual tuning.
Seed - The random number that drives every bit of variation - jitter, missing planks, stair placement, clutter scatter, random floor heights. Change it to get a different but equally valid arrangement from the same settings. Keep it fixed when you want repeatable results.
Auto Generate - When on, the scaffold rebuilds instantly every time you change a value. Great for dialing things in. Turn it OFF before you save your level, so the scaffold is not silently regenerated every time the level loads.
Spline Actors (Spline mode only) - Pick one or more actors that contain spline components. Every spline on each actor is used as a run, open or closed loop. This is how you route scaffold along a curved or irregular path.
Target Actor (Wrap mode only) - The actor you want to wrap scaffolding around. The outline is read from a thin horizontal slice near the base of that object, so a tree wraps its trunk rather than its canopy.
Footprint Sample Height (Wrap mode only) - How tall a slice (in cm) above the base is used to read the object's outline. Keep it small so you only capture the base/trunk and not flaring branches or roof overhangs higher up.
Wrap Padding (Wrap mode only) - The gap in cm left between the wrapped object and the inner ring of scaffold, so the poles do not clip into it.
Wrap Max Height (Wrap mode only) - The tallest the scaffold will rise above the base, in cm. Leave at 0 to use the target object's own height.
Wrap Follow Silhouette (Wrap mode only) - A legacy flag. Height is now driven by the floor count (or Wrap Max Height), so just leave this on.
Wrap Align To Mesh (Wrap mode only) - Aligns the wrap grid to the object's longest horizontal axis instead of world X/Y, so the result does not look like a boxy voxel grid snapped to the world axes.
Wrap Grid Rotation Offset (Wrap mode only) - A small extra rotation (degrees) on top of the automatic alignment, so the wrap sits slightly off-axis and looks hand-built. A few degrees is enough.
Debug Footprint (Wrap mode only) - Draws translucent boxes showing exactly what the outline sampler detected: green is the object footprint, cyan is the scaffold band around it. Turn this on if a wrap is skipping parts of an object or growing where it should not - it shows you what the tool actually "sees." Editor only.
Cull Volumes (all modes) - A list of actors that carve holes in the scaffold. Any scaffold piece whose origin falls inside one of these actors' bounding boxes is removed. Use them to punch doorways, leave gaps for windows, or clear an area. Each entry has a Bounds Scale: above 1 carves a bigger hole, below 1 a smaller one.
Grid Width - Number of bays along the length of the run. Spline and Wrap modes work this out for themselves.
Grid Depth - Number of bays across the depth, perpendicular to the run. Use 1 for a thin facade against a wall, 2 or more for a wide working platform. In Wrap mode this controls how thick the surrounding ring is.
Bay Size- Horizontal spacing between poles, in cm. Set automatically by Style (200 modern, 210 medieval) and then freely editable.
Floor Height - Vertical distance between floors (one "lift"), in cm. Set automatically by Style (250 modern, 200 medieval) and then freely editable.
Number of Floors - How many stacked working floors to build. Hidden when Random Floors Per Bay is on.
Random Floors Per Bay - Gives each bay its own random floor count, for a stepped, uneven skyline instead of a flat top.
Min Floors / Max Floors (random floors only) - The lowest and highest floor count any bay can roll.
Footprint Sample Height (Wrap mode only) - The biggest height difference allowed between two neighbouring bays, so the skyline steps gently rather than jumping from 2 floors to 6 side by side.
Max Floor Step (random floors only) - The gap in cm left between the wrapped object and the inner ring of scaffold, so the poles do not clip into it.
Frame Mode - Which poles get built. Single-Sided Facade builds only the outer row (a thin screen against a wall). Double-Sided builds both rows (a real working platform). Full Perimeter rings all four edges of the block.
Brace Pattern - The diagonal bracing layout: None, Every Bay, Alternating Bays, Continuous Zig-Zag, or Random/Organic. Random/Organic mixes the patterns and flips brace direction per bay to break up the repetitive look.
Brace Skip Chance - Chance that any eligible bay simply has no brace, for a looser, less uniform feel.
Generate Decking - Whether to lay walkable planks on each floor. Off gives you the bare structural frame only.
Generate Decking- How many stacked working floors to build. Hidden when Random Floors Per Bay is on.
Ground Deck - Also lay a deck (and its rails) at ground level. Off means the lowest deck sits one lift up off the ground.
Plank Gap - The lowest and highest floor count any bay can roll.
Deck Max Stretch - How far a single deck plank is allowed to stretch along its length before the tool splits the span into several shorter planks instead. The rule is: if the span is no longer than the plank's real length times this number, one plank is stretched to fit; if the span is longer, the tool lays down several shorter planks end to end (each shrunk slightly) rather than smearing one mesh across the whole gap. Default 1.5 means "stretch up to 150% of the real length, otherwise use more planks." Lower it toward 1.0 for very strict proportions; raise it if you prefer fewer, longer boards.
Generate Couplers - Places coupler/clamp meshes (Modern) or lashing meshes (Medieval) at the joints where poles and rails meet.
Each slot here is a LIST of meshes, not a single mesh. The generator picks one random (seeded) per piece, so adding several variants to a slot gives natural variety automatically. Each entry also carries its "long axis" - the direction the mesh's length runs - so the tool knows which way to stretch it. Poles are usually authored along +Z; rails and planks along +X or +Y.
Pole Meshes - Vertical pole / standard variants.
Ledger Meshes - Horizontal rail variants used on the OUTER faces of the platform - the open sides facing air. These are your guardrail-side rails.
Interior Ledger Meshes - Rail variants used for spans INSIDE the platform, where there is structure on both sides. Leave this empty to simply reuse the outer Ledger meshes (this is correct for Medieval, where inside and outside rails are the same timber). For Modern, fill it with a different profile (for example a board-bearer transom) to distinguish inner spans from the outer guardrails.
Deck Meshes - Deck plank variants. Auto-filled across each bay and lightly scaled to fit.
Brace Meshes - Diagonal brace variants. Scaled to span corner to corner.
Coupler Meshes - Coupler / clamp / lashing / base-plate variants placed at joints. Not scaled.
Stair Meshes - Stair and ladder variants for getting between floors. Authored to climb up +Z over their own height. You need at least one here for stairs to appear.
Clutter Meshes - Prop variants (buckets, loose planks, tools, debris) scattered on the decks.
All of this is driven by Seed and is what stops the scaffold looking like a sterile CAD model.
Variation Amount - The master dial. It multiplies every jitter and skip value below it. 0 gives a clean, machined, perfectly aligned scaffold; 1 gives full weathered chaos. Tune this one first, then fine-tune individual values only if needed.
Pole Position Jitter / Pole Rotation Jitter - Random position offset (cm) and lean (degrees) on poles.
Ledger Position Jitter / Ledger Rotation Jitter - Random offset and twist on rails.
Plank Position Jitter / Plank Rotation Jitter - Random offset and roll on deck planks.
Plank Missing Chance - Chance any given plank is left out entirely (scaled by Variation Amount).
Ledger Missing Chance - Chance any given rail is left out (scaled by Variation Amount).
Length Jitter - Small random length variation on rails, braces and planks.
Weathering Variation - Experimental feature. How much per-piece rust/weathering variety is written into the meshes' custom data. This rides along on the instances so your material can read it and vary the surface look piece to piece. 0 makes every piece weather identically.
This section decides what the base of the scaffold sits on.
Projection Target - What each pole base anchors to as it traces straight down: No Projection (flat ground at the actor's height), Landscape Only, Static Mesh Only, or Both. Use Landscape Only when you want it to ignore props on the ground; use Both for the general case.
Max Trace Distance - How far up and down (cm) each pole looks to find the ground. Increase it on very tall or very deep terrain.
Align Base To Slope - Tilts base plates / mud-sills to match the slope of the ground under them, instead of leaving them flat.
Ground Follow - How much the LOWEST deck rides up and down with the terrain instead of staying perfectly level. The effect fades with height - strongest on floor one, gone by floor three - so only the bottom of the structure undulates with the ground while the upper floors stay flat and believable.
Ground Follow Smoothing - How strongly each pole's ground-following is averaged against its neighbours, so the bottom edge curves smoothly rather than zig-zagging.
Start from Style, then Preset, then tune.
Pick a Style to get the right meshes and base sizes, optionally stamp a Preset for a coherent shape, then hand-tune. Doing it in that order means each step builds on the last instead of overwriting it.
Style and Preset do different jobs.
Style = the materials and meshes (what it is made of). Preset = the dimensions, bracing and variation (what shape it takes). You can freely mix them: a Medieval style with a Modern Access Tower preset is perfectly valid.
Add multiple meshes to each slot.
The single biggest win for realism is putting three or four pole variants, a few plank variants, and a couple of brace variants in their slots. The generator mixes them automatically and the repetition disappears.
Use Variation Amount as your realism dial.
Rather than tweaking ten jitter values, move Variation Amount first. Around 0.3 to 0.5 reads as "real but maintained"; push toward 1 for abandoned or war-torn looks.
Turn Auto Generate OFF before saving the level.
Leaving it on means the scaffold regenerates every time the level loads, which is slow and can cause surprises. Turn it on only while actively tuning, then off again.
Bake when you are done.
Once the look is locked, Save As Static Mesh turns the whole thing into one asset. This is lighter at runtime and lets you place copies freely.
Cull volumes are your doorways and windows.
Drop a simple box actor where you want an opening, add it to Cull Volumes, and scale the cut with Bounds Scale. Much easier than trying to design gaps into the grid.
For wraps, keep the sample height low and use the debug view.
A low Footprint Sample Height keeps the tool reading the base of your object, not whatever flares out higher up. If a wrap looks wrong, turn on Debug Footprint to see exactly what it detected.
Nothing appears when I press Generate. - The most common cause is empty mesh slots. You need at least one Pole mesh and one Ledger mesh assigned. If Style is set to Modern or Medieval the tool fills these for you; if it is set to Manual, you must add them yourself. Check the output log for a warning naming any mesh that failed to load.
I switched Style from Modern to Medieval and nothing changed. - Make sure you press Generate Scaffold after changing the Style. A genuine style change now replaces the whole mesh set, so it should swap cleanly. If a particular mesh does not appear, check the output log - a wrong asset path shows up there as a load warning.
My hand-picked meshes got wiped when I changed something. - They should not - hand-editing any mesh slot switches Style to Manual specifically to protect your picks. If you then deliberately set Style back to Modern or Medieval, that is treated as a real style change and will replace the set. Keep Style on Manual once you are hand-picking.
Modern decks do not spawn manhole ladders. - This was a known issue with wide deck panels and is fixed. Modern panels are wide, so only a few fit per bay; the tool now either cuts a proper hole when at least four planks fit, or opens the entire deck cell and anchors the ladder to the bay edge when fewer fit. If you still see no manhole ladders, confirm Generate Stairs is on, you have a Stair mesh assigned, and Stair Manhole is enabled with a non-zero weight.
The deck planks are stretched and smeared across a wide bay. - Lower Deck Max Stretch toward 1.0. That forces the tool to lay down more, shorter planks instead of stretching one mesh across the whole span.
The scaffold grows inside the object I am wrapping, or skips parts of it. - This was caused by the outline sampler reading only the centre of each cell; it now samples the whole cell and seals enclosed interiors, so it should follow the real silhouette. If a specific object still misbehaves, turn on Debug Footprint to see what is detected, and try lowering Footprint Sample Height so only the base is read.
The bottom edge of the scaffold zig-zags on bumpy ground. - Raise Ground Follow Smoothing toward 1, or lower Ground Follow so the base follows the terrain less aggressively.
The base poles float above or sink into the ground. - Check Projection Target is set to something that matches your ground (Both is the safe default), and raise Max Trace Distance if your terrain has tall or deep features the trace is not reaching.
It looks too perfect / too uniform. - Add more mesh variants to the slots, raise Variation Amount, and switch Brace Pattern to Random/Organic.
It regenerates slowly while I work. - Turn Auto Generate off and use the Generate button manually. Large grids with many floors, stairs and clutter take longer; tune the look at a smaller size, then scale up for the final build.