Navigation3D getting started

Get an agent pathfinding in 3D free space as quickly as possible: mount an SVO navigation volume, add a flight agent, run one flight query, and see the path in the viewport. The Gem does not ship ready-made volume assets—airspace comes from scene geometry via runtime build or offline bake. AutoBuild is the fastest starting point.

Prerequisites

  • Navigation3D is enabled in the project (Project Manager or project.json). After enablement, Navigation3DSystemComponent joins the system entity automatically.
  • Geometry is available: the SVO volume gathers triangles through RecastNavigationProviderService on the same entity (from RecastNavigation, or a PhysX geometry provider). You usually also enable RecastNavigation.
  • If you use offline bake, AssetProcessor is running so .svonav sources compile to .svonav_baked.

Minimal loop (five steps)

1 Enable the Gem
 → 2 Add SVO volume + geometry provider on an entity
 → 3 Add FlightNavigationComponent on the AI entity
 → 4 AutoBuild or Bake the SVO
 → 5 Query + verify with debug draw

1. Mount a navigation volume

Create a scene entity as the container for flyable space:

  1. Add SVO Navigation Volume (SvoNavigationVolumeComponent / editor EditorSvoNavigationVolumeComponent).
  2. On the same entity, add a geometry provider that offers RecastNavigationProviderService—it decides which triangles become obstacles.
  3. Defaults are enough to start (full fields in Components):
FieldDefaultPurpose
Leaf voxel size0.5Finest sub-voxel edge length (meters)
Chunk size128.0World size of each SVO chunk (meters)
Radius tiers{ 0.5 }Agent radius tiers baked into the SVO (meters)
Auto buildtrueBuild from geometry on activate (ignored if a baked asset is set)

2. Add a flight agent

On the AI entity, add Flight Navigation (FlightNavigationComponent; Game menu only, no editor variant):

  • Volume entity: point at the volume; leave empty to resolve by query point at runtime.
  • Post processor: Hover (default, omnidirectional) or FixedWing.
  • Agent: radius, max speed / accel, and kinematics that shape the trajectory (see Motion and following).

3. Make the SVO ready

  • AutoBuild (fastest): with Auto build = true, the volume voxelizes from the geometry provider on activate. Good for iteration.
  • Offline bake (preferred for shipping): editor Bake to asset.svonav → AssetProcessor → .svonav_baked → assign Baked asset. AutoBuild is ignored when a baked asset is set. See Authoring and baking.

When build / load finishes, NavigationVolumeNotificationBus::OnNavigationVolumeReady fires; you can also poll IsVolumeReady().

4. Run a query

Synchronous flight query:

#include <Navigation3D/FlightNavigationBus.h>
#include <Navigation3D/SvoPathTypes.h>

Navigation3D::FlightPath path;
Navigation3D::FlightNavigationRequestBus::EventResult(
 path, agentEntityId,
 &Navigation3D::FlightNavigationRequests::FindFlightPathBetweenPositions,
 fromWorldPos,
 toWorldPos);

if (!path.m_waypoints.empty())
{
 // path.m_waypoints is a world-space polyline; path.m_length is total length (m)
}

For hybrid / multi-domain scenes prefer the unified facade: HybridNavigationComponent + NavigationQueryRequestBus::FindPath (double-precision world coordinates). Sync is fine for low frequency; use *Async for high frequency or large maps. See Querying.

5. Enter game mode and verify

  • nav3d_debugDraw 1 — paths / trajectories; nav3d_debugDraw 2 — also SVO and occupied voxels.
  • nav3d_debugAgent <entityId> — focus draw on one agent.
  • nav3d_dumpStats — scheduler and per-volume stats.
  • nav3d_validateVolume <volumeEntityId> — SVO invariant self-check.

More in Debugging.

Turn a trajectory into motion (optional)

Queries return path / trajectory data; they do not move the entity. To actually fly:

  • Consume m_waypoints / the trajectory in your motion layer; or
  • Add FlightPathFollowComponent and each frame read GetDesiredVelocity() into your rigid body / character controller (it never writes Transform). See Motion and following.

To feed desired velocity into a flight-control pipeline, see Flight.

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.