LCM Nav3D Free demo Get it on Fab

Settings Reference: LcmNavigationManagerSVO

Every field on the navigation manager, in the order the Details panel presents them. Defaults and limits below are the shipping values.

If you only read one thing: the four settings that decide whether the plugin works well in your level are Infinite World, World Extent / Chunk Size, Min Voxel Size, and Clearance Padding. Everything else is refinement.

Concepts behind these are explained in Tutorial 02: Core Concepts.


The panel at a glance

The manager's Details panel is one LCM Nav3D group floated above the inherited Actor sections, then seven numbered sections in the order below.

Manager Details, upper half: header pills, Configuration Health, What You Get, section 1 Setup and section 2 Voxels

Figure 1 - Sections 1-2, plus the three blocks above them. Configuration Health and What You Get are not settings; they are what the settings below resolve to. They are worth reading before you change anything - the health block in this shot is reporting a raised invoker radius, and the What You Get block is reporting a 250 cm finest leaf from a 100 cm Min Voxel Size, which is the single most misread number in the plugin.

Manager Details, lower half: sections 3 Collision, 4 Performance, 5 Coarse Skeleton, 6 Debug and 7 Runtime State

Figure 2 - Sections 3-7. Two things to notice:


1. Setup

Infinite World: default off

The biggest decision. Off = one fixed navigation volume built up front. On = the world is divided into chunks generated around agents as they move.

Leave it off unless you have a genuinely unbounded or streaming world. Finite is simpler, faster and more predictable.

Ticking this hides World Extent and reveals Chunk Size and the skeleton options.

Levels that stream in late. When a streaming level loads after the navigation around it was already built, the chunks it overlaps are rebuilt automatically, so its geometry does not stay open air. Three console variables control this:

Console variable Default Meaning
r.LcmNav.Streaming.RevoxelizeOnLevelStreamIn 1 Rebuild the chunks a newly streamed level overlaps. 0 turns it off
r.LcmNav.Streaming.RevoxelizeGraceSeconds 2 Chunks built within this many seconds after the level arrived are rebuilt too
r.LcmNav.Streaming.RevoxelizeMaxPerTick 8 Most chunks released for rebuild per frame, so the work is spread out

Auto Build On Play: default on (finite only)

Builds the navigation volume at BeginPlay - voxelizing the whole world, on every launch, on every player's machine. Turn it off if you want to trigger BuildSVO yourself from Blueprint at a specific moment, or if you have baked the SVO to an asset.

Turn it off when you bake. The Bake to Asset button does this for you, and it is not a tidiness measure: the streaming proxy and the manager both write the navigation data during BeginPlay, and actor order is not guaranteed, so with both enabled which one the level ends up using is undefined. The Configuration Health section flags the combination.

Generation Strategy: read-only (infinite only)

Shows which streaming strategy was selected automatically.


2. Voxels

World Extent: default 10000 cm (finite only)

Half-width of the navigation volume, measured outward from the world origin. The default gives a 200 m cube spanning -10000 ... +10000 on each axis.

Range: 500-400000. Recommended UI range (slider): 2000-20000.

Anything outside this box has no navigation data. Paths to targets outside it fail. Size it to cover your play space.

How big can it actually be? It depends on Min Voxel Size, not on a fixed distance. The real limit is a voxel count: the world is 2 × World Extent wide and holds (2 × World Extent / Min Voxel Size)³ voxels against a 64 M ceiling - which is 400³. So the largest legal half-extent is 200 × Min Voxel Size:

Min Voxel Size Largest World Extent World size
50 cm 10 000 200 m cube
100 cm (default) 20 000 400 m cube
200 cm 40 000 800 m cube
500 cm 100 000 2 km cube

The property clamp used to be a flat 20000, which is the row for the default Min Voxel Size and wrong everywhere else - it blocked a perfectly legal 40 000 at 200 cm voxels, and allowed 8× over budget at 50 cm. A per-property clamp cannot express a rule that depends on another property, so the clamp is now just a sanity ceiling and Configuration Health reports the real budget live at whatever Min Voxel Size you are using. Exceeding it does not fail - the generator silently coarsens Min Voxel Size to fit, so you get less precision than you configured.

Trading voxel precision for area is a real choice, not a workaround: a 2 km flying-combat arena at 500 cm voxels is a sensible configuration. Just make it deliberately.

⚠ The volume does NOT follow the manager actor. The manager is a logical singleton with no root component, so its position is ignored - moving it does not move the navigation volume. Build your playable space around the world origin, or switch to an infinite world. The manager's Details panel reports the resolved bounds under What You Get so you can see them directly.

Chunk Size: default 8000 cm (infinite only)

Edge length of one streaming chunk.

Range: 1000-800000. Recommended UI range (slider): 3000-8000. The clamp carries the same caveat as World Extent above - it is a sanity ceiling, not the real budget, which depends on Min Voxel Size and is reported live in Configuration Health. Here the slider range is the number that matters: it is the measured-reliable band, and going outside it degrades long-range routing regardless of the budget.

⚠ Do not treat this as a free dial. It affects memory, generation cost, and whether long routes can be found at all. 8000 is the tested default. If you change it, re-test long-range routing specifically: a value that looks fine for short hops can break distant paths.

⚠ Chunk Size changes navigation precision, and not in the direction you expect

This is the single most surprising thing about the setting, so it is worth stating plainly.

Subdivision stops when a child's half-extent falls below Min Voxel Size, starting from Chunk Size / 2. The finest leaf edge you actually get is therefore Chunk Size / 2ᵏ - it lands somewhere between 2× and 4× Min Voxel Size, and it does not improve as Chunk Size shrinks. Measured on a real level at Min Voxel Size = 100:

Chunk Size finest leaf edge Chunk Size finest leaf edge
3000 375 cm (3.75×) 7000 219 cm (2.19×)
5000 312 cm (3.12×) 8000 250 cm (2.50×)
6000 234 cm 9000 281 cm

So a smaller Chunk Size can give you a coarser octree. At Chunk Size 3000 you get 375 cm leaves from a 100 cm setting - and an opening that stays navigable at 250 cm can voxelize shut at 375 cm. That is felt as "the agent refuses to path", which reads like a bug rather than a setting.

What to do: leave it at 8000 unless you have a measured reason. If you must change it, use the Auto-Tuner (Editor Tools) - it measures the leaf edge from the built octree for each candidate rather than deriving it, and gates on whether a route exists at all before comparing quality or cost.

Min Voxel Size: default 100 cm

The finest resolution the octree will subdivide to. The dominant quality/cost control.

Range: 10-2000. Recommended UI range: 25-500.

Rule of thumb: about half the narrowest gap agents must pass through.

It's a floor, not an exact size. The octree halves down from the world/chunk size, so effective resolution snaps to powers of two. 100 → 90 may change nothing; 100 → 60 may double memory. Tune by testing.

World Scale: default Standard

Which set of centimetre constants the manager uses. Standard is the shipped tuning for metre-scale worlds at a 100 cm leaf and is byte-identical to earlier releases. Small derives those constants from the finest leaf this manager produces - Clearance Padding becomes half the leaf (written into the property, which turns read-only), and the start-rescue probe distances and the large-node cost threshold scale with it - so a centimetre-scale world such as a 120 × 70 × 40 cm aquarium at 1 cm voxels gets defaults that mean the same thing. Custom keeps whatever you set. Change Min Voxel Size, World Extent or Chunk Size under Small and the padding is re-derived; it is re-derived again at BeginPlay so config-driven setups match the editor.

Min Voxel Size now accepts down to 0.5 cm and World Extent down to 50 cm. The finest leaf is 2-4× Min Voxel Size, so set half the leaf you want and make the world edge a power-of-two multiple of it. Small worlds are small in leaves too: below ~32 leaves across, node count grows nearly with volume as the leaf shrinks (the panel says so). See Small Worlds.

A few centimetre constants follow the leaf on every profile, because they live in the generator and the solver rather than on the manager: the neighbour-probe offset, the voxel line-of-sight sampling step, the waypoint-merge tolerance and the route executor's sampling floors are bounded by the finest leaf of the navigation data itself. They keep their previous values at production leaf sizes; there is nothing to set.

Padding Mode: default Centimetres

How Clearance Padding is expressed. Centimetres keeps the value you enter. Leaves derives it as Clearance Padding Leaves × the finest leaf whenever the leaf changes (and again at BeginPlay), so the blocked band around every surface stays the same number of leaves thick at every Min Voxel Size. That is the condition under which halving the leaf grows the octree by the surface law (about 4× per halving) instead of by a band that thickens, in leaves, as the leaf shrinks, which keeps the growth per halving under about 4.5×. World Scale = Small already derives half a leaf and takes precedence.

Clearance Padding Leaves: default 0.5

The multiple used under Padding Mode = Leaves. 0.5 inflates every surface by half a leaf, which is what Small derives. Range: 0-4.

Clearance Padding: default 100 cm

Inflates obstacles during voxelization so agents keep clear of surfaces.

Range: 0-1000. Recommended UI range: 0-300.

⚠ Keep this well below Min Voxel Size. Padding that approaches voxel size fills in doorways and corridors completely, and the pathfinder reports no route through openings you can clearly see. This is the single most common cause of "it says there's no path but I can see the gap".

Coarse Cell Size: default 2500 cm

Cell size of the coarse long-range routing layer. Larger = cheaper long-range planning, less precise. The default suits most levels.

Range: 100-20000.


3. Collision

Obstacle Query Channels

Which collision channels count as obstacles. Anything on these channels is voxelized as solid. Defaults to WorldStatic + WorldDynamic.

Empty means nothing, not everything. Unlike Allowed Obstacle Classes below, clearing this list does not widen the query - it voxelizes an empty world, and you get navigation data that says every point is open air. That passes every metric and shows up only as agents flying through walls. Bake to Asset refuses to run on an empty list for exactly this reason.

If a wall isn't blocking agents, check that its collision channel is in this list and that the mesh actually has collision enabled.

Allowed Obstacle Classes

Optional filter. Leave empty to consider all actors (normal). Populate it to restrict voxelization to specific actor classes (useful when you want to ignore scenery entirely).


4. Performance

Voxelization Method: default Auto

Where the octree is built. Auto builds it on the GPU, which is substantially faster, and falls back to the CPU automatically if no suitable GPU is present. GPU asks for the GPU explicitly, and CPU always builds on the CPU. Choose CPU only to force deterministic, reproducible builds.

Levels saved with the older Use GPU Voxelization checkbox are converted to this setting when they load.

Max Generations Per Frame: default 1

Chunk builds allowed per frame. Higher fills the world faster but can cause hitches. Range: 1+, UI up to 8.

Max Path Requests Per Frame: default 64

Path queries dequeued per frame. Raise for many agents replanning at once; lower to protect frame time. Range: 1-256.

Max Requests Per Frame: default 50

General request throttle. Range: 1-200.

Max Flow Solves Per Frame: default 4

Flow-field solves per frame. Range: 0-16.

Finite Obstacle Update Interval: default 0.1 s (finite only)

How often dynamic obstacle changes are folded into the octree. Lower = more reactive, more CPU. Range: 0-2 s. See Tutorial 05.

Chunk Quantized Macro Cache: default off

Caches long-range routes quantized to chunk boundaries. Helps when many agents share similar long-range routes (large crowds spawning together).

Pawn Agents (BT & StateTree) subcategory

Field Default Meaning
Use Flow Fields (pawn agents only) off Opt-in: pawn agents heading to a shared goal use one steering field instead of individual paths
Flow Field Threshold 16 Agent count at which a shared field is built (range 2-512)
Flow Field Cluster Cell Size 1000 cm Grouping granularity for shared goals (range 100-10000)

Flow fields are for swarms heading to the same place. For a handful of agents with individual goals they are pure overhead, so leave it off.


5. Coarse Skeleton (optional)

Two independent, composable ways to keep long-range macro routing complete in a streamed world. Both are opt-in and default off. They are not part of the base configuration - turn one on only when an agent must route to somewhere it cannot currently see. Agents operating inside their streaming bubble need neither.

Persistent Skeleton (runtime, no bake): default off (infinite only)

Keeps a lightweight long-range connectivity graph in memory so distant routes can be planned before the detailed chunks exist. No bake required; works on any world, including procedural ones.

Turn it on when an agent returns across ground it has already covered and must not lose routability over it. The cost is memory that grows with how much ground has been covered - one compact node per visited-then-evicted chunk, bounded by r.LcmNav.MaxSkeletonNodes, not by the size of the resident set.

Use Baked Skeleton (frame-0 completeness): default off (infinite only)

Loads a pre-baked skeleton so long-range routing is complete from the very first frame, including into never-visited space.

Tick this on first. The Bake Skeleton button only appears in the banner once it is on - nothing else reads a bake, so the button stays hidden until you have asked for one. Then click it Rebake after changing the level or the voxel settings - a stale bake is refused at load, and the Baked Skeleton (auto) line under 7. Runtime State will say so.

Baked Skeleton (auto) under 7. Runtime State always reports which of the two, if either, is actually active.


6. Debug

Draw Debug Volumes: default off

Draws the octree. The most useful diagnostic in the plugin: if a gap shows no fine voxels, the pathfinder can't route through it either. Expensive; turn it off when you're done.

Also available from Blueprint via SetDrawDebugVolumes / ToggleDrawDebugVolumes.

Draw Pathfinding Debug: default off

Draws computed paths.

Draw Infinite World Debug: default off (infinite only)

Draws chunk boundaries and streaming state.

Debug Redraw Coalesce Seconds: default 0.25 s

How long debug redraws are batched. Raise it if debug drawing itself is hurting frame rate.

Cost Areas subcategory

Field Default Meaning
Cost View Off Draws the cost areas while playing. Regions: each volume and what it costs. Heat: the octree tinted by price. The console variable r.LcmNav.CostView 0/1/2 overrides it; -1 hands control back
Cost View Filter none Whose eyes the view looks through: a stock Navigation Query Filter class. Empty = each area's own defaults

See Tutorial 10 for cost areas themselves.

Force Redraw SVO was removed. It was a checkbox that instantly unchecked itself, and it was destructive: on a level with no baked data it deleted the editor preview it was meant to refresh. Reloading a bake into the preview now happens automatically when you bake, and the manual action is the Refresh Preview button, which appears on the manager only when the level actually has baked navigation to reload.


7. Runtime State

Read-only diagnostics showing live counts of resident chunks, skeleton state and staleness. Useful when tuning an infinite world; nothing to set.


Build & Tools (Blueprint-callable)

Function Purpose
BuildSVO Build the navigation volume now
BuildSVOInEditor Build in-editor into memory, so EQS previews work without playing. Not saved
BakeFiniteSVOToAsset (finite) Save the SVO to an asset + streaming proxy, so the level stops voxelizing at launch. Turns Auto Build On Play off. Returns false and does nothing if a single-volume Bake Volume already owns this level's one finite volume
BakeSkeletonInEditor (infinite) Pre-bake the long-range skeleton for Use Baked Skeleton
LoadBakedSkeleton Load a previously baked skeleton
FindPath Synchronous path query: start, end, options, out array of points
FindCover Tactical cover query
UpdateDynamicObstacle Manually stamp an obstacle by bounds
SetMacroTopologyCell Manually mark a coarse cell blocked/free
ForceRedrawSVO, SetDrawDebugVolumes, ToggleDrawDebugVolumes, DebugDrawFlowField Debug

Per-agent settings

These live on the Fly To BT task / Fly To StateTree task, not the manager. Both tasks expose the identical surface, in six numbered sections:

1. Goal

Field Default Meaning
Acceptance Radius 100 cm Distance at which the goal counts as reached
Target Location - (StateTree only) world-space goal
Target Actor none (StateTree only) moving goal; overrides Target Location when chase is on
Timeout Seconds 0 (no limit) (advanced) Report Failed after this long in flight. For a goal that keeps moving away, or one reached only by a very long route

2. Movement

Field Default Shown when Meaning
Agent Scale 0 (= World Scale) always Multiplies every centimetre and speed value on the task (acceptance radius, speed, acceleration, deceleration distance, wall check, separation, drift replan, Minimum Agent Size and the follower's internal floors). 0 follows the manager's World Scale: 1 under Standard, finest leaf / 100 cm under Small (0.01 in a 1 cm world). A driving flight component adopts the same scale unless its own Agent Scale is set
Use Flight Movement Component off always Delegate the body to a ULcmFlightMovementComponent for 6-DOF drone / bird / fish dynamics
Flight Speed 600 cm/s not delegating Cruise speed
Max Acceleration 2000 cm/s² not delegating Lower = heavier feel; also sets how hard the agent can brake into its arrival
Flight Style Physics (Drones/Ships) not delegating vs Linear (Biological/Magic)
Deceleration Distance 800 cm not delegating and Physics-weighted Slow-down lead-in. LinearDirect has no inertia to bleed off, and the flight component brakes on v = sqrt(2·a·d) against the real goal distance instead
Banking Amount 4.0 not delegating Roll into turns (cosmetic)
Max Banking Angle 45° not delegating Roll limit (cosmetic)

Whoever owns the body owns its caps. Tick Use Flight Movement Component and this section collapses to that one checkbox: speed, acceleration, flight style and banking are set on the component's Flight Config instead, and the task reads them from there for its guidance, braking and chase-lead maths. Untick it and the task's own values apply. Exactly one place is ever live.

3. Pathfinding

Field Default Meaning
Query Options - Solver, heuristic, smoothing, agent size, wall-distance preference
Query Options > Filter Class none The stock Navigation Query Filter this agent sees cost areas through. Empty = the AI controller's Default Navigation Filter Class
Query Options > Require Complete Path off (advanced) Fail a request whose route stops short of the goal, instead of returning the part that can be planned now

4. Avoidance (the reactive knobs hide when Avoidance Style is CBS)

Field Default Meaning
Avoidance Style Reactive (Boids/Push) None / Reactive / Predictive (ORCA) / Context-Based
Avoidance Time Horizon 2.0 s ORCA look-ahead (Predictive only)
Collision Margin 1.2 Safety multiplier on the avoidance radius
Wall Check Distance 200 cm Wall probe range
Wall Push Force 4000 Wall push strength - keep it strong
Path Centering Force 600 0 = free drift, high = train-on-tracks
Separation Radius 150 cm Neighbour spacing
Separation Weight 2.0 Spacing strength

5. Moving Goal (Chase)

Field Default Meaning
Enable Goal Prediction off Intercept a moving target
Force Enable Chase off Activate chase without also setting r.LcmNav.Chase.Enable
Lead Seconds Cap 2.0 s Prediction limit
Drift Replan Cm 400 cm Target movement before replanning

6. Streaming (infinite worlds only)

Field Default Meaning
Frontier Stall Recovery Inherit Coast / climb out / arrive un-quantized when stalled at a streaming frontier. Inherit defers to the manager's Streaming Profile

Frontier Stall Recovery is the locomotion half only. Pinning chunks ahead of the agent is a separate world-level setting - Agent Corridor Prefetch on the LCM Nav3D Manager. They used to be one checkbox named for the half it mostly wasn't.

Solver and smoothing choices are described in Tutorial 02 §6.

StateTree tasks that finish at once. On UE 5.2 a task that completes, completes its whole state, so a FlyTo beside it stops. Find Cover, Chunk Prewarm, Streaming Aware, Find Actor By Tag and Pick Random Goal have Stay Running After Resolve: tick it when the task shares a state with a FlyTo, and the state runs until the FlyTo completes.

Console variables new in 3.4

Variable Default Meaning
r.LcmNav.CostView -1 Cost view override: 0 off, 1 regions, 2 heat. -1 = the manager's Cost View
r.LcmNav.Bridge.AutoRegister 1 Register the navigation proxy so stock Move To and EQS plan through LCM Nav3D
r.LcmNav.Bridge.ClaimDefaultAgent 1 With no Recast navmesh in the world, the proxy serves the default agent. See Tutorial 14
r.LcmNav.MacroPath.KnownFallback 1 When the coarse search reaches its limit, route through the streamed chunks instead of failing
r.LcmNav.MacroPath.CapRetrySec 5 After that happens, how long a route searches the streamed chunks only
r.LcmNav.MacroPath.CapRetryMaxSec 60 The wait doubles each time the full search reaches its limit again, up to this
r.LcmNav.Mass.SerialPhases 1 Sets mass.FullyParallel 0 at startup (see Troubleshooting). 0 leaves it alone
r.LcmNav.Mass.FlowAsyncBootstrap 1 A crowd's first flow field is built off the game thread. 0 = on the game thread, as before 3.4

Scenario Infinite Extent / Chunk Min Voxel Size Clearance Padding
Arena or single building off 10000 100 100
Tight interiors, small agents off 10000 50 25
Large outdoor level off 20000 200 100
Open / streaming world on 8000 100 100

Start here, then confirm with Draw Debug Volumes that the gaps you care about actually have voxels in them.