NavigationMesh

Inherits: Resource < Reference < Object

A mesh to approximate the walkable areas and obstacles.

Description

A navigation mesh is a collection of polygons that define which areas of an environment are traversable to aid agents in pathfinding through complicated spaces.

Tutorials

Properties

float

agent/height

2.0

float

agent/max_climb

0.9

float

agent/max_slope

45.0

float

agent/radius

0.6

float

cell/height

0.2

float

cell/size

0.3

float

detail/sample_distance

6.0

float

detail/sample_max_error

1.0

float

edge/max_error

1.3

float

edge/max_length

12.0

bool

filter/filter_walkable_low_height_spans

false

bool

filter/ledge_spans

false

bool

filter/low_hanging_obstacles

false

int

geometry/collision_mask

ParsedGeometryType

geometry/parsed_geometry_type

0

SourceGeometryMode

geometry/source_geometry_mode

0

String

geometry/source_group_name

float

polygon/verts_per_poly

6.0

float

region/merge_size

20.0

float

region/min_size

8.0

SamplePartitionType

sample_partition_type/sample_partition_type

0

Methods

void

add_polygon ( PoolIntArray polygon )

void

clear_polygons ( )

void

create_from_mesh ( Mesh mesh )

bool

get_collision_mask_bit ( int bit ) const

PoolIntArray

get_polygon ( int idx )

int

get_polygon_count ( ) const

PoolVector3Array

get_vertices ( ) const

void

set_collision_mask_bit ( int bit, bool value )

void

set_vertices ( PoolVector3Array vertices )

Enumerations

enum SamplePartitionType:

  • SAMPLE_PARTITION_WATERSHED = 0 —- Watershed partitioning. Generally the best choice if you precompute the navigation mesh, use this if you have large open areas.

  • SAMPLE_PARTITION_MONOTONE = 1 —- Monotone partitioning. Use this if you want fast navigation mesh generation.

  • SAMPLE_PARTITION_LAYERS = 2 —- Layer partitioning. Good choice to use for tiled navigation mesh with medium and small sized tiles.

  • SAMPLE_PARTITION_MAX = 3 —- Represents the size of the SamplePartitionType enum.


enum ParsedGeometryType:


enum SourceGeometryMode:

  • SOURCE_GEOMETRY_NAVMESH_CHILDREN = 0 —- Scans the child nodes of NavigationMeshInstance recursively for geometry.

  • SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN = 1 —- Scans nodes in a group and their child nodes recursively for geometry. The group is specified by geometry/source_group_name.

  • SOURCE_GEOMETRY_GROUPS_EXPLICIT = 2 —- Uses nodes in a group for geometry. The group is specified by geometry/source_group_name.

  • SOURCE_GEOMETRY_MAX = 3 —- Represents the size of the SourceGeometryMode enum.

Property Descriptions

Default

2.0

Setter

set_agent_height(value)

Getter

get_agent_height()

The minimum floor to ceiling height that will still allow the floor area to be considered walkable.

Note: While baking, this value will be rounded up to the nearest multiple of cell/height.


Default

0.9

Setter

set_agent_max_climb(value)

Getter

get_agent_max_climb()

The minimum ledge height that is considered to still be traversable.

Note: While baking, this value will be rounded down to the nearest multiple of cell/height.


Default

45.0

Setter

set_agent_max_slope(value)

Getter

get_agent_max_slope()

The maximum slope that is considered walkable, in degrees.


Default

0.6

Setter

set_agent_radius(value)

Getter

get_agent_radius()

The distance to erode/shrink the walkable area of the heightfield away from obstructions.

Note: While baking, this value will be rounded up to the nearest multiple of cell/size.


Default

0.2

Setter

set_cell_height(value)

Getter

get_cell_height()

The Y axis cell size to use for fields.


Default

0.3

Setter

set_cell_size(value)

Getter

get_cell_size()

The XZ plane cell size to use for fields.


  • float detail/sample_distance

Default

6.0

Setter

set_detail_sample_distance(value)

Getter

get_detail_sample_distance()

The sampling distance to use when generating the detail mesh, in cell unit.


  • float detail/sample_max_error

Default

1.0

Setter

set_detail_sample_max_error(value)

Getter

get_detail_sample_max_error()

The maximum distance the detail mesh surface should deviate from heightfield, in cell unit.


Default

1.3

Setter

set_edge_max_error(value)

Getter

get_edge_max_error()

The maximum distance a simplfied contour’s border edges should deviate the original raw contour.


Default

12.0

Setter

set_edge_max_length(value)

Getter

get_edge_max_length()

The maximum allowed length for contour edges along the border of the mesh.

Note: While baking, this value will be rounded up to the nearest multiple of cell/size.


  • bool filter/filter_walkable_low_height_spans

Default

false

Setter

set_filter_walkable_low_height_spans(value)

Getter

get_filter_walkable_low_height_spans()

If true, marks walkable spans as not walkable if the clearance above the span is less than agent/height.


  • bool filter/ledge_spans

Default

false

Setter

set_filter_ledge_spans(value)

Getter

get_filter_ledge_spans()

If true, marks spans that are ledges as non-walkable.


  • bool filter/low_hanging_obstacles

Default

false

Setter

set_filter_low_hanging_obstacles(value)

Getter

get_filter_low_hanging_obstacles()

If true, marks non-walkable spans as walkable if their maximum is within agent/max_climb of a walkable neighbor.


  • int geometry/collision_mask

Setter

set_collision_mask(value)

Getter

get_collision_mask()

The physics layers to scan for static colliders.

Only used when geometry/parsed_geometry_type is PARSED_GEOMETRY_STATIC_COLLIDERS or PARSED_GEOMETRY_BOTH.


Default

0

Setter

set_parsed_geometry_type(value)

Getter

get_parsed_geometry_type()

Determines which type of nodes will be parsed as geometry. See ParsedGeometryType for possible values.


Default

0

Setter

set_source_geometry_mode(value)

Getter

get_source_geometry_mode()

The source of the geometry used when baking. See SourceGeometryMode for possible values.


  • String geometry/source_group_name

Setter

set_source_group_name(value)

Getter

get_source_group_name()

The name of the group to scan for geometry.

Only used when geometry/source_geometry_mode is SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN or SOURCE_GEOMETRY_GROUPS_EXPLICIT.


  • float polygon/verts_per_poly

Default

6.0

Setter

set_verts_per_poly(value)

Getter

get_verts_per_poly()

The maximum number of vertices allowed for polygons generated during the contour to polygon conversion process.


Default

20.0

Setter

set_region_merge_size(value)

Getter

get_region_merge_size()

Any regions with a size smaller than this will be merged with larger regions if possible.

Note: This value will be squared to calculate the number of cells. For example, a value of 20 will set the number of cells to 400.


Default

8.0

Setter

set_region_min_size(value)

Getter

get_region_min_size()

The minimum size of a region for it to be created.

Note: This value will be squared to calculate the minimum number of cells allowed to form isolated island areas. For example, a value of 8 will set the number of cells to 64.


Default

0

Setter

set_sample_partition_type(value)

Getter

get_sample_partition_type()

Partitioning algorithm for creating the navigation mesh polys. See SamplePartitionType for possible values.

Method Descriptions

Adds a polygon using the indices of the vertices you get when calling get_vertices.


  • void clear_polygons ( )

Clears the array of polygons, but it doesn’t clear the array of vertices.


  • void create_from_mesh ( Mesh mesh )

Initializes the navigation mesh by setting the vertices and indices according to a Mesh.


  • bool get_collision_mask_bit ( int bit ) const

Returns whether the specified bit of the geometry/collision_mask is set.


Returns a PoolIntArray containing the indices of the vertices of a created polygon.


  • int get_polygon_count ( ) const

Returns the number of polygons in the navigation mesh.


Returns a PoolVector3Array containing all the vertices being used to create the polygons.


  • void set_collision_mask_bit ( int bit, bool value )

If value is true, sets the specified bit in the geometry/collision_mask.

If value is false, clears the specified bit in the geometry/collision_mask.


Sets the vertices that can be then indexed to create polygons with the add_polygon method.