Mesh

Inherits: Resource < RefCounted < Object

Inherited By: ArrayMesh, ImmediateMesh, PlaceholderMesh, PrimitiveMesh

A Resource that contains vertex array-based geometry.

Description

Mesh is a type of Resource that contains vertex array-based geometry, divided in surfaces. Each surface contains a completely separate array and a material used to draw it. Design wise, a mesh with multiple surfaces is preferred to a single surface, because objects created in 3D editing software commonly contain multiple materials.

Tutorials

Properties

Vector2i

lightmap_size_hint

Methods

AABB

_get_aabb ( ) virtual const

int

_get_blend_shape_count ( ) virtual const

StringName

_get_blend_shape_name ( int index ) virtual const

int

_get_surface_count ( ) virtual const

void

_set_blend_shape_name ( int index, StringName name ) virtual

int

_surface_get_array_index_len ( int index ) virtual const

int

_surface_get_array_len ( int index ) virtual const

Array

_surface_get_arrays ( int index ) virtual const

Array[]

_surface_get_blend_shape_arrays ( int index ) virtual const

int

_surface_get_format ( int index ) virtual const

Dictionary

_surface_get_lods ( int index ) virtual const

Material

_surface_get_material ( int index ) virtual const

int

_surface_get_primitive_type ( int index ) virtual const

void

_surface_set_material ( int index, Material material ) virtual

Shape3D

create_convex_shape ( bool clean=true, bool simplify=false ) const

Mesh

create_outline ( float margin ) const

Shape3D

create_trimesh_shape ( ) const

TriangleMesh

generate_triangle_mesh ( ) const

AABB

get_aabb ( ) const

PackedVector3Array

get_faces ( ) const

int

get_surface_count ( ) const

Array

surface_get_arrays ( int surf_idx ) const

Array[]

surface_get_blend_shape_arrays ( int surf_idx ) const

Material

surface_get_material ( int surf_idx ) const

void

surface_set_material ( int surf_idx, Material material )

Enumerations

enum PrimitiveType:

  • PRIMITIVE_POINTS = 0 --- Render array as points (one vertex equals one point).

  • PRIMITIVE_LINES = 1 --- Render array as lines (every two vertices a line is created).

  • PRIMITIVE_LINE_STRIP = 2 --- Render array as line strip.

  • PRIMITIVE_TRIANGLES = 3 --- Render array as triangles (every three vertices a triangle is created).

  • PRIMITIVE_TRIANGLE_STRIP = 4 --- Render array as triangle strips.


enum ArrayType:

For triangles, the index array is interpreted as triples, referring to the vertices of each triangle. For lines, the index array is in pairs indicating the start and end of each line.

  • ARRAY_MAX = 13 --- Represents the size of the ArrayType enum.


enum ArrayCustomFormat:

  • ARRAY_CUSTOM_RGBA8_UNORM = 0 --- Indicates this custom channel contains unsigned normalized byte colors from 0 to 1, encoded as PackedByteArray.

  • ARRAY_CUSTOM_RGBA8_SNORM = 1 --- Indicates this custom channel contains signed normalized byte colors from -1 to 1, encoded as PackedByteArray.

  • ARRAY_CUSTOM_RG_HALF = 2 --- Indicates this custom channel contains half precision float colors, encoded as PackedByteArray. Only red and green channels are used.

  • ARRAY_CUSTOM_RGBA_HALF = 3 --- Indicates this custom channel contains half precision float colors, encoded as PackedByteArray.

  • ARRAY_CUSTOM_R_FLOAT = 4 --- Indicates this custom channel contains full float colors, in a PackedFloat32Array. Only the red green channel is used.

  • ARRAY_CUSTOM_RG_FLOAT = 5 --- Indicates this custom channel contains full float colors, in a PackedFloat32Array. Only red and green channels are used.

  • ARRAY_CUSTOM_RGB_FLOAT = 6 --- Indicates this custom channel contains full float colors, in a PackedFloat32Array. Only red, green and blue channels are used.

  • ARRAY_CUSTOM_RGBA_FLOAT = 7 --- Indicates this custom channel contains full float colors, in a PackedFloat32Array.

  • ARRAY_CUSTOM_MAX = 8 --- Represents the size of the ArrayCustomFormat enum.


enum ArrayFormat:

  • ARRAY_FORMAT_VERTEX = 1 --- Mesh array contains vertices. All meshes require a vertex array so this should always be present.

  • ARRAY_FORMAT_NORMAL = 2 --- Mesh array contains normals.

  • ARRAY_FORMAT_TANGENT = 4 --- Mesh array contains tangents.

  • ARRAY_FORMAT_COLOR = 8 --- Mesh array contains colors.

  • ARRAY_FORMAT_TEX_UV = 16 --- Mesh array contains UVs.

  • ARRAY_FORMAT_TEX_UV2 = 32 --- Mesh array contains second UV.

  • ARRAY_FORMAT_CUSTOM0 = 64 --- Mesh array contains custom channel index 0.

  • ARRAY_FORMAT_CUSTOM1 = 128 --- Mesh array contains custom channel index 1.

  • ARRAY_FORMAT_CUSTOM2 = 256 --- Mesh array contains custom channel index 2.

  • ARRAY_FORMAT_CUSTOM3 = 512 --- Mesh array contains custom channel index 3.

  • ARRAY_FORMAT_BONES = 1024 --- Mesh array contains bones.

  • ARRAY_FORMAT_WEIGHTS = 2048 --- Mesh array contains bone weights.

  • ARRAY_FORMAT_INDEX = 4096 --- Mesh array uses indices.

  • ARRAY_FORMAT_BLEND_SHAPE_MASK = 7 --- Mask of mesh channels permitted in blend shapes.

  • ARRAY_FORMAT_CUSTOM_BASE = 13 --- Shift of first custom channel.

  • ARRAY_FORMAT_CUSTOM_BITS = 3 --- Number of format bits per custom channel. See ArrayCustomFormat.

  • ARRAY_FORMAT_CUSTOM0_SHIFT = 13 --- Amount to shift ArrayCustomFormat for custom channel index 0.

  • ARRAY_FORMAT_CUSTOM1_SHIFT = 16 --- Amount to shift ArrayCustomFormat for custom channel index 1.

  • ARRAY_FORMAT_CUSTOM2_SHIFT = 19 --- Amount to shift ArrayCustomFormat for custom channel index 2.

  • ARRAY_FORMAT_CUSTOM3_SHIFT = 22 --- Amount to shift ArrayCustomFormat for custom channel index 3.

  • ARRAY_FORMAT_CUSTOM_MASK = 7 --- Mask of custom format bits per custom channel. Must be shifted by one of the SHIFT constants. See ArrayCustomFormat.

  • ARRAY_COMPRESS_FLAGS_BASE = 25 --- Shift of first compress flag. Compress flags should be passed to ArrayMesh.add_surface_from_arrays and SurfaceTool.commit.

  • ARRAY_FLAG_USE_2D_VERTICES = 33554432 --- Flag used to mark that the array contains 2D vertices.

  • ARRAY_FLAG_USE_DYNAMIC_UPDATE = 67108864 --- Flag indices that the mesh data will use GL_DYNAMIC_DRAW on GLES. Unused on Vulkan.

  • ARRAY_FLAG_USE_8_BONE_WEIGHTS = 134217728 --- Flag used to mark that the mesh contains up to 8 bone influences per vertex. This flag indicates that ARRAY_BONES and ARRAY_WEIGHTS elements will have double length.


enum BlendShapeMode:

  • BLEND_SHAPE_MODE_NORMALIZED = 0 --- Blend shapes are normalized.

  • BLEND_SHAPE_MODE_RELATIVE = 1 --- Blend shapes are relative to base weight.

Property Descriptions

Setter

set_lightmap_size_hint(value)

Getter

get_lightmap_size_hint()

Sets a hint to be used for lightmap resolution.

Method Descriptions

  • AABB _get_aabb ( ) virtual const


  • int _get_blend_shape_count ( ) virtual const



  • int _get_surface_count ( ) virtual const


  • void _set_blend_shape_name ( int index, StringName name ) virtual


  • int _surface_get_array_index_len ( int index ) virtual const


  • int _surface_get_array_len ( int index ) virtual const


  • Array _surface_get_arrays ( int index ) virtual const


  • Array[] _surface_get_blend_shape_arrays ( int index ) virtual const


  • int _surface_get_format ( int index ) virtual const



  • Material _surface_get_material ( int index ) virtual const


  • int _surface_get_primitive_type ( int index ) virtual const


  • void _surface_set_material ( int index, Material material ) virtual


  • Shape3D create_convex_shape ( bool clean=true, bool simplify=false ) const

Calculate a ConvexPolygonShape3D from the mesh.

If clean is true (default), duplicate and interior vertices are removed automatically. You can set it to false to make the process faster if not needed.

If simplify is true, the geometry can be further simplified to reduce the number of vertices. Disabled by default.


Calculate an outline mesh at a defined offset (margin) from the original mesh.

Note: This method typically returns the vertices in reverse order (e.g. clockwise to counterclockwise).


  • Shape3D create_trimesh_shape ( ) const

Calculate a ConcavePolygonShape3D from the mesh.


Generate a TriangleMesh from the mesh. Considers only surfaces using one of these primitive types: PRIMITIVE_TRIANGLES, PRIMITIVE_TRIANGLE_STRIP.


  • AABB get_aabb ( ) const

Returns the smallest AABB enclosing this mesh in local space. Not affected by custom_aabb. See also VisualInstance3D.get_transformed_aabb.

Note: This is only implemented for ArrayMesh and PrimitiveMesh.


Returns all the vertices that make up the faces of the mesh. Each three vertices represent one triangle.


  • int get_surface_count ( ) const

Returns the number of surfaces that the Mesh holds.


  • Array surface_get_arrays ( int surf_idx ) const

Returns the arrays for the vertices, normals, uvs, etc. that make up the requested surface (see ArrayMesh.add_surface_from_arrays).


  • Array[] surface_get_blend_shape_arrays ( int surf_idx ) const

Returns the blend shape arrays for the requested surface.


Returns a Material in a given surface. Surface is rendered using this material.


  • void surface_set_material ( int surf_idx, Material material )

Sets a Material for a given surface. Surface will be rendered using this material.