Using Unity’s NavMesh for Navigation with Area Targets

One of the applications that Area Targets supports is navigation. You can use Unity’s navigation system to detect and define walkable ground on your model or point cloud and proceed to create static or dynamic navigation between the user and points of interest (POI) in your Area Target application.

Follow these steps to set up your mesh for navigation:

  1. Open your Unity Project and set it up with Vuforia Engine, ARCamera GameObject, and your Area Target imported as a Unity package.

Your imported Area Target will appear as a textured mesh or point cloud, but the steps are the same.

  1. Set the ARCamera's World Center Mode to FIRST_TARGET if you are using a single Area Target or specify an Area Target as SPECIFIC_TARGET to center the world origin around it. Setting the mode to DEVICE may offset the NavMesh agents' positioning at runtime. See Spatial Frame of Reference on how to change the mode.
  2. Add the prefab model as a child to your AreaTarget GameObject from the Assets/Editor/Vuforia/YourDataSetName/ folder.
    1. It will either be named PreviewModel.prefab for meshes.
    2. Or NavMesh.prefab for point clouds.
  3. Ensure that the floor plan of the prefab aligns with the AreaTarget GameObject.
  4. Select the AreaTarget GameObject and set the Static option to Navigation Static. Select Yes, change children.

  1. Ensure that the AI Navigation package in the Package Manager’s Unity Registry is in your project.
  2. Go to Window -> AI -> Navigation (Obsolete), open the tab Bake, and click Bake.

 

A blue overlay should appear to represent the walkable space as one connected surface. Visit the guide on to learn how Unity’s NavMesh is created.

  • Depending on your scanned space, it is likely that adjustments to the baked agent size are necessary. Adjust the baked agent size and click Bake again to update the NavMesh on your scanned space.
  • If there are still gaps between the overlay around doorways, edit the step heights to include more walkable areas in your scanned space. Proceed to click Bake again for an updated overlay.

Customizing the NavMesh

You can now author a calculated path between two points by creating destination points. As Unity calculates the shortest path between the two points, you may want to set up Navigation Areas and Costs, which can help improve pathing as shown in the images below. Visit Unity’s article to learn more about setting up Not Walkable or higher-cost areas.

You can create new classifications for areas under the Navigation Window in the Areas tab. Use a 3D Cube GameObject or other mesh to mark the areas you wish to classify as a higher cost.

  1. Place a GameObject or mesh in your scene at a location you wish to mark as Not Walkable.
  2. In the navigation window under Object, enable Navigation Static and classify your GameObject under the Navigation Area dropdown menu as a higher-cost navigation area or Not Walkable.
  3. Select the Navigation window and the bake tab and rebuild the NavMesh by clicking Bake. You may deactivate the GameObject afterward.

The NavMesh is now set up, and you may continue to edit the NavMesh for your needs or start adding agents to your scene and make them guide, patrol, and move between points. You can also set up navigation between the user and points of interest at runtime. Use NavMesh obstacles to create blockades or restrictions to navigation at runtime. Return to Unity’s manual to learn more about the NavMesh.

Can this page be better?
Share your feedback via our issue tracker