Mesh

Inherits: Resource < Reference < Object

Inherited By: ArrayMesh, 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

Vector2

lightmap_size_hint

Vector2( 0, 0 )

Methods

Shape

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

Mesh

create_outline ( float margin ) const

Shape

create_trimesh_shape ( ) const

TriangleMesh

generate_triangle_mesh ( ) const

AABB

get_aabb ( ) const

PoolVector3Array

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:

PrimitiveType PRIMITIVE_POINTS = 0

Render array as points (one vertex equals one point).

PrimitiveType PRIMITIVE_LINES = 1

Render array as lines (every two vertices a line is created).

PrimitiveType PRIMITIVE_LINE_STRIP = 2

Render array as line strip.

PrimitiveType PRIMITIVE_LINE_LOOP = 3

Render array as line loop (like line strip, but closed).

PrimitiveType PRIMITIVE_TRIANGLES = 4

Render array as triangles (every three vertices a triangle is created).

PrimitiveType PRIMITIVE_TRIANGLE_STRIP = 5

Render array as triangle strips.

PrimitiveType PRIMITIVE_TRIANGLE_FAN = 6

Render array as triangle fans.


enum BlendShapeMode:

BlendShapeMode BLEND_SHAPE_MODE_NORMALIZED = 0

Blend shapes are normalized.

BlendShapeMode BLEND_SHAPE_MODE_RELATIVE = 1

Blend shapes are relative to base weight.


enum ArrayFormat:

ArrayFormat ARRAY_FORMAT_VERTEX = 1

Mesh array contains vertices. All meshes require a vertex array so this should always be present.

ArrayFormat ARRAY_FORMAT_NORMAL = 2

Mesh array contains normals.

ArrayFormat ARRAY_FORMAT_TANGENT = 4

Mesh array contains tangents.

ArrayFormat ARRAY_FORMAT_COLOR = 8

Mesh array contains colors.

ArrayFormat ARRAY_FORMAT_TEX_UV = 16

Mesh array contains UVs.

ArrayFormat ARRAY_FORMAT_TEX_UV2 = 32

Mesh array contains second UV.

ArrayFormat ARRAY_FORMAT_BONES = 64

Mesh array contains bones.

ArrayFormat ARRAY_FORMAT_WEIGHTS = 128

Mesh array contains bone weights.

ArrayFormat ARRAY_FORMAT_INDEX = 256

Mesh array uses indices.

ArrayFormat ARRAY_COMPRESS_BASE = 9

Used internally to calculate other ARRAY_COMPRESS_* enum values. Do not use.

ArrayFormat ARRAY_COMPRESS_VERTEX = 512

Flag used to mark a compressed (half float) vertex array.

ArrayFormat ARRAY_COMPRESS_NORMAL = 1024

Flag used to mark a compressed (half float) normal array.

ArrayFormat ARRAY_COMPRESS_TANGENT = 2048

Flag used to mark a compressed (half float) tangent array.

ArrayFormat ARRAY_COMPRESS_COLOR = 4096

Flag used to mark a compressed (half float) color array.

Note: If this flag is enabled, vertex colors will be stored as 8-bit unsigned integers. This will clamp overbright colors to Color(1, 1, 1, 1) and reduce colors' precision.

ArrayFormat ARRAY_COMPRESS_TEX_UV = 8192

Flag used to mark a compressed (half float) UV coordinates array.

ArrayFormat ARRAY_COMPRESS_TEX_UV2 = 16384

Flag used to mark a compressed (half float) UV coordinates array for the second UV coordinates.

ArrayFormat ARRAY_COMPRESS_BONES = 32768

Flag used to mark a compressed bone array.

ArrayFormat ARRAY_COMPRESS_WEIGHTS = 65536

Flag used to mark a compressed (half float) weight array.

ArrayFormat ARRAY_COMPRESS_INDEX = 131072

Flag used to mark a compressed index array.

ArrayFormat ARRAY_FLAG_USE_2D_VERTICES = 262144

Flag used to mark that the array contains 2D vertices.

ArrayFormat ARRAY_FLAG_USE_16_BIT_BONES = 524288

Flag used to mark that the array uses 16-bit bones instead of 8-bit.

ArrayFormat ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION = 2097152

Flag used to mark that the array uses an octahedral representation of normal and tangent vectors rather than cartesian.

ArrayFormat ARRAY_FLAG_USE_VERTEX_CACHE_OPTIMIZATION = 4194304

Flag used to request vertex cache optimization.

This re-orders indices in order to make best use of GPU vertex caches, which can improve rendering performance particularly with high poly models.

ArrayFormat ARRAY_COMPRESS_DEFAULT = 2194432

Used to set flags ARRAY_COMPRESS_VERTEX, ARRAY_COMPRESS_NORMAL, ARRAY_COMPRESS_TANGENT, ARRAY_COMPRESS_COLOR, ARRAY_COMPRESS_TEX_UV, ARRAY_COMPRESS_TEX_UV2, ARRAY_COMPRESS_WEIGHTS, and ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION quickly.

Note: Since this flag enables ARRAY_COMPRESS_COLOR, vertex colors will be stored as 8-bit unsigned integers. This will clamp overbright colors to Color(1, 1, 1, 1) and reduce colors' precision.


enum ArrayType:

ArrayType ARRAY_VERTEX = 0

Array of vertices.

ArrayType ARRAY_NORMAL = 1

Array of normals.

ArrayType ARRAY_TANGENT = 2

Array of tangents as an array of floats, 4 floats per tangent.

ArrayType ARRAY_COLOR = 3

Array of colors.

ArrayType ARRAY_TEX_UV = 4

Array of UV coordinates.

ArrayType ARRAY_TEX_UV2 = 5

Array of second set of UV coordinates.

ArrayType ARRAY_BONES = 6

Array of bone data.

ArrayType ARRAY_WEIGHTS = 7

Array of weights.

ArrayType ARRAY_INDEX = 8

Array of indices.

ArrayType ARRAY_MAX = 9

Represents the size of the ArrayType enum.


Property Descriptions

Vector2 lightmap_size_hint = Vector2( 0, 0 )

  • void set_lightmap_size_hint ( Vector2 value )

  • Vector2 get_lightmap_size_hint ( )

Sets a hint to be used for lightmap resolution in BakedLightmap. Overrides BakedLightmap.default_texels_per_unit.


Method Descriptions

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

Calculate a ConvexPolygonShape 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 amount of vertices. Disabled by default.


Mesh create_outline ( float margin ) const

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


Shape create_trimesh_shape ( ) const

Calculate a ConcavePolygonShape from the mesh.


TriangleMesh generate_triangle_mesh ( ) const

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


AABB get_aabb ( ) const

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

Note: This is only implemented for ArrayMesh and PrimitiveMesh.


PoolVector3Array get_faces ( ) const

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


Material surface_get_material ( int surf_idx ) const

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.