Revision Difference
SettingUpANavigationMesh#560920
<cat>Hammer.Basics</cat>
<title>Setting Up A Navigation Mesh</title>
<deprecated></deprecated>⤶
# What is a Navigation Mesh (Navmesh)?
A navigation mesh is a bunch of precalculated shapes compiled with a map that let NPCs and other entities navigate around.
# How do I add one?
1) In Hammer, in your map, create a `func_nav_markup` entity somewhere where you want the navmesh to be generated (it just has to be in a small part, it doesn't have to cover the entire area).
<upload src="b0cef/8db8a32cfb98b2e.png" size="565870" name="8db8a2b6c33d614.png" />
2) On that entity, make sure `Walkable Seed` is ticked.
3) Build your map with `Build nav` enabled, and you are done.
# Navmesh Hulls
Navmesh hulls represent that fact that different NPCs might have different sized "hulls". Imagine a cat, a human and an elephant - they are all different sizes of creature and so are able to navigate different kinds of spaces.
You can configure the hulls in Hammer by going to `Navigation` and ticking `Use Custom Generation Params`, but you usually don't need to. The default hull used is hull 0 which is the medium-sized hull (for humans and such).
You can control which hull is used through code:
```
var path = NavMesh.PathBuilder( myStartPosition )
.WithAgentHull( NavAgentHull.Agent1 ) // The default is NavAgentHull.Default (hull 0).
.Build( myEndPosition );
```
# Nav Preview
Once you have added the `func_nav_markup` you can preview what your navigation mesh will look like in Hammer by going to `Navigation` -> `Nav Preview`.
<upload src="b0cef/8db8a2bfb795eba.png" size="87014" name="image.png" />
The preview shows the passable space of each hull as a separate shade of blue.
Generally the preview should match how your navmesh behaves in-game, but if you are encountering problems, you can double-check by using the command `nav_edit 1` in-game. You can then cycle through the different hulls by running `nav_select_hull 0`, `nav_select_hull 1` and `nav_select_hull 2`.
<upload src="b0cef/8db8a3214b59b56.png" size="423269" name="image.png" />