Spline meshes: roads, pipes and cables
Bending straight kit pieces along curves to build roads, pipes, cables, fences and walls; Unreal Spline Mesh components and landscape splines, Blender's Curve modifier and Houdini's Sweep, and how to model a piece that deforms cleanly.
A spline mesh is a straight piece of geometry that is bent along a curve (a spline). You model one short, straight segment of road, pipe, cable, fence or wall, and the engine or modeling tool repeats and deforms it along a path you draw. Epic describes landscape splines as "a powerful toolset for creating roads, paths, fences, and other long, contiguous features" (Unreal Engine 5.8 documentation: Landscape Splines in Unreal Engine).
Splines save modeling time and keep long features editable: you move a control point and the road follows. They also fit the modular way of working, because one well-made piece covers kilometres of path.
#How a spline mesh deforms
A spline is a curve defined by control points and tangents. For each segment between two points, the tool takes the straight mesh, lays it along the segment and moves every vertex sideways and up or down to follow the curve. Only vertices move. The faces between them stay flat, so a piece with few edge loops along its length cuts corners on a bend, while a piece with many loops follows it closely.
#Spline Mesh components in Unreal Engine
In Unreal, a Blueprint can place Spline Mesh components along a Spline component. World of Level Design's tutorial builds one for cables, walls and roads (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…):
- The construction script measures the mesh with its bounding box to get its length, divides the spline length by it to get the number of segments, and loops over them (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…).
- Each loop adds a Spline Mesh component, sets its mesh, Forward Axis (X by default), collision and material, then calls Set Start and End with the location and tangent at the start and end distance along the spline (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…).
- Tangents go through Clamp Vector Size with the mesh length as the maximum, which "prevents mesh distortion as the spline grows" (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…).
- A second version adds a Spacing value for props such as fences and poles that should not touch (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…).
#Landscape splines
Landscape splines live on the landscape itself. You press "Ctrl + Left-click to set your spline's first control point", and each further click adds a point and connects it "by a spline segment" (Unreal Engine 5.8 documentation: Landscape Splines in Unreal Engine).
- Meshes. Each segment has a Spline Meshes list; "multiple meshes will be applied in random order controlled by the random seed", with settings for Forward Axis and Scale to Width (Unreal Engine 5.8 documentation: Landscape Splines in Unreal Engine). Random order lets a road alternate between a clean piece, a cracked piece and a patched piece.
- Terrain deformation. Splines "do not affect the heightmap until a Spline edit layer is added"; then the heightmap "is raised or lowered to fit the spline, with a smooth cosine-blended falloff on either side", controlled by Raise Terrain and Side Falloff (Unreal Engine 5.8 documentation: Landscape Splines in Unreal Engine).
- Layer painting. Layer Name paints a landscape layer under the spline, for example a gravel layer under a dirt road (Unreal Engine 5.8 documentation: Landscape Splines in Unreal Engine).
- Runtime virtual texture. Epic says "a Landscape spline rendering a road mesh and material should write to the RVT to apply its material along the spline" (Unreal Engine 5.8 documentation: Runtime Virtual Texturing in Unreal Engine), so the road blends into the ground rather than sitting on top. See blending meshes into terrain.
#Blender curves
Blender's Curve modifier "provides a simple but efficient method of deforming a mesh along a curve object" (Blender Manual: Curve Modifier). The Deformation Axis sets "the axis that the curve deforms along". The modifier works in global space, so "the actual position of the geometry relative to the curve is determinant to get a correct result"; the manual recommends starting with the object origin at the curve's origin (Blender Manual: Curve Modifier). A curve point's Tilt twists the mesh and its Radius scales it (Blender Manual: Curve Modifier), which is how cables sag thinner or roads bank on corners.
Blender is useful for baking spline geometry into unique meshes, for example a cable bundle for a hero prop, or for previewing a road piece before it goes into the engine.
#Houdini
Houdini builds spline geometry procedurally. The Sweep node "creates a surface by sweeping a cross-section curve along a spine curve"; its Surface Shape can be a round tube, a square tube or a ribbon ("Use a line as the cross-section, producing a ribbon shape") (Houdini 22.0 documentation: Sweep 2.0 geometry node). Compute UVs runs U across the profile and V along the spine, and Length-Weighted UVs keeps them even where edges crowd together; end caps can be open, a single n-gon or a grid (Houdini 22.0 documentation: Sweep 2.0 geometry node).
Houdini tools go further than bending one piece. Nick Owens' asset "creates road, intersection, and bridge geometry from Bezier curves" for Unity (ArtStation: Procedural Streets and Bridges in Houdini &…). At Guerrilla, the Horizon Zero Dawn river tool started from "a curve and a terrain", and a Houdini cable generator grew cables one by one so that they never intersected (80 Level: Horizon Zero Dawn: Procedural Rivers & Wires).
#Building a kit piece that deforms cleanly
The same rules apply in Unreal, Unity and Blender:
- Model along the forward axis. UE5's default forward axis is X; if you model along another axis, change the Forward Axis setting (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…).
- Put the pivot at one end, at the start or end of the piece (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…). See pivot point.
- Know the length. The World of Level Design example cable is 150 cm long, a round number that makes troubleshooting easier (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…). Use your project's grid, for example 400 cm for a road piece.
- Add even edge loops along the length, enough to bend smoothly (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…). A 4 m road piece with a loop every 50 cm (8 segments) handles gentle curves; tight bends need more.
- Make the ends match. The first and last cross-sections must be identical so pieces join without a seam.
- Tile the UVs along the length. Map the piece so the texture repeats from one end to the other, for example on a strip of a trim sheet, so the join between pieces is invisible.
- Keep detail out of the bend. Bolts, drains or kerb stones bend with the mesh. Place them as separate props or use a spacing spline (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…).
#How to make one
This builds a cable that sags between two poles in Blender and Unreal Engine 5, following the World of Level Design method (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…).
- Model the segment in Blender. Make an 8-sided cylinder 150 cm long along +X, with an edge loop every 10–15 cm. Put the origin at one end.
- UV it. Unwrap so U goes around the cable and V runs the full length, tiling end to end.
- Export to FBX and import into Unreal.
- Create the Blueprint. Make an Actor Blueprint and add a Spline component (not a Spline Mesh) (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…).
- Measure the mesh. In the construction script, use Get Bounding Box on the mesh and store the X size as Mesh Length (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…).
- Loop over segments. Divide spline length by Mesh Length, truncate, subtract 1, and loop that many times (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…).
- Add and place each piece. Add a Spline Mesh component, set its mesh, forward axis and material, then Set Start and End from location and tangent at index × Mesh Length and (index + 1) × Mesh Length (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…).
- Clamp tangents to Mesh Length to avoid stretching (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…).
- Shape the sag. Place the actor and Alt-drag spline points to add control points (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…); drop the middle point to make the sag.
- Set collision. Cables usually need No Collision; walls and road barriers need Query and Physics (World of Level Design: UE5 Blueprint: Create Meshes Along a Spline…). See collision meshes.
For a road on a landscape, use landscape splines instead: assign a road piece in Spline Meshes, add a Spline edit layer so the terrain conforms, set Side Falloff, and paint a gravel layer with Layer Name (Unreal Engine 5.8 documentation: Landscape Splines in Unreal Engine).
#Video tutorials
#Use in recent games
- Hogwarts Legacy (Avalanche Software, 2023). Molly Warner, an environment artist at Certain Affinity on the Lower Hogsfield castle ruins, lists "spline placement" alongside set dressing, kitbashing, terrain painting and decal placement (ArtStation: Hogwarts Legacy - Castle Ruins). Splines are part of everyday world-building work, not only a tech-art task. See set dressing and art passes.
- Horizon Zero Dawn (Guerrilla Games, 2017). Rivers were built from a curve snapped to the terrain, with width driven by a ramp, scale and slope, and delivered to environment artists through a Houdini plugin inside Maya; a Houdini cable generator built non-intersecting cables (80 Level: Horizon Zero Dawn: Procedural Rivers & Wires).
#In different tools
| Tool | Feature | Notes |
|---|---|---|
| Unreal Engine | Spline + Spline Mesh components (Blueprint) | Fully custom; spacing, collision and materials per piece (World of Level Design) |
| Unreal Engine | Landscape splines | Random mesh lists, terrain deformation, layer painting (Unreal Engine 5.8 documentation); can write to RVT (Unreal Engine 5.8 documentation) |
| Blender | Curve modifier | Deformation axis, tilt and radius; works in global space (Blender Manual) |
| Houdini | Sweep and custom tools | Profiles along a spine, UVs, end caps (Houdini 22.0 documentation); full road networks (ArtStation) |
Related tools for scattering along curves are in procedural placement and scattering and vegetation and procedural tools.
#Further reading and watching
Related pages: modular kits, trim sheets, pivot point, edge loop, procedural modeling, terrain and landscapes, blending meshes into terrain, mesh decals.
References
- · Landscape Splines in Unreal Engine · Unreal Engine 5.8 documentation · docs · accessed 2026-10-22
- · UE5 Blueprint: Create Meshes Along a Spline Procedurally (Seamless and with Spacing) · World of Level Design, 2026 · course · accessed 2026-10-22
- · Runtime Virtual Texturing in Unreal Engine · Unreal Engine 5.8 documentation · docs · accessed 2026-10-22
- · Curve Modifier · Blender Manual (source on projects.blender.org) · docs · accessed 2026-10-22
- · Sweep 2.0 geometry node · Houdini 22.0 documentation · docs · accessed 2026-10-22
- · Procedural Streets and Bridges in Houdini & Unity · ArtStation · web · accessed 2026-10-22
- · Horizon Zero Dawn: Procedural Rivers & Wires · 80 Level, 2017 · article · accessed 2026-10-22
- · Hogwarts Legacy - Castle Ruins · ArtStation, 2023 · web · accessed 2026-10-22
Also consulted
- · UE5 Blueprint Tutorial: Create Meshes Along Spline for Procedural Wires, Cables, Walls, Roads, More · YouTube · video · accessed 2026-10-22
- · UE5 Blueprint Tutorial: Create Procedural Meshes Along Spline for Props That Need Spacing/Distance · YouTube · video · accessed 2026-10-22
Pages that link here
- Mesh decals Topic
- Terrain and landscapes Topic
- Blending meshes into terrain Topic
Last updated 2026-10-22