Navigation3D authoring and baking

How to obtain SVO airspace / climb surfaces from scene geometry, when to use each supply mode, and how to place cost zones, no-fly zones, flight corridors, and domain-transfer links.

Three ways to supply an SVO

Scene geometry (Recast / PhysX provider)
 ├─ AutoBuild (runtime voxelize)
 └─ Bake to asset → .svonav → AssetProcessor → .svonav_baked
 ├─ Assign Baked asset (load all at once)
 └─ + Streaming enabled → page with SetActiveRegion
ModeWhenHow
AutoBuildIteration, small volumesAuto build = true; voxelize on activate
Baked assetShipping, large / static airspaceBake → .svonav_bakedBaked asset (AutoBuild ignored)
StreamingVery large worldsBaked asset + Streaming enabled with SetActiveRegion

Bake pipeline

Baking is a two-step pipeline:

A. Editor Bake (geometry → source JSON)

  1. Mount EditorSvoNavigationVolumeComponent (or climb’s EditorClimbNavigationComponent).
  2. Same entity must offer RecastNavigationProviderService.
  3. Click Inspector Bake to asset: writes BakeOutputPath (SVO default Assets/Navigation3D/<EntityName>.svonav; climb .climbsurf).
  • SVO GeometrySource can record a level / prefab path so AssetBuilder rebakes when geometry changes.

B. AssetBuilder (source → baked product)

BuilderInputOutput
SvoNavigationBuilderComponent*.svonav*.svonav_baked (magic SVON)
ClimbSurfaceBuilderComponent*.climbsurf*.climbsurf_baked

Offline bake and runtime self-build share the L1 core and are designed to be byte-identical.

C. Runtime consumption

Assign .svonav_baked / .climbsurf_baked to Baked asset; load on OnAssetReady and skip geometry self-build.

StageSVOClimb
Source (JSON).svonav.climbsurf
Baked product.svonav_baked.climbsurf_baked

Climb surface authoring

  1. Mount EditorClimbNavigationComponent + a geometry provider.
  2. Tune ClimbBuildConfig (default slope 55°–120°, sample spacing 1 m).
  3. Iterate with Auto build; for shipping Bake to asset.climbsurf → AP → .climbsurf_bakedBaked asset.
  4. On the AI / Hybrid entity, mount ClimbNavigationComponent (or point Climb entity at the surface entity) and query via ClimbNavigationRequestBus (see Querying).

Cost zones, no-fly, and flight corridors

These are runtime overlays—changes apply to the next query without rebuilding the SVO. Prefer declarative components.

  1. Add a Shape (Box / Sphere / …) plus NavigationCostModifierComponent.
  2. Set Target volume to the SVO volume.
  3. Multiplier: <1 prefers, >1 penalizes.
  4. No-fly: overrides Multiplier with ~1e9 no-fly cost.

Time-varying costs: NavigationVolumeRequestBus::AddTimeVaryingCostModifierVolume (low/high multipliers + period + phase).

  1. Add NavigationFlightCorridorComponent; Target volume points at the SVO.
  2. Waypoints (entity-local) + Radius (half-width) extrude the corridor.
  3. Preference is clamped to [0.01, 1.0]—preference only, not penalty / no-fly.
  1. Add NavigationDomainLinkComponent (needs Transform).
  2. Ground offset / Air offset (entity-local) land in domains A / B.
  3. Domain A / B, Direction (bidirectional / takeoff only / land only).
  4. Traversal cost / Max agent radius / Enabled.

Per-query: NavigationQueryConfig::m_preferredLinks / m_forbiddenLinks.

VTOL alternative: enable Free vertical transfer on HybridNavigationComponent so vertical transfers are allowed where free-column height ≥ Safe climb height, without placing every link.

Local rebuild and streaming

  • Local rebuild: on local geometry edits call RebuildRegion(worldAabb) to rebuild only dirty chunks (cheaper than RebuildVolume()).
  • Streaming: Streaming enabled plus World Streaming via SetActiveRegion. Build submit budget is BuildChunksPerTick (default 4; tunable with nav3d_setBuildBudget).

Large-world airspace often pairs with double-precision rendering / Cesium 3D Tiles.

Editor Test flight

EditorSvoNavigationVolumeComponent Test flight: TestFrom / TestTo (volume-local) and TestPostProcessor draw a path in the viewport immediately—no AssetProcessor wait.

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.