How to Place Actors and Meshes Along a Spline in UE5

Table of Contents

Works in Unreal Engine 5. Updated October 2026.

Quick answer: in an Actor Blueprint with a Spline and an Instanced Static Mesh component, open the Construction Script and:

  1. Clear Instances on the Instanced Static Mesh.
  2. Work out the count: Get Spline Length ÷ your spacing, rounded down, plus 1.
  3. For Loop from 0 to count − 1. Distance = Index × spacing.
  4. Get Transform at Distance Along Spline (Local space) and feed it into Add Instance.

Drag the spline points in the level and the meshes follow.

Step 1: Set up the Blueprint

  1. Create an Actor Blueprint.
  2. Add a Spline component and an Instanced Static Mesh component.
  3. Pick a mesh on the Instanced Static Mesh, and add a float variable Spacing (for example 200). Tick its eye icon so you can change it in the level.

Instanced meshes draw hundreds of copies cheaply, which matters for fences, posts and rocks.

Step 2: Space them by distance, not by spline point

Spline points are rarely evenly spaced, so placing one mesh per point looks uneven. Distance along the spline is even:

NodeWhat it gives you
Get Spline LengthTotal length in cm
Get Transform at Distance Along SplineLocation, rotation and scale at that distance
Get Location at Distance Along SplineLocation only
Get Rotation at Distance Along SplineRotation only, facing along the spline

Use Local coordinate space with Add Instance, because the instances belong to this actor. If your mesh points the wrong way, add a fixed rotation (for example 90° yaw) to each transform.

Step 3: Closed loops

For a ring of posts, tick Closed Loop on the Spline. Drop the “plus 1” from the count, or the last mesh can land on top of the first. For a perfectly even ring, set the distance to Index × (length ÷ count).

Placing actors instead of meshes

Spawn Actor from Class doesn’t work in the Construction Script. Two options:

  • In the editor: add a Child Actor component per point with Add Child Actor Component, and set its class.
  • At runtime: run the same loop on Event BeginPlay, with Spawn Actor from Class and World coordinate space.

Child Actors are fine for a handful of lamps or pickups. For hundreds of objects, use instanced meshes and spawn gameplay actors only where you need them.

Bending meshes along the curve

For roads, pipes and cables, you want one mesh stretched along each section, not copies. Use Add Spline Mesh Component per section, then Set Start and End with the location and tangent at both ends (Get Location and Tangent at Spline Point).

The no-Blueprint option: PCG

Unreal’s PCG framework can do this too: a Spline Sampler node followed by a Static Mesh Spawner. It is great for scattering with randomness, but it takes longer to learn than the loop above.

FAQ

My meshes are rotated wrong. Why?

The mesh’s forward axis isn’t X. Add a fixed rotation to every instance, or fix the pivot in your modelling app.

Can I randomise the spacing or scale?

Yes. Add a Random Float in Range to the distance or scale inside the loop. Use a Random Stream with a seed so the result doesn’t change every time you move the spline.

Does this work with splines imported from Blender?

Yes. An imported spline is a normal Spline component, so the same loop works.

Related tutorials

Skip the wiring. Spline Architect adds a Spline Mesh Layer component that lays a mesh along any spline in one Blueprint call, bending it to the curve, with spacing and collision options. Its Spline Movement component moves any actor along a spline over time, with looping, ping-pong and progress events. It works in packaged games.