Navigation Mesh¶
Warning
Navigation Mesh is currently only available in Isaac Sim with plans release fully in 2023.
Warning
Navigation Mesh is currently in Beta. For more information on pre-release and beta terms, please see the Omniverse License Agreement
Overview¶

Navigation Mesh, or “Nav Mesh”, is a tool used to generate a polygonal mesh that represents the traversable area of one or more agents. From that mesh, a linear path between two points can be generated.
Setup¶
Enabling the Extension¶
Upon enabling the omni.anim.navigation.bundle
extension, the Navigation
menu will be accessible through Window > Navigation
. The omni.anim.navigation.core
contains the backend, and the omni.anim.navigation.ui
contains the frontend elements.

Creating a Nav Mesh¶
Nav Mesh is a ground-based system and needs one or more meshes that represent a traversable area to build upon. It can build off of simple geometry or a custom polygon mesh.
Once the meshes are in the scene, generate a Nav Mesh by creating a new volume via Create > Navigation > NavMesh Volume
. A new NavMesh volume will be created, and the NavMesh automatically built on the ground.
NavMesh Bake Settings¶

There are two ways to access the build settings:
The
Window > Navigation > NavMesh
menu itemSelect any
NavMeshVolume
prim in the Stage and and in the Property panel, go to theNavMesh Volume
section. Click on theEdit NavMesh Settings
button.
Agent Option |
Result |
---|---|
Height |
The height of the agent size in scene units. The NavMesh will build only in areas where the agent height will fit. |
Radius |
The radius of the agent size in scene units.The NavMesh will build a buffer area against objects so that the agent cannot get too close to collide through. |
Max Slope |
The maximum angle in degrees that the NavMesh will build for. If the angle of the base geometry is greater than the slope angle setting, the NavMesh will not build. |
Max Climb |
The maximum height of objects the agent can step over. |
Auto Rebake Option |
Result |
---|---|
Auto Rebake |
If enabled, upon every stage update the NavMesh will rebuild. WARNING: this can be computationally expensive with large and complex scenes. |
Auto Rebake Delay |
The time in seconds it takes for the NavMesh to trigger a rebuild after the scene has changed. This is good to use for large and complex scenes. |
Cache Option |
Result |
---|---|
Enabled |
If checked, the system will cache previous results to speed up future bake times. |
Bake
: Takes the current settings and attempts to create a NavMesh.
Cancel All
: Cancels the current NavMesh bake.
Baked Mesh Settings¶

The Baked Mesh panel is used for assigning which objects in the scene will influence NavMesh baking and which ones will not.
Note
By default the NavMesh will exclude rigid Physics bodies. This can be disabled by unchecking Rigid Bodies
.
NavMesh Volumes¶
As many NavMesh Volumes can be added to the Scene as needed by going to Create > Navigation > NavMesh Volume
.
NavMesh Volumes can be moved, rotated, and scaled to ensure the right fit. Multiple NavMesh volumes can be be placed near each other to extend new areas of the NavMesh.
NavMesh Obstacles¶

NavMesh Obstacles can be used to create exclusion zones. Any prim type can have a NavMesh Obstacle attached. To add an Obstacle, right click on a Stage prim and go to Add > Navigation > Add NavMesh Obstacle
.
Obstacle shapes can be either boxes or cylinders, and the sizing and offsets can be adjusted.

NavMesh Obstacle Property |
Result |
---|---|
Box Size |
If the shape is a box, non-uniformly adjust the size of the shape independent of the primary volume |
Cylinder Height |
If the shape is a cylinder, adjust the height. |
Cylinder Radius |
If the shape is a cylinder, adjust the radius size. |
Offset |
Offset the position of the Obstacle volume from the Primary volume |
Shape |
Choose between Box and Cylinder shapes for the Obstacle volume. |
Creating a NavMesh Path¶
A linear path can be generated between a valid start and end point within the NavMesh. Path Points can be generated in and out of Play mode in Kit.
import omni.anim.navigation.core as nav
import omni.usd
stage = omni.usd.get_context().get_stage()
inav = nav.acquire_interface()
# Set the start and end points. If valid, new path points will be generated along the Nav Mesh.
path = inav.query_navmesh_path((24, 40, 63), (-960, 106, -258))
points = path.get_points()
print(points)