Class Arraymesh - RST
Class Arraymesh - RST
.. _class_ArrayMesh:
ArrayMesh
=========
.. rst-class:: classref-introduction-group
Description
-----------
.. tabs::
.. code-tab:: gdscript
.. code-tab:: csharp
See
also :ref:`ImmediateMesh<class_ImmediateMesh>`, :ref:`MeshDataTool<class_MeshDataTo
ol>` and :ref:`SurfaceTool<class_SurfaceTool>` for procedural geometry generation.
.. rst-class:: classref-introduction-group
Tutorials
---------
.. rst-class:: classref-reftable-group
Properties
----------
.. table::
:widths: auto
+-------------------------------------------------
+--------------------------------------------------------------------
+----------------------------+
| :ref:`BlendShapeMode<enum_Mesh_BlendShapeMode>`
| :ref:`blend_shape_mode<class_ArrayMesh_property_blend_shape_mode>` | ``1``
|
+-------------------------------------------------
+--------------------------------------------------------------------
+----------------------------+
| :ref:`AABB<class_AABB>`
| :ref:`custom_aabb<class_ArrayMesh_property_custom_aabb>` | ``AABB(0, 0,
0, 0, 0, 0)`` |
+-------------------------------------------------
+--------------------------------------------------------------------
+----------------------------+
| :ref:`ArrayMesh<class_ArrayMesh>`
| :ref:`shadow_mesh<class_ArrayMesh_property_shadow_mesh>` |
|
+-------------------------------------------------
+--------------------------------------------------------------------
+----------------------------+
.. rst-class:: classref-reftable-group
Methods
-------
.. table::
:widths: auto
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| |void|
| :ref:`add_blend_shape<class_ArrayMesh_method_add_blend_shape>`\ (\
name\: :ref:`StringName<class_StringName>`\ )
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| |void|
| :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`\
(\ primitive\: :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`,
arrays\: :ref:`Array<class_Array>`, blend_shapes\: :ref:`Array<class_Array>`\
[:ref:`Array<class_Array>`\] = [], lods\: :ref:`Dictionary<class_Dictionary>` = {},
flags\: |bitfield|\[:ref:`ArrayFormat<enum_Mesh_ArrayFormat>`\] = 0\ ) |
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| |void|
| :ref:`clear_blend_shapes<class_ArrayMesh_method_clear_blend_shapes>`\ (\ )
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| |void|
| :ref:`clear_surfaces<class_ArrayMesh_method_clear_surfaces>`\ (\ )
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| :ref:`int<class_int>`
| :ref:`get_blend_shape_count<class_ArrayMesh_method_get_blend_shape_count>`\ (\ )
|const|
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| :ref:`StringName<class_StringName>`
| :ref:`get_blend_shape_name<class_ArrayMesh_method_get_blend_shape_name>`\ (\
index\: :ref:`int<class_int>`\ ) |const|
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| :ref:`Error<enum_@GlobalScope_Error>`
| :ref:`lightmap_unwrap<class_ArrayMesh_method_lightmap_unwrap>`\ (\
transform\: :ref:`Transform3D<class_Transform3D>`,
texel_size\: :ref:`float<class_float>`\ )
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| |void|
| :ref:`regen_normal_maps<class_ArrayMesh_method_regen_normal_maps>`\ (\ )
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| |void|
| :ref:`set_blend_shape_name<class_ArrayMesh_method_set_blend_shape_name>`\ (\
index\: :ref:`int<class_int>`, name\: :ref:`StringName<class_StringName>`\ )
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| :ref:`int<class_int>`
| :ref:`surface_find_by_name<class_ArrayMesh_method_surface_find_by_name>`\ (\
name\: :ref:`String<class_String>`\ ) |const|
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| :ref:`int<class_int>`
| :ref:`surface_get_array_index_len<class_ArrayMesh_method_surface_get_array_index_
len>`\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const|
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| :ref:`int<class_int>`
| :ref:`surface_get_array_len<class_ArrayMesh_method_surface_get_array_len>`\ (\
surf_idx\: :ref:`int<class_int>`\ ) |const|
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| |bitfield|\[:ref:`ArrayFormat<enum_Mesh_ArrayFormat>`\]
| :ref:`surface_get_format<class_ArrayMesh_method_surface_get_format>`\ (\
surf_idx\: :ref:`int<class_int>`\ ) |const|
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| :ref:`String<class_String>`
| :ref:`surface_get_name<class_ArrayMesh_method_surface_get_name>`\ (\
surf_idx\: :ref:`int<class_int>`\ ) |const|
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`
| :ref:`surface_get_primitive_type<class_ArrayMesh_method_surface_get_primitive_typ
e>`\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const|
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| |void|
| :ref:`surface_set_name<class_ArrayMesh_method_surface_set_name>`\ (\
surf_idx\: :ref:`int<class_int>`, name\: :ref:`String<class_String>`\ )
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| |void|
| :ref:`surface_update_attribute_region<class_ArrayMesh_method_surface_update_attri
bute_region>`\ (\ surf_idx\: :ref:`int<class_int>`, offset\: :ref:`int<class_int>`,
data\: :ref:`PackedByteArray<class_PackedByteArray>`\ )
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| |void|
| :ref:`surface_update_skin_region<class_ArrayMesh_method_surface_update_skin_regio
n>`\ (\ surf_idx\: :ref:`int<class_int>`, offset\: :ref:`int<class_int>`,
data\: :ref:`PackedByteArray<class_PackedByteArray>`\ )
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
| |void|
| :ref:`surface_update_vertex_region<class_ArrayMesh_method_surface_update_vertex_r
egion>`\ (\ surf_idx\: :ref:`int<class_int>`, offset\: :ref:`int<class_int>`,
data\: :ref:`PackedByteArray<class_PackedByteArray>`\ )
|
+---------------------------------------------------------
+----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Property Descriptions
---------------------
.. _class_ArrayMesh_property_blend_shape_mode:
.. rst-class:: classref-property
.. rst-class:: classref-property-setget
- |void| **set_blend_shape_mode**\ (\
value\: :ref:`BlendShapeMode<enum_Mesh_BlendShapeMode>`\ )
- :ref:`BlendShapeMode<enum_Mesh_BlendShapeMode>` **get_blend_shape_mode**\ (\ )
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_property_custom_aabb:
.. rst-class:: classref-property
.. rst-class:: classref-property-setget
Overrides the :ref:`AABB<class_AABB>` with one defined by user for use with frustum
culling. Especially useful to avoid unexpected culling when using a shader to
offset vertices.
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_property_shadow_mesh:
.. rst-class:: classref-property
:ref:`ArrayMesh<class_ArrayMesh>` **shadow_mesh**
.. rst-class:: classref-property-setget
An optional mesh which is used for rendering shadows and can be used for the depth
prepass. Can be used to increase performance of shadow rendering by using a mesh
that only contains vertex position data (without normals, UVs, colors, etc.).
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Method Descriptions
-------------------
.. _class_ArrayMesh_method_add_blend_shape:
.. rst-class:: classref-method
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_add_surface_from_arrays:
.. rst-class:: classref-method
|void| **add_surface_from_arrays**\ (\
primitive\: :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`,
arrays\: :ref:`Array<class_Array>`, blend_shapes\: :ref:`Array<class_Array>`\
[:ref:`Array<class_Array>`\] = [], lods\: :ref:`Dictionary<class_Dictionary>` = {},
flags\: |bitfield|\[:ref:`ArrayFormat<enum_Mesh_ArrayFormat>`\] = 0\ )
Creates a new
surface. :ref:`Mesh.get_surface_count<class_Mesh_method_get_surface_count>` will
become the ``surf_idx`` for this new surface.
Surfaces are created to be rendered using a ``primitive``, which may be any of the
values defined in :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`.
The ``blend_shapes`` argument is an array of vertex data for each blend shape. Each
element is an array of the same structure as ``arrays``,
but :ref:`Mesh.ARRAY_VERTEX<class_Mesh_constant_ARRAY_VERTEX>`, :ref:`Mesh.ARRAY_NO
RMAL<class_Mesh_constant_ARRAY_NORMAL>`,
and :ref:`Mesh.ARRAY_TANGENT<class_Mesh_constant_ARRAY_TANGENT>` are set if and
only if they are set in ``arrays`` and all other entries are ``null``.
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_clear_blend_shapes:
.. rst-class:: classref-method
|void| **clear_blend_shapes**\ (\ )
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_clear_surfaces:
.. rst-class:: classref-method
|void| **clear_surfaces**\ (\ )
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_get_blend_shape_count:
.. rst-class:: classref-method
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_get_blend_shape_name:
.. rst-class:: classref-method
:ref:`StringName<class_StringName>` **get_blend_shape_name**\ (\
index\: :ref:`int<class_int>`\ ) |const|
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_lightmap_unwrap:
.. rst-class:: classref-method
:ref:`Error<enum_@GlobalScope_Error>` **lightmap_unwrap**\ (\
transform\: :ref:`Transform3D<class_Transform3D>`,
texel_size\: :ref:`float<class_float>`\ )
Performs a UV unwrap on the **ArrayMesh** to prepare the mesh for lightmapping.
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_regen_normal_maps:
.. rst-class:: classref-method
|void| **regen_normal_maps**\ (\ )
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_set_blend_shape_name:
.. rst-class:: classref-method
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_surface_find_by_name:
.. rst-class:: classref-method
:ref:`int<class_int>` **surface_find_by_name**\ (\
name\: :ref:`String<class_String>`\ ) |const|
Returns the index of the first surface with this name held within this
**ArrayMesh**. If none are found, -1 is returned.
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_surface_get_array_index_len:
.. rst-class:: classref-method
:ref:`int<class_int>` **surface_get_array_index_len**\ (\
surf_idx\: :ref:`int<class_int>`\ ) |const|
Returns the length in indices of the index array in the requested surface
(see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`
).
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_surface_get_array_len:
.. rst-class:: classref-method
:ref:`int<class_int>` **surface_get_array_len**\ (\
surf_idx\: :ref:`int<class_int>`\ ) |const|
Returns the length in vertices of the vertex array in the requested surface
(see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`
).
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_surface_get_format:
.. rst-class:: classref-method
|bitfield|\[:ref:`ArrayFormat<enum_Mesh_ArrayFormat>`\] **surface_get_format**\ (\
surf_idx\: :ref:`int<class_int>`\ ) |const|
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_surface_get_name:
.. rst-class:: classref-method
:ref:`String<class_String>` **surface_get_name**\ (\
surf_idx\: :ref:`int<class_int>`\ ) |const|
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_surface_get_primitive_type:
.. rst-class:: classref-method
:ref:`PrimitiveType<enum_Mesh_PrimitiveType>` **surface_get_primitive_type**\ (\
surf_idx\: :ref:`int<class_int>`\ ) |const|
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_surface_set_name:
.. rst-class:: classref-method
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_surface_update_attribute_region:
.. rst-class:: classref-method
.. container:: contribute
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_surface_update_skin_region:
.. rst-class:: classref-method
.. container:: contribute
.. rst-class:: classref-item-separator
----
.. _class_ArrayMesh_method_surface_update_vertex_region:
.. rst-class:: classref-method
.. container:: contribute