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.

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.

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

Use GPU Voxelization: default on

Builds the octree on the GPU, which is substantially faster. Falls back to CPU automatically if no suitable GPU is present. Turn it off only to force deterministic, reproducible builds.

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.

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

2. Movement

Field Default Shown when Meaning
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

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.


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.