A voxel-based 3D pathfinding plugin for Unreal Engine 5.5, 5.6, 5.7, and 5.8.
Build validation via TeamCity CI/CD using the Aeonix Demo project.
Aeonix Navigation provides 3d navigation generation and pathfinding for Unreal Engine 5.6+
Main Features:
- Sparse Voxel Octree for excelent memory efficient in sparse environment
- A* pathfinding with various heuristics for optimising queries
- A number of post-processing functions for smooth paths
- EXPERIMENTAL Dynamic modifier regions that provide runtime updates of selected regions with no re-allocation of navigation data
- Editor tools for visualization and debugging
- Place the plugin in your project's
Plugins/AeonixNavigationdirectory - Regenerate project files and build
- Enable the plugin in the Plugins menu
- Place an AeonixBoundingVolume in your level (Place Actors → Aeonix Bounding Volume)
- Scale it to encompass your desired navigable space
- Select it and configure in the Details panel:
- Octree Depth: Controls octree subdivision depth. Higher values create finer detail. Use 5-6 for human-sized characters
- CollisionChannel: Which geometry blocks navigation (usually ECC_WorldStatic)
- GenerationStrategy: "Use Baked" (pre-generate) or "Generate OnBeginPlay" (runtime)
- (Optional) Check 'Debug Leaf Voxels' to render blocked voxels (may need to increase the debug render distance)
- Click Generate button to create navigation data
For navigation around something that moves (a ship, a vehicle), add an AeonixVolumeComponent to the actor instead. It is a cube (set Half Extent) whose navigation data lives in the component's own frame, so it stays valid as the owner moves and rotates without regenerating.
- Collision Source: a component on the same actor implementing
IAeonixCollisionQueryInterfacethat answers blocking queries (e.g. from a voxel grid or a custom shape). Leave empty to use world physics on the Collision Channel. OverrideIsBlockedOriented/IsLeafBlockedOrientedfor exact rotated boxes (the defaults test an enclosing axis-aligned box) andGetBlockingBoundsto enable Fit. - Fit centres and sizes the cube around the source's blocking bounds plus Fit Padding, picking the smallest Octree Depth whose leaf voxels are no larger than Target Leaf Voxel Size.
- Bake generates and saves into an AeonixNavDataAsset (created beside the Blueprint if unset), loaded on BeginPlay when the strategy is Use Baked. The buttons work on a Blueprint's component template too: they run on the Blueprint editor's preview instance (so Generate with the debug toggles draws the octree in its viewport) and copy the result back. The preview actor is rebuilt when a property changes, so press Generate again after editing.
- Paths planned in it keep nav-space points (
FAeonixPathPoint::NavPosition);FAeonixNavigationPath::GetPointWorldPositionre-projects them through the volume's current transform, andUAeonixPathFollowingComponentfollows them that way.UAeonixFlyingMovementComponentrides the volume it is in (Ride Nav Volume). For agents that move in the volume's frame themselves,UAeonixSubsystem::FindPathInVolumepaths between nav-space points with no agent. - Dynamic regions are not supported on a component volume.
- Open your AI Controller or Character Blueprint
- Add AeonixNavAgentComponent
- Configure pathfinder settings
- Add BTTask_AeonixMoveTo task to your Behavior Tree
- Set the BlackboardKey to your target location (Vector or Actor)
- Configure AcceptableRadius (how close AI needs to get, typically 100-200cm)
Use AAeonixPathDebugActor (editor-only) to test pathfinding:
- Place two AeonixPathDebugActors in your level
- Set one to START, one to END
- Move them around to visualize paths in real-time
Aeonix Navigation Panel: Window → Aeonix Navigation
- View and manage all navigation volumes in the level
- Access volume settings and regeneration controls
Bounding Volume Details: Custom details panel when selecting a volume
- Quick access to generation parameters
- Generate button for creating/updating navigation
- Visualization toggles for debugging
- AeonixNavigation: Core runtime module (pathfinding, octree, subsystem)
- AeonixEditor: Editor integration (tools, visualization, debug actors)
- AeonixNavigationTests: Unit and integration tests
AAeonixBoundingVolume: Defines navigable 3D spaceUAeonixVolumeComponent: A navigable cube that moves with its ownerIAeonixNavVolumeInterface: What the subsystem, pathfinding and tools see of either volumeUAeonixNavDataAsset: Baked navigation data for a volume componentUAeonixNavAgentComponent: Enables AI to use navigationUAeonixSubsystem: World subsystem managing navigation and pathfindingAeonixPathFinder: A* pathfinding implementationUBTTask_AeonixMoveTo: Behavior Tree movement taskAAeonixPathDebugActor: Editor debug actor for testing
More indepth documentation to come. Please feel free to raise issues on github.
Unit tests are in Source/AeonixNavigationTests. Example levels are in AeonixDemo project.
Based on UESVON by midgen (me).
See LICENSE file.