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 FlightPathFollowComponent desired-velocity output, plus Nav3D.* operators when HtnPlanner is 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:

  1. A path is not motion: queries return path / trajectory data only; the follow component publishes desired velocity and never writes Transform.
  2. 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)

  1. Enable Navigation3D (usually also RecastNavigation).
  2. Volume entity: add SVO Navigation Volume plus a same-entity geometry provider (RecastNavigationProviderService); start with Auto build = true.
  3. AI entity: add Flight Navigation, then query via FlightNavigationRequestBus or 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

ChapterContents
Getting startedEnable the Gem, mount volume and flight components, run one query
Core conceptsDomains, SVO / chunk / tier, coordinates, pathfinding, determinism
ComponentsFull field tables, service dependencies, defaults
QueryingBus selection, sync / async, spatial primitives, scripting
Authoring and bakingAutoBuild / bake / streaming, cost zones, corridors, domain links, climb
Motion and followingHover / FixedWing / Climb post-process and path following
Debuggingnav3d_* commands, Settings Registry, troubleshooting
HTN integrationOptional Nav3D.* operators and flight-agent setup
Programmatic APIWhen to use L1 directly

Glossary

TermMeaning
SVOPer-chunk sparse voxel octree; immutable after build; carries the airspace graph
ChunkVolume tile (default 128 m), connected by border links; supports local rebuild and streaming
Radius tierPre-dilated SVO sets per agent radius; queries pick the smallest tier ≥ radius
Leaf voxelFinest voxel (default 0.5 m); leaf blocks are 4×4×4 = 64 subvoxels
NavigationDomainGround / Air / Hybrid / Underwater / Climb
Domain linkAuthored takeoff / cross-domain point for Hybrid routing
Cost modifierRuntime cost field: prefer (<1), penalize (>1), no-fly (~1e9)

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


Copyright © 2026 DawnEngine. All rights reserved.

DawnEngine is a commercial 3D engine distributed under the DawnEngine end-user license agreement. Engine binaries and source are proprietary and are not covered by the licenses below.

Documentation only: the prose and templates on this site are a derivative work of Open 3D Engine (O3DE) documentation by the O3DE Contributors, used under CC BY 4.0 (documentation content), Apache 2.0 (site code), and the MIT license (inline code samples).

The open-source 3D engine that DawnEngine is built on top of is Open 3D Engine . DawnEngine is not affiliated with, endorsed by, or sponsored by The Linux Foundation or the O3DE project. “O3DE” and “Open 3D Engine” are trademarks of The Linux Foundation.