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.

Properties

Vector2 lightmap_size_hint Vector2( 0, 0 )

Methods

Shape create_convex_shape ( ) 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:

  • 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_LINE_LOOP = 3 — Render array as line loop (like line strip, but closed).
  • PRIMITIVE_TRIANGLES = 4 — Render array as triangles (every three vertices a triangle is created).
  • PRIMITIVE_TRIANGLE_STRIP = 5 — Render array as triangle strips.
  • PRIMITIVE_TRIANGLE_FAN = 6 — Render array as triangle fans.

enum BlendShapeMode:

  • BLEND_SHAPE_MODE_NORMALIZED = 0 — Blend shapes are normalized.
  • BLEND_SHAPE_MODE_RELATIVE = 1 — Blend shapes are relative to base weight.

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_BONES = 64 — Mesh array contains bones.
  • ARRAY_FORMAT_WEIGHTS = 128 — Mesh array contains bone weights.
  • ARRAY_FORMAT_INDEX = 256 — Mesh array uses indices.
  • ARRAY_COMPRESS_BASE = 9 — Used internally to calculate other ARRAY_COMPRESS_* enum values. Do not use.
  • ARRAY_COMPRESS_VERTEX = 512 — Flag used to mark a compressed (half float) vertex array.
  • ARRAY_COMPRESS_NORMAL = 1024 — Flag used to mark a compressed (half float) normal array.
  • ARRAY_COMPRESS_TANGENT = 2048 — Flag used to mark a compressed (half float) tangent array.
  • ARRAY_COMPRESS_COLOR = 4096 — Flag used to mark a compressed (half float) color array.
  • ARRAY_COMPRESS_TEX_UV = 8192 — Flag used to mark a compressed (half float) UV coordinates array.
  • ARRAY_COMPRESS_TEX_UV2 = 16384 — Flag used to mark a compressed (half float) UV coordinates array for the second UV coordinates.
  • ARRAY_COMPRESS_BONES = 32768 — Flag used to mark a compressed bone array.
  • ARRAY_COMPRESS_WEIGHTS = 65536 — Flag used to mark a compressed (half float) weight array.
  • ARRAY_COMPRESS_INDEX = 131072 — Flag used to mark a compressed index array.
  • ARRAY_FLAG_USE_2D_VERTICES = 262144 — Flag used to mark that the array contains 2D vertices.
  • ARRAY_FLAG_USE_16_BIT_BONES = 524288 — Flag used to mark that the array uses 16-bit bones instead of 8-bit.
  • ARRAY_COMPRESS_DEFAULT = 97280 — Used to set flags ARRAY_COMPRESS_VERTEX, ARRAY_COMPRESS_NORMAL, ARRAY_COMPRESS_TANGENT, ARRAY_COMPRESS_COLOR, ARRAY_COMPRESS_TEX_UV, ARRAY_COMPRESS_TEX_UV2 and ARRAY_COMPRESS_WEIGHTS quickly.

enum ArrayType:

  • ARRAY_VERTEX = 0 — Array of vertices.
  • ARRAY_NORMAL = 1 — Array of normals.
  • ARRAY_TANGENT = 2 — Array of tangents as an array of floats, 4 floats per tangent.
  • ARRAY_COLOR = 3 — Array of colors.
  • ARRAY_TEX_UV = 4 — Array of UV coordinates.
  • ARRAY_TEX_UV2 = 5 — Array of second set of UV coordinates.
  • ARRAY_BONES = 6 — Array of bone data.
  • ARRAY_WEIGHTS = 7 — Array of weights.
  • ARRAY_INDEX = 8 — Array of indices.
  • ARRAY_MAX = 9 — Represents the size of the ArrayType enum.

Property Descriptions

Default Vector2( 0, 0 )
Setter set_lightmap_size_hint(value)
Getter get_lightmap_size_hint()

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

Method Descriptions

  • Shape create_convex_shape ( ) const

Calculate a ConvexPolygonShape from the mesh.


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.


Generate a TriangleMesh from the mesh.


  • AABB get_aabb ( ) const

Returns the smallest AABB enclosing this mesh. Not affected by custom_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 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.


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.