Navigation3D volumetric free-space navigation
Dawn Engine Navigation3D represents flyable 3D free space with a Sparse Voxel Octree (SVO), runs any-angle pathfinding on it, then post-processes paths into followable trajectories for Hover or fixed-wing motion models. It complements surface-based RecastNavigation (navmesh) and also covers climb surfaces plus ground / air / climb hybrid routing.
Maturity: shipped. Provided by the Navigation3D Gem; depends on RecastNavigation and LmbrCentral. After enablement, the system component mounts automatically; you still add volume and agent components on scene entities.
It does not replace Recast ground navigation: ground still uses Detour; Navigation3D owns airspace, climb, and the cross-domain query facade.
What problem it solves
Drones, flying units, cliff climbing, and “walk then fly then land” gameplay need volumetric free-space navigation. A ground navmesh alone cannot express aerial corridors, no-fly zones, or takeoff / landing transfers. Navigation3D provides:
- Runtime voxelization or offline bake of queryable airspace from scene geometry;
- Deterministic single-chunk Lazy Theta* and cross-chunk HPA* pathfinding;
- Runtime cost / no-fly / flight-corridor overlays (no SVO rebuild when they change);
- A unified query facade that routes Ground / Air / Climb / Hybrid / Underwater to the right backend;
- Optional
FlightPathFollowComponentdesired-velocity output, plusNav3D.*operators whenHtnPlanneris also enabled.
With the Gem disabled, navigation behavior matches a Recast-only project.
How it works
Scene geometry (Recast / PhysX provider)
│
├─ AutoBuild (runtime voxelize) ──► SVO volume (chunks / radius tiers)
└─ Bake → .svonav → AP → .svonav_baked ──► same (optional streaming pages)
│
Query from/to ──► pick tier ──► Lazy Theta* / HPA* ──► geometric path
│
Hover / FixedWing post-process
│
FlightPath / trajectory
│
(optional) FlightPathFollow → desired velocity → game motion
Two rules run through the Gem:
- A path is not motion: queries return path / trajectory data only; the follow component publishes desired velocity and never writes Transform.
- Runtime overlay, not rebuild: cost zones, no-fly zones, flight corridors, and domain links are query-time overlays; changing them does not rebuild the SVO.
For large worlds the volume keeps a double-precision m_worldAnchor while the SVO uses volume-local single precision; the unified facade APIs take AZ::Vector3d world coordinates. Open-world projects typically combine this with
double-precision rendering and
World Streaming.
Quick start (summary)
- Enable
Navigation3D(usually alsoRecastNavigation). - Volume entity: add SVO Navigation Volume plus a same-entity geometry provider (
RecastNavigationProviderService); start withAuto build = true. - AI entity: add Flight Navigation, then query via
FlightNavigationRequestBusor the unified facade.
#include <Navigation3D/FlightNavigationBus.h>
Navigation3D::FlightPath path;
Navigation3D::FlightNavigationRequestBus::EventResult(
path, agentEntityId,
&Navigation3D::FlightNavigationRequests::FindFlightPathBetweenPositions,
fromWorldPos, toWorldPos);
For the full five-step walkthrough, debug draw, and optional following, see Getting started.
Handbook chapters
| Chapter | Contents |
|---|---|
| Getting started | Enable the Gem, mount volume and flight components, run one query |
| Core concepts | Domains, SVO / chunk / tier, coordinates, pathfinding, determinism |
| Components | Full field tables, service dependencies, defaults |
| Querying | Bus selection, sync / async, spatial primitives, scripting |
| Authoring and baking | AutoBuild / bake / streaming, cost zones, corridors, domain links, climb |
| Motion and following | Hover / FixedWing / Climb post-process and path following |
| Debugging | nav3d_* commands, Settings Registry, troubleshooting |
| HTN integration | Optional Nav3D.* operators and flight-agent setup |
| Programmatic API | When to use L1 directly |
Glossary
| Term | Meaning |
|---|---|
| SVO | Per-chunk sparse voxel octree; immutable after build; carries the airspace graph |
| Chunk | Volume tile (default 128 m), connected by border links; supports local rebuild and streaming |
| Radius tier | Pre-dilated SVO sets per agent radius; queries pick the smallest tier ≥ radius |
| Leaf voxel | Finest voxel (default 0.5 m); leaf blocks are 4×4×4 = 64 subvoxels |
| NavigationDomain | Ground / Air / Hybrid / Underwater / Climb |
| Domain link | Authored takeoff / cross-domain point for Hybrid routing |
| Cost modifier | Runtime cost field: prefer (<1), penalize (>1), no-fly (~1e9) |
Limits and related capabilities
You can rely on:
- SVO airspace + climb surfaces; AutoBuild / bake / streaming supply modes;
- Deterministic pathfinding and offline–runtime bake parity; runtime cost fields and domain links;
- Unified multi-domain queries; Hover / FixedWing post-process and path-follow helpers;
- Optional HTN operators;
nav3d_*diagnostics and volume validation.
Do not assume:
- The follow component writes Transform (you must apply desired velocity);
- AutoBuild still runs when a baked asset is assigned (it is ignored);
- Navigation3D replaces full DetourCrowd ground crowd simulation;
- Meaningful airspace can be voxelized without a geometry provider.
Next steps
- Getting started — shortest path to a working flight query.
- Double-precision rendering / World Streaming — large-world airspace usually pairs with both.
- Flight — feed desired velocity into flight control.
- Water — underwater hybrid routing.
- HTN Planner — drive takeoff / fly / land from a planner.
Getting started
Enable Navigation3D, mount an SVO volume and flight agent, run one flight query, and verify with debug draw.
Core concepts
Five navigation domains, SVO / chunk / radius tier, coordinate conventions, Lazy Theta* and HPA*, query data flow, and the determinism contract.
Components
Service dependencies, serializable fields, and defaults for every Navigation3D runtime and editor component.
Querying
Choose the right bus, run sync and async pathfinding, use spatial primitives, climb queries, and ScriptCanvas / Lua bindings.
Authoring and baking
AutoBuild / bake / streaming airspace supply, cost zones, flight corridors, domain links, climb surfaces, and editor Test flight.
Motion and following
Hover / FixedWing / Climb post-process, FlightPathFollowComponent desired velocity, heading modes, and velocity-obstacle avoidance.
Debugging
nav3d_* console commands, layered debug draw, Settings Registry runtime budgets, and troubleshooting.
HTN integration
Optional Nav3D.* operators, .htnnode presets, FlightAgentSensorComponent, and a minimal HTN flight-agent setup.
Programmatic API
When to bypass components and use SvoBuilder / SvoPathfinder directly, with a minimal L1 example.