.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
.. DO NOT EDIT THIS FILE, but the Mesh.xml source instead.
.. The source is found in doc/classes or modules/<name>/doc_classes.

.. _class_Mesh:

Mesh
====

**Inherits:** :ref:`Resource<class_resource>` **<** :ref:`Reference<class_reference>` **<** :ref:`Object<class_object>`

**Inherited By:** :ref:`ArrayMesh<class_arraymesh>`, :ref:`PrimitiveMesh<class_primitivemesh>`

**Category:** Core

Brief Description
-----------------

A :ref:`Resource<class_resource>` that contains vertex-array based geometry.

Member Functions
----------------

+--------------------------------------------------+-----------------------------------------------------------------------------------------------------+
| :ref:`Shape<class_shape>`                        | :ref:`create_convex_shape<class_Mesh_create_convex_shape>` **(** **)** const                        |
+--------------------------------------------------+-----------------------------------------------------------------------------------------------------+
| :ref:`Mesh<class_mesh>`                          | :ref:`create_outline<class_Mesh_create_outline>` **(** :ref:`float<class_float>` margin **)** const |
+--------------------------------------------------+-----------------------------------------------------------------------------------------------------+
| :ref:`Shape<class_shape>`                        | :ref:`create_trimesh_shape<class_Mesh_create_trimesh_shape>` **(** **)** const                      |
+--------------------------------------------------+-----------------------------------------------------------------------------------------------------+
| :ref:`TriangleMesh<class_trianglemesh>`          | :ref:`generate_triangle_mesh<class_Mesh_generate_triangle_mesh>` **(** **)** const                  |
+--------------------------------------------------+-----------------------------------------------------------------------------------------------------+
| :ref:`PoolVector3Array<class_poolvector3array>`  | :ref:`get_faces<class_Mesh_get_faces>` **(** **)** const                                            |
+--------------------------------------------------+-----------------------------------------------------------------------------------------------------+

Member Variables
----------------

  .. _class_Mesh_lightmap_size_hint:

- :ref:`Vector2<class_vector2>` **lightmap_size_hint**


Enums
-----

  .. _enum_Mesh_BlendShapeMode:

enum **BlendShapeMode**

- **BLEND_SHAPE_MODE_NORMALIZED** = **0**
- **BLEND_SHAPE_MODE_RELATIVE** = **1**

  .. _enum_Mesh_ArrayType:

enum **ArrayType**

- **ARRAY_VERTEX** = **0**
- **ARRAY_NORMAL** = **1**
- **ARRAY_TANGENT** = **2**
- **ARRAY_COLOR** = **3**
- **ARRAY_TEX_UV** = **4**
- **ARRAY_TEX_UV2** = **5**
- **ARRAY_BONES** = **6**
- **ARRAY_WEIGHTS** = **7**
- **ARRAY_INDEX** = **8**
- **ARRAY_MAX** = **9**

  .. _enum_Mesh_ArrayFormat:

enum **ArrayFormat**

- **ARRAY_FORMAT_VERTEX** = **1**
- **ARRAY_FORMAT_NORMAL** = **2**
- **ARRAY_FORMAT_TANGENT** = **4**
- **ARRAY_FORMAT_COLOR** = **8**
- **ARRAY_FORMAT_TEX_UV** = **16**
- **ARRAY_FORMAT_TEX_UV2** = **32**
- **ARRAY_FORMAT_BONES** = **64**
- **ARRAY_FORMAT_WEIGHTS** = **128**
- **ARRAY_FORMAT_INDEX** = **256**
- **ARRAY_COMPRESS_BASE** = **9**
- **ARRAY_COMPRESS_VERTEX** = **512**
- **ARRAY_COMPRESS_NORMAL** = **1024**
- **ARRAY_COMPRESS_TANGENT** = **2048**
- **ARRAY_COMPRESS_COLOR** = **4096**
- **ARRAY_COMPRESS_TEX_UV** = **8192**
- **ARRAY_COMPRESS_TEX_UV2** = **16384**
- **ARRAY_COMPRESS_BONES** = **32768**
- **ARRAY_COMPRESS_WEIGHTS** = **65536**
- **ARRAY_COMPRESS_INDEX** = **131072**
- **ARRAY_FLAG_USE_2D_VERTICES** = **262144**
- **ARRAY_FLAG_USE_16_BIT_BONES** = **524288**
- **ARRAY_COMPRESS_DEFAULT** = **97792**

  .. _enum_Mesh_PrimitiveType:

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.


Description
-----------

Mesh is a type of :ref:`Resource<class_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.

Member Function Description
---------------------------

.. _class_Mesh_create_convex_shape:

- :ref:`Shape<class_shape>` **create_convex_shape** **(** **)** const

Calculate a :ref:`ConvexPolygonShape<class_convexpolygonshape>` from the mesh.

.. _class_Mesh_create_outline:

- :ref:`Mesh<class_mesh>` **create_outline** **(** :ref:`float<class_float>` margin **)** const

Calculate an outline mesh at a defined offset (margin) from the original mesh. Note: Typically returns the vertices in reverse order (e.g. clockwise to anti-clockwise).

.. _class_Mesh_create_trimesh_shape:

- :ref:`Shape<class_shape>` **create_trimesh_shape** **(** **)** const

Calculate a :ref:`ConcavePolygonShape<class_concavepolygonshape>` from the mesh.

.. _class_Mesh_generate_triangle_mesh:

- :ref:`TriangleMesh<class_trianglemesh>` **generate_triangle_mesh** **(** **)** const

Generate a :ref:`TriangleMesh<class_trianglemesh>` from the mesh.

.. _class_Mesh_get_faces:

- :ref:`PoolVector3Array<class_poolvector3array>` **get_faces** **(** **)** const

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


