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

1.5

float

agent_max_climb

0.25

float

agent_max_slope

45.0

float

agent_radius

0.5

float

cell_height

0.25

float

cell_size

0.25

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

AABB

filter_baking_aabb

AABB( 0, 0, 0, 0, 0, 0 )

Vector3

filter_baking_aabb_offset

Vector3( 0, 0, 0 )

bool

filter_ledge_spans

false

bool

filter_low_hanging_obstacles

false

bool

filter_walkable_low_height_spans

false

int

geometry_collision_mask

4294967295

ParsedGeometryType

geometry_parsed_geometry_type

0

SourceGeometryMode

geometry_source_geometry_mode

0

String

geometry_source_group_name

“navmesh”

float

polygon_verts_per_poly

6.0

float

region_merge_size

20.0

float

region_min_size

2.0

SamplePartitionType

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

1.5

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.25

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.5

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.25

Setter

set_cell_height(value)

Getter

get_cell_height()

The Y axis cell size to use for fields.


Default

0.25

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.


  • AABB filter_baking_aabb

Default

AABB( 0, 0, 0, 0, 0, 0 )

Setter

set_filter_baking_aabb(value)

Getter

get_filter_baking_aabb()

If the baking AABB has a volume the navigation mesh baking will be restricted to its enclosing area.


Default

Vector3( 0, 0, 0 )

Setter

set_filter_baking_aabb_offset(value)

Getter

get_filter_baking_aabb_offset()

The position offset applied to the filter_baking_aabb AABB.


  • 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.


  • bool 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.


  • int geometry_collision_mask

Default

4294967295

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

Default

“navmesh”

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

2.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.