Skip to main content

UE 5.8 PCG integration

The SA nodes turn what you authored - streets, lots, walls, footprints - into data a PCG graph can read, reshape, and build from. You draw the city's skeleton by hand; the graph fills in the buildings, props, and details, and refills them every time the skeleton changes.

How the nodes divide the work​

SA PCG nodes separate authored meaning from spawned output:

  1. Read live Spline Architect actors: lots, road edges, crossings, intersections, facades, surfaces, or effective generation splines.
  2. Transform boundaries and points: subdivide, offset, merge, sample, orient, choose assets, and prune footprints.
  3. Generate Wall, Curve, or Building data—or feed normal PCG spawners.

Prefer the Data output mode on SA Spawn nodes. It emits static pieces as points with SA_Mesh for Unreal's Static Mesh Spawner and non-static pieces as Dynamic Mesh data. Building and Wall output also carries precise SA_PresetTags, so one generated layer can be filtered without splitting the generation graph by asset. PCG then owns the normal spawn lifecycle and keeps the Outliner clean.

Generate what shows, instance the rest​

SA Spawn Building generates a whole modular building - every piece - for every footprint you hand it, on every regeneration. That is the right cost for a building the player walks past and the wrong cost for a skyline.

For anything at city scale, author a few buildings, convert them to static meshes, and instance those with SA Edge Placer or SA Pick From Pool. Keep SA Spawn Building for hero buildings and close-up streets. The city tutorial covers both, side by side.

First graph​

For a hero block - a handful of buildings, generated in full - use:

SA Get Lots (Lot Boundaries)
→ Filter Data By Attribute (SA_LotEmpty == false)
→ SA Subdivide Lots
→ SA Polygon Offset (negative setback)
→ SA Spawn Building (Data)
Generated → Static Mesh Spawner (By Attribute: SA_Mesh)
Dynamic Meshes → Spawn Dynamic Mesh

For road props:

SA Get Road Edges
→ SA Edge Placer
→ SA Prune Footprints
→ Static Mesh Spawner (By Attribute: SA_Mesh)

Data domains and filtering​

Getter nodes write whole-object attributes to the Data domain and, where useful, mirror them to spline control points/elements. Use Filter Data By Attribute to keep or branch complete lots, crossings, intersections, or paths. Use Filter Attribute Elements after sampling when the decision is per point.

Spawn output adds two complementary tag paths:

  • use Array Contains on SA_PresetTags, then Attribute Filter, to select individual static pieces or precise Dynamic Mesh data such as BaseFloor;
  • use Filter Data By Tag to keep a complete generated output classified by a top-level Building or Wall tag such as Small.

Examples:

  • whole lots: SA_LotZone, SA_LotEmpty, SA_IsExterior;
  • sampled surfaces: SA_IsTopFloor, SA_SurfaceType, SA_Slope;
  • facade cells: SA_FloorIndex, SA_NormalizedU, SA_FacadeFace.

Actor output modes​

ModeResult
DataRecommended. Static pieces become points with SA_Mesh and precise SA_PresetTags; non-static pieces use tagged Dynamic Mesh data.
Components (collapse actor)Harvests generated components onto a PCG-managed container and destroys the transient SA actor. The container receives top-level preset tags; harvested components retain precise tags.
ActorsLeaves PCG-managed SA_PCG_* actors in a PCG_SplineArchitect Outliner folder. They receive top-level preset tags, are recreated on graph regeneration, and should not be hand-edited.

PCG graphs are procedural ownership boundaries. Bake editor-authored SA actors normally; let the PCG component manage anything it spawns.