Tutorial 14 - Stock Move To and EQS with LCM Nav3D
Goal: make UE's own navigation nodes (Move To, AI Move To, Simple Move To, Find Path To Location Synchronously, EQS projection) plan through LCM Nav3D, and check that they do.
How it works
When a level has an LCM Nav3D Manager, the plugin
spawns a navigation-data proxy (LcmNavigationDataProxy). It
then asks UE's navigation system to register the proxy. Once registered,
stock queries for the proxy's agent go through LCM Nav3D, and LCM Nav3D
plans them in 3D.
UE registers a navigation-data actor only for a Supported Agent whose Navigation Data Class is that actor's class. The plugin picks that agent for you where it can, and reports what really happened. (Before 3.4 the proxy was refused on every map while the log said "registered".)
Step 1: pick your setup
| Your project | What to do |
|---|---|
| Only flying agents; no Recast navmesh in the level | Nothing. The proxy claims the default agent on this
world's navigation system
(r.LcmNav.Bridge.ClaimDefaultAgent 1, the default). Project
Settings are never written. |
| Flying agents and ground characters on a Recast navmesh | Add a Supported Agent for LCM Nav3D (Step 2). The navmesh keeps the default agent. |
| You want the stock nodes to ignore LCM Nav3D | r.LcmNav.Bridge.AutoRegister 0. |
Step 2: add a Supported Agent (mixed projects only)
- Project Settings → Engine → Navigation System → Agents → Supported Agents → +.
- Name: anything, e.g.
Flyer. - Navigation Data Class:
LcmNavigationDataProxy. - Agent Radius / Height: your flyer's size. UE uses them to pick the agent for a pawn, so make them differ from the ground agent's.
- On the flying pawn's Character/Pawn Movement → Nav Agent
Properties, use the same radius and height, or set
Preferred Nav Data to
LcmNavigationDataProxy.
Step 3: check it worked
The bridge reports one of these states, in the log and from Blueprint
or C++ (ULcmNavBridgeSubsystem::GetBridgeState() /
GetBridgeStatusText()):
| State | Meaning |
|---|---|
Registered |
Stock queries for the bridged agent go through LCM Nav3D. |
NotClaimed |
Another navigation data (a Recast navmesh) owns the default agent, and no Supported Agent names the proxy. Do Step 2. |
Failed |
The navigation system refused the proxy. The status text gives UE's reason. |
Waiting / Requested |
Not settled yet (the navigation system registers on a later tick), or auto-registration is off. |
A warning appears once if the bridge ends in NotClaimed
or Failed. It names the setting to change.
Cost areas with the stock nodes
A Filter Class on Move To (a
NavigationQueryFilter) works as it does with Recast. Its
area costs and exclusions are applied by the LCM Nav3D planner, the same
as on the LCM FlyTo nodes. Tutorial 10 covers cost-area
volumes and filters.
Limits
- The stock nodes follow the route with the pawn's own movement component. For 6-DOF flight dynamics (bank, thrust, archetypes), use the LCM Fly To BT or StateTree task, or the LCM Fly To Location Blueprint node.
Move Topath following in UE is ground-oriented: it projects points and treats acceptance in 2D unless the movement component flies. Give the pawn a flying movement mode, or use LCM Fly To.