Class reference

NavigationMesh

Inherits Resource

Experimental.

A navigation mesh that defines traversable 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.

Properties

float agent_height = 1.5

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.

float agent_max_climb = 0.25

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.

float agent_max_slope = 45.0

The maximum slope that is considered walkable, in degrees.

float agent_radius = 0.5

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. Note: The radius must be equal or higher than 0.0. If the radius is 0.0, it won't be possible to fix invalid outline overlaps and other precision errors during the baking process. As a result, some obstacles may be excluded incorrectly from the final navigation mesh, or may delete the navigation mesh's polygons.

float border_size = 0.0

The size of the non-navigable border around the bake bounding area. In conjunction with the filter_baking_aabb and a edge_max_error value at 1.0 or below the border size can be used to bake tile aligned navigation meshes without the tile edges being shrunk by agent_radius. Note: If this value is not 0.0, it will be rounded up to the nearest multiple of cell_size during baking.

float cell_height = 0.25

The cell height used to rasterize the navigation mesh vertices on the Y axis. Must match with the cell height on the navigation map.

float cell_size = 0.25

The cell size used to rasterize the navigation mesh vertices on the XZ plane. Must match with the cell size on the navigation map.

float detail_sample_distance = 6.0

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

float detail_sample_max_error = 1.0

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

float edge_max_error = 1.3

The maximum distance a simplified contour's border edges should deviate the original raw contour.

float edge_max_length = 0.0

The maximum allowed length for contour edges along the border of the mesh. A value of 0.0 disables this feature. Note: While baking, this value will be rounded up to the nearest multiple of cell_size.

AABB filter_baking_aabb = AABB(0, 0, 0, 0, 0, 0)

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

bool filter_ledge_spans = false

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

bool filter_low_hanging_obstacles = false

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 = false

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

int geometry_parsed_geometry_type = 2

Determines which type of nodes will be parsed as geometry.

int geometry_source_geometry_mode = 0

The source of the geometry used when baking.

float region_merge_size = 20.0

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.

float region_min_size = 2.0

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.

int sample_partition_type = 0

Partitioning algorithm for creating the navigation mesh polys.

float vertices_per_polygon = 6.0

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

Methods

void clear()

Clears the internal arrays for vertices and polygon indices.

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. Note: The given mesh must be of type Mesh.PRIMITIVE_TRIANGLES and have an index array.

bool get_collision_mask_value(int layer_number) const

Returns whether or not the specified layer of the geometry_collision_mask is enabled, given a layer_number between 1 and 32.

int get_polygon_count() const

Returns the number of polygons in the navigation mesh.

void set_collision_mask_value(int layer_number, bool value)

Based on value, enables or disables the specified layer in the geometry_collision_mask, given a layer_number between 1 and 32.

Constants

SAMPLE_PARTITION_WATERSHED = 0

Enum: SamplePartitionType

Watershed partitioning. Generally the best choice if you precompute the navigation mesh, use this if you have large open areas.

SAMPLE_PARTITION_MONOTONE = 1

Enum: SamplePartitionType

Monotone partitioning. Use this if you want fast navigation mesh generation.

SAMPLE_PARTITION_LAYERS = 2

Enum: SamplePartitionType

Layer partitioning. Good choice to use for tiled navigation mesh with medium and small sized tiles.

SAMPLE_PARTITION_MAX = 3

Enum: SamplePartitionType

Represents the size of the SamplePartitionType enum.

PARSED_GEOMETRY_STATIC_COLLIDERS = 1

Enum: ParsedGeometryType

Parses StaticBody3D colliders as geometry. The collider should be in any of the layers specified by geometry_collision_mask.

PARSED_GEOMETRY_MAX = 3

Enum: ParsedGeometryType

Represents the size of the ParsedGeometryType enum.

SOURCE_GEOMETRY_ROOT_NODE_CHILDREN = 0

Enum: SourceGeometryMode

Scans the child nodes of the root node recursively for geometry.

SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN = 1

Enum: SourceGeometryMode

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

Enum: SourceGeometryMode

Uses nodes in a group for geometry. The group is specified by geometry_source_group_name.

SOURCE_GEOMETRY_MAX = 3

Enum: SourceGeometryMode

Represents the size of the SourceGeometryMode enum.

Tutorials

Source revision 4f5b14abade2
Connection interrupted. Reload×

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.