Files
godot-docs-l10n/classes/it/class_surfacetool.rst
Rémi Verschelde c3f2364c10 Sync classref with 4.6 branch
Lots of translations invalidated (fuzzied) as we just synced Weblate.
2025-12-19 16:39:51 +01:00

686 lines
66 KiB
ReStructuredText

:github_url: hide
.. _class_SurfaceTool:
SurfaceTool
===========
**Eredita:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
Strumento di supporto per la creazione di geometrie.
.. rst-class:: classref-introduction-group
Descrizione
----------------------
**SurfaceTool** serve per costruire una :ref:`Mesh<class_Mesh>` specificando gli attributi dei vertici singolarmente. Può essere utilizzato per costruire una :ref:`Mesh<class_Mesh>` da uno script. È necessario aggiungere tutte le proprietà, eccetto gli indici, prima di chiamare :ref:`add_vertex()<class_SurfaceTool_method_add_vertex>`. Ad esempio, per aggiungere i colori dei vertici e gli UV:
.. tabs::
.. code-tab:: gdscript
var st = SurfaceTool.new()
st.begin(Mesh.PRIMITIVE_TRIANGLES)
st.set_color(Color(1, 0, 0))
st.set_uv(Vector2(0, 0))
st.add_vertex(Vector3(0, 0, 0))
.. code-tab:: csharp
var st = new SurfaceTool();
st.Begin(Mesh.PrimitiveType.Triangles);
st.SetColor(new Color(1, 0, 0));
st.SetUV(new Vector2(0, 0));
st.AddVertex(new Vector3(0, 0, 0));
Il suddetto **SurfaceTool** ora contiene un vertice di un triangolo che ha una coordinata UV e un :ref:`Color<class_Color>` specificato. Se un altro vertice fosse aggiunto senza chiamare :ref:`set_uv()<class_SurfaceTool_method_set_uv>` o :ref:`set_color()<class_SurfaceTool_method_set_color>`, sarebbero utilizzati gli ultimi valori.
Gli attributi dei vertici devono essere passati **prima** di chiamare :ref:`add_vertex()<class_SurfaceTool_method_add_vertex>`. Altrimenti, si verificherà un errore commettendo le informazioni del vertice in una mesh.
Inoltre, gli attributi utilizzati prima di aggiungere il primo vertice determinano il formato della mesh. Ad esempio, se si aggiungono solo gli UV al primo vertice, non è possibile aggiungere il colore a nessuno dei vertici successivi.
Vedi anche :ref:`ArrayMesh<class_ArrayMesh>`, :ref:`ImmediateMesh<class_ImmediateMesh>` e :ref:`MeshDataTool<class_MeshDataTool>` per la generazione di geometria procedurale.
\ **Nota:** Godot utilizza l'`ordine di avvolgimento <https://learnopengl.com/Advanced-OpenGL/Face-culling>`__ in senso orario per le facce frontali delle modalità di primitiva triangolare.
.. rst-class:: classref-introduction-group
Tutorial
----------------
- :doc:`Utilizzo di SurfaceTool <../tutorials/3d/procedural_geometry/surfacetool>`
- `Demo di voxel 3D <https://godotengine.org/asset-library/asset/2755>`__
.. rst-class:: classref-reftable-group
Metodi
------------
.. table::
:widths: auto
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`add_index<class_SurfaceTool_method_add_index>`\ (\ index\: :ref:`int<class_int>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`add_triangle_fan<class_SurfaceTool_method_add_triangle_fan>`\ (\ vertices\: :ref:`PackedVector3Array<class_PackedVector3Array>`, uvs\: :ref:`PackedVector2Array<class_PackedVector2Array>` = PackedVector2Array(), colors\: :ref:`PackedColorArray<class_PackedColorArray>` = PackedColorArray(), uv2s\: :ref:`PackedVector2Array<class_PackedVector2Array>` = PackedVector2Array(), normals\: :ref:`PackedVector3Array<class_PackedVector3Array>` = PackedVector3Array(), tangents\: :ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\] = []\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`add_vertex<class_SurfaceTool_method_add_vertex>`\ (\ vertex\: :ref:`Vector3<class_Vector3>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`append_from<class_SurfaceTool_method_append_from>`\ (\ existing\: :ref:`Mesh<class_Mesh>`, surface\: :ref:`int<class_int>`, transform\: :ref:`Transform3D<class_Transform3D>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`begin<class_SurfaceTool_method_begin>`\ (\ primitive\: :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`clear<class_SurfaceTool_method_clear>`\ (\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`ArrayMesh<class_ArrayMesh>` | :ref:`commit<class_SurfaceTool_method_commit>`\ (\ existing\: :ref:`ArrayMesh<class_ArrayMesh>` = null, flags\: :ref:`int<class_int>` = 0\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Array<class_Array>` | :ref:`commit_to_arrays<class_SurfaceTool_method_commit_to_arrays>`\ (\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`create_from<class_SurfaceTool_method_create_from>`\ (\ existing\: :ref:`Mesh<class_Mesh>`, surface\: :ref:`int<class_int>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`create_from_arrays<class_SurfaceTool_method_create_from_arrays>`\ (\ arrays\: :ref:`Array<class_Array>`, primitive_type\: :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` = 3\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`create_from_blend_shape<class_SurfaceTool_method_create_from_blend_shape>`\ (\ existing\: :ref:`Mesh<class_Mesh>`, surface\: :ref:`int<class_int>`, blend_shape\: :ref:`String<class_String>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`deindex<class_SurfaceTool_method_deindex>`\ (\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedInt32Array<class_PackedInt32Array>` | :ref:`generate_lod<class_SurfaceTool_method_generate_lod>`\ (\ nd_threshold\: :ref:`float<class_float>`, target_index_count\: :ref:`int<class_int>` = 3\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`generate_normals<class_SurfaceTool_method_generate_normals>`\ (\ flip\: :ref:`bool<class_bool>` = false\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`generate_tangents<class_SurfaceTool_method_generate_tangents>`\ (\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`AABB<class_AABB>` | :ref:`get_aabb<class_SurfaceTool_method_get_aabb>`\ (\ ) |const| |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` | :ref:`get_custom_format<class_SurfaceTool_method_get_custom_format>`\ (\ channel_index\: :ref:`int<class_int>`\ ) |const| |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` | :ref:`get_primitive_type<class_SurfaceTool_method_get_primitive_type>`\ (\ ) |const| |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`SkinWeightCount<enum_SurfaceTool_SkinWeightCount>` | :ref:`get_skin_weight_count<class_SurfaceTool_method_get_skin_weight_count>`\ (\ ) |const| |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`index<class_SurfaceTool_method_index>`\ (\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`optimize_indices_for_cache<class_SurfaceTool_method_optimize_indices_for_cache>`\ (\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_bones<class_SurfaceTool_method_set_bones>`\ (\ bones\: :ref:`PackedInt32Array<class_PackedInt32Array>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_color<class_SurfaceTool_method_set_color>`\ (\ color\: :ref:`Color<class_Color>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_custom<class_SurfaceTool_method_set_custom>`\ (\ channel_index\: :ref:`int<class_int>`, custom_color\: :ref:`Color<class_Color>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_custom_format<class_SurfaceTool_method_set_custom_format>`\ (\ channel_index\: :ref:`int<class_int>`, format\: :ref:`CustomFormat<enum_SurfaceTool_CustomFormat>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_material<class_SurfaceTool_method_set_material>`\ (\ material\: :ref:`Material<class_Material>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_normal<class_SurfaceTool_method_set_normal>`\ (\ normal\: :ref:`Vector3<class_Vector3>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_skin_weight_count<class_SurfaceTool_method_set_skin_weight_count>`\ (\ count\: :ref:`SkinWeightCount<enum_SurfaceTool_SkinWeightCount>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_smooth_group<class_SurfaceTool_method_set_smooth_group>`\ (\ index\: :ref:`int<class_int>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_tangent<class_SurfaceTool_method_set_tangent>`\ (\ tangent\: :ref:`Plane<class_Plane>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_uv<class_SurfaceTool_method_set_uv>`\ (\ uv\: :ref:`Vector2<class_Vector2>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_uv2<class_SurfaceTool_method_set_uv2>`\ (\ uv2\: :ref:`Vector2<class_Vector2>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_weights<class_SurfaceTool_method_set_weights>`\ (\ weights\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ ) |
+----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Enumerazioni
------------------------
.. _enum_SurfaceTool_CustomFormat:
.. rst-class:: classref-enumeration
enum **CustomFormat**: :ref:`🔗<enum_SurfaceTool_CustomFormat>`
.. _class_SurfaceTool_constant_CUSTOM_RGBA8_UNORM:
.. rst-class:: classref-enumeration-constant
:ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` **CUSTOM_RGBA8_UNORM** = ``0``
Limita l'intervallo dei dati passati a :ref:`set_custom()<class_SurfaceTool_method_set_custom>` normalizzato da 0 a 1 (senza segno), memorizzato in 8 bit per canale. Vedi :ref:`Mesh.ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`.
.. _class_SurfaceTool_constant_CUSTOM_RGBA8_SNORM:
.. rst-class:: classref-enumeration-constant
:ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` **CUSTOM_RGBA8_SNORM** = ``1``
Limita l'intervallo dei dati passati a :ref:`set_custom()<class_SurfaceTool_method_set_custom>` normalizzato da -1 a 1 (con segno), memorizzato in 8 bit per canale. Vedi :ref:`Mesh.ARRAY_CUSTOM_RGBA8_SNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_SNORM>`.
.. _class_SurfaceTool_constant_CUSTOM_RG_HALF:
.. rst-class:: classref-enumeration-constant
:ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` **CUSTOM_RG_HALF** = ``2``
Memorizza i dati passati a :ref:`set_custom()<class_SurfaceTool_method_set_custom>` in valori in virgola mobile a mezza precisione, utilizzando i canali di colore rosso e verde. Vedi :ref:`Mesh.ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>`.
.. _class_SurfaceTool_constant_CUSTOM_RGBA_HALF:
.. rst-class:: classref-enumeration-constant
:ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` **CUSTOM_RGBA_HALF** = ``3``
Memorizza i dati passati a :ref:`set_custom()<class_SurfaceTool_method_set_custom>` in valori in virgola mobile a mezza precisione, utilizzando tutti i canali di colore. Vedi :ref:`Mesh.ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`.
.. _class_SurfaceTool_constant_CUSTOM_R_FLOAT:
.. rst-class:: classref-enumeration-constant
:ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` **CUSTOM_R_FLOAT** = ``4``
Memorizza i dati passati a :ref:`set_custom()<class_SurfaceTool_method_set_custom>` in valori in virgola mobile a precisione completa, utilizzando solo il canale di colore rosso. Vedi :ref:`Mesh.ARRAY_CUSTOM_R_FLOAT<class_Mesh_constant_ARRAY_CUSTOM_R_FLOAT>`.
.. _class_SurfaceTool_constant_CUSTOM_RG_FLOAT:
.. rst-class:: classref-enumeration-constant
:ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` **CUSTOM_RG_FLOAT** = ``5``
Memorizza i dati passati a :ref:`set_custom()<class_SurfaceTool_method_set_custom>` in valori in virgola mobile a precisione completa, utilizzando solo i canali di colore rosso e verde. Vedi :ref:`Mesh.ARRAY_CUSTOM_RG_FLOAT<class_Mesh_constant_ARRAY_CUSTOM_RG_FLOAT>`.
.. _class_SurfaceTool_constant_CUSTOM_RGB_FLOAT:
.. rst-class:: classref-enumeration-constant
:ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` **CUSTOM_RGB_FLOAT** = ``6``
Memorizza i dati passati a :ref:`set_custom()<class_SurfaceTool_method_set_custom>` in valori in virgola mobile a precisione completa, utilizzando solo i canali di colore rosso, blu e verde. Vedi :ref:`Mesh.ARRAY_CUSTOM_RGB_FLOAT<class_Mesh_constant_ARRAY_CUSTOM_RGB_FLOAT>`.
.. _class_SurfaceTool_constant_CUSTOM_RGBA_FLOAT:
.. rst-class:: classref-enumeration-constant
:ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` **CUSTOM_RGBA_FLOAT** = ``7``
Memorizza i dati passati a :ref:`set_custom()<class_SurfaceTool_method_set_custom>` in valori in virgola mobile a precisione completa, utilizzando tutti i canali di colore. Vedi :ref:`Mesh.ARRAY_CUSTOM_RGBA_FLOAT<class_Mesh_constant_ARRAY_CUSTOM_RGBA_FLOAT>`.
.. _class_SurfaceTool_constant_CUSTOM_MAX:
.. rst-class:: classref-enumeration-constant
:ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` **CUSTOM_MAX** = ``8``
Utilizzato per indicare un canale personalizzato disabilitato.
.. rst-class:: classref-item-separator
----
.. _enum_SurfaceTool_SkinWeightCount:
.. rst-class:: classref-enumeration
enum **SkinWeightCount**: :ref:`🔗<enum_SurfaceTool_SkinWeightCount>`
.. _class_SurfaceTool_constant_SKIN_4_WEIGHTS:
.. rst-class:: classref-enumeration-constant
:ref:`SkinWeightCount<enum_SurfaceTool_SkinWeightCount>` **SKIN_4_WEIGHTS** = ``0``
Ogni singolo vertice può essere influenzato solo da 4 pesi di ossa.
.. _class_SurfaceTool_constant_SKIN_8_WEIGHTS:
.. rst-class:: classref-enumeration-constant
:ref:`SkinWeightCount<enum_SurfaceTool_SkinWeightCount>` **SKIN_8_WEIGHTS** = ``1``
Ogni singolo vertice può essere influenzato da un massimo di 8 pesi di ossa.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Descrizioni dei metodi
--------------------------------------------
.. _class_SurfaceTool_method_add_index:
.. rst-class:: classref-method
|void| **add_index**\ (\ index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_SurfaceTool_method_add_index>`
Aggiunge un vertice all'array di indici se si utilizzano vertici indicizzati. Non è necessario chiamarlo prima di aggiungere i vertici.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_add_triangle_fan:
.. rst-class:: classref-method
|void| **add_triangle_fan**\ (\ vertices\: :ref:`PackedVector3Array<class_PackedVector3Array>`, uvs\: :ref:`PackedVector2Array<class_PackedVector2Array>` = PackedVector2Array(), colors\: :ref:`PackedColorArray<class_PackedColorArray>` = PackedColorArray(), uv2s\: :ref:`PackedVector2Array<class_PackedVector2Array>` = PackedVector2Array(), normals\: :ref:`PackedVector3Array<class_PackedVector3Array>` = PackedVector3Array(), tangents\: :ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\] = []\ ) :ref:`🔗<class_SurfaceTool_method_add_triangle_fan>`
Inserisce un ventaglio triangolare costituito da un array di dati nella :ref:`Mesh<class_Mesh>` in fase di costruzione.
Richiede che il tipo di primitiva sia impostato su :ref:`Mesh.PRIMITIVE_TRIANGLES<class_Mesh_constant_PRIMITIVE_TRIANGLES>`.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_add_vertex:
.. rst-class:: classref-method
|void| **add_vertex**\ (\ vertex\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_SurfaceTool_method_add_vertex>`
Specifica la posizione del vertice attuale. Dovrebbe essere chiamato dopo aver specificato le altre proprietà del vertice (ad esempio il colore, l'UV).
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_append_from:
.. rst-class:: classref-method
|void| **append_from**\ (\ existing\: :ref:`Mesh<class_Mesh>`, surface\: :ref:`int<class_int>`, transform\: :ref:`Transform3D<class_Transform3D>`\ ) :ref:`🔗<class_SurfaceTool_method_append_from>`
Aggiunge i vertici da una determinata superficie della :ref:`Mesh<class_Mesh>` all'array attuale di vertici con il :ref:`Transform3D<class_Transform3D>` specificato.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_begin:
.. rst-class:: classref-method
|void| **begin**\ (\ primitive\: :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`\ ) :ref:`🔗<class_SurfaceTool_method_begin>`
Chiamato prima di aggiungere qualsiasi vertice. Accetta il tipo di primitiva come argomento (ad esempio :ref:`Mesh.PRIMITIVE_TRIANGLES<class_Mesh_constant_PRIMITIVE_TRIANGLES>`).
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_clear:
.. rst-class:: classref-method
|void| **clear**\ (\ ) :ref:`🔗<class_SurfaceTool_method_clear>`
Cancella tutte le informazioni passate finora allo strumento di superficie.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_commit:
.. rst-class:: classref-method
:ref:`ArrayMesh<class_ArrayMesh>` **commit**\ (\ existing\: :ref:`ArrayMesh<class_ArrayMesh>` = null, flags\: :ref:`int<class_int>` = 0\ ) :ref:`🔗<class_SurfaceTool_method_commit>`
Restituisce un :ref:`ArrayMesh<class_ArrayMesh>` costruito dalle informazioni attuali passate. Se un :ref:`ArrayMesh<class_ArrayMesh>` esistente viene passato come argomento, aggiungerà una superficie aggiuntiva all':ref:`ArrayMesh<class_ArrayMesh>` esistente.
L'argomento ``flags`` può essere l'OR bit a bit di :ref:`Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE<class_Mesh_constant_ARRAY_FLAG_USE_DYNAMIC_UPDATE>`, :ref:`Mesh.ARRAY_FLAG_USE_8_BONE_WEIGHTS<class_Mesh_constant_ARRAY_FLAG_USE_8_BONE_WEIGHTS>` o :ref:`Mesh.ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY<class_Mesh_constant_ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY>`.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_commit_to_arrays:
.. rst-class:: classref-method
:ref:`Array<class_Array>` **commit_to_arrays**\ (\ ) :ref:`🔗<class_SurfaceTool_method_commit_to_arrays>`
Commette i dati nello stesso formato utilizzato da :ref:`ArrayMesh.add_surface_from_arrays()<class_ArrayMesh_method_add_surface_from_arrays>`, :ref:`ImporterMesh.add_surface()<class_ImporterMesh_method_add_surface>` e :ref:`create_from_arrays()<class_SurfaceTool_method_create_from_arrays>`. In questo modo è possibile elaborare ulteriormente i dati della mesh utilizzando le API di :ref:`ArrayMesh<class_ArrayMesh>` o :ref:`ImporterMesh<class_ImporterMesh>`.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_create_from:
.. rst-class:: classref-method
|void| **create_from**\ (\ existing\: :ref:`Mesh<class_Mesh>`, surface\: :ref:`int<class_int>`\ ) :ref:`🔗<class_SurfaceTool_method_create_from>`
Crea un array di vertici da una :ref:`Mesh<class_Mesh>` esistente.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_create_from_arrays:
.. rst-class:: classref-method
|void| **create_from_arrays**\ (\ arrays\: :ref:`Array<class_Array>`, primitive_type\: :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` = 3\ ) :ref:`🔗<class_SurfaceTool_method_create_from_arrays>`
Crea questo SurfaceTool dagli array di vertici esistenti come quelli restituiti da :ref:`commit_to_arrays()<class_SurfaceTool_method_commit_to_arrays>`, :ref:`Mesh.surface_get_arrays()<class_Mesh_method_surface_get_arrays>`, :ref:`Mesh.surface_get_blend_shape_arrays()<class_Mesh_method_surface_get_blend_shape_arrays>`, :ref:`ImporterMesh.get_surface_arrays()<class_ImporterMesh_method_get_surface_arrays>` e :ref:`ImporterMesh.get_surface_blend_shape_arrays()<class_ImporterMesh_method_get_surface_blend_shape_arrays>`. ``primitive_type`` controlla il tipo di dati della mesh, il cui valore predefinito è :ref:`Mesh.PRIMITIVE_TRIANGLES<class_Mesh_constant_PRIMITIVE_TRIANGLES>`.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_create_from_blend_shape:
.. rst-class:: classref-method
|void| **create_from_blend_shape**\ (\ existing\: :ref:`Mesh<class_Mesh>`, surface\: :ref:`int<class_int>`, blend_shape\: :ref:`String<class_String>`\ ) :ref:`🔗<class_SurfaceTool_method_create_from_blend_shape>`
Crea un array di vertici dalla forma di fusione specificata di una :ref:`Mesh<class_Mesh>` esistente. Può essere utilizzato per estrarre una posa specifica da una forma di fusione.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_deindex:
.. rst-class:: classref-method
|void| **deindex**\ (\ ) :ref:`🔗<class_SurfaceTool_method_deindex>`
Rimuove l'array degli indici espandendo la matrice dei vertici.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_generate_lod:
.. rst-class:: classref-method
:ref:`PackedInt32Array<class_PackedInt32Array>` **generate_lod**\ (\ nd_threshold\: :ref:`float<class_float>`, target_index_count\: :ref:`int<class_int>` = 3\ ) :ref:`🔗<class_SurfaceTool_method_generate_lod>`
**Deprecato:** This method is unused internally, as it does not preserve normals or UVs. Consider using :ref:`ImporterMesh.generate_lods()<class_ImporterMesh_method_generate_lods>` instead.
Genera un LOD per la soglia ``nd_threshold`` in unità lineari (radice quadrata della metrica di errore quadrico), utilizzando al massimo ``target_index_count`` indici.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_generate_normals:
.. rst-class:: classref-method
|void| **generate_normals**\ (\ flip\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_SurfaceTool_method_generate_normals>`
Genera le normali dai vertici in modo da non doverlo fare manualmente. Se ``flip`` è ``true``, le normali risultanti saranno invertite. :ref:`generate_normals()<class_SurfaceTool_method_generate_normals>` dovrebbe essere chiamato *dopo* la generazione della geometria e *prima* di commettere le mesh usando :ref:`commit()<class_SurfaceTool_method_commit>` o :ref:`commit_to_arrays()<class_SurfaceTool_method_commit_to_arrays>`. Per visualizzare correttamente le superfici mappate con le normali, sarà necessario anche generare le tangenti usando :ref:`generate_tangents()<class_SurfaceTool_method_generate_tangents>`.
\ **Nota:** :ref:`generate_normals()<class_SurfaceTool_method_generate_normals>` funziona solo se il tipo di primitiva è impostato su :ref:`Mesh.PRIMITIVE_TRIANGLES<class_Mesh_constant_PRIMITIVE_TRIANGLES>`.
\ **Nota:** :ref:`generate_normals()<class_SurfaceTool_method_generate_normals>` tiene conto dei gruppi lisci. Per generare normali lisce, imposta il gruppo di lisciatura su un valore maggiore o uguale a ``0`` tramite :ref:`set_smooth_group()<class_SurfaceTool_method_set_smooth_group>` o lascia il gruppo sul valore predefinito di ``0``. Per generare normali piatte, imposta il gruppo di lisciatura su ``-1`` tramite :ref:`set_smooth_group()<class_SurfaceTool_method_set_smooth_group>` prima di aggiungere i vertici.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_generate_tangents:
.. rst-class:: classref-method
|void| **generate_tangents**\ (\ ) :ref:`🔗<class_SurfaceTool_method_generate_tangents>`
Genera un vettore tangente per ogni vertice. Richiede che ogni vertice abbia già impostato gli UV e le normali (vedi :ref:`generate_normals()<class_SurfaceTool_method_generate_normals>`).
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_get_aabb:
.. rst-class:: classref-method
:ref:`AABB<class_AABB>` **get_aabb**\ (\ ) |const| :ref:`🔗<class_SurfaceTool_method_get_aabb>`
Restituisce la bounding box allineata agli assi delle posizioni dei vertici.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_get_custom_format:
.. rst-class:: classref-method
:ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` **get_custom_format**\ (\ channel_index\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_SurfaceTool_method_get_custom_format>`
Restituisce il formato per il canale personalizzato all'indice ``channel_index`` (attualmente fino a 4). Restituisce :ref:`CUSTOM_MAX<class_SurfaceTool_constant_CUSTOM_MAX>` se questo canale personalizzato non è utilizzato.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_get_primitive_type:
.. rst-class:: classref-method
:ref:`PrimitiveType<enum_Mesh_PrimitiveType>` **get_primitive_type**\ (\ ) |const| :ref:`🔗<class_SurfaceTool_method_get_primitive_type>`
Restituisce il tipo di geometria della mesh, come ad esempio :ref:`Mesh.PRIMITIVE_TRIANGLES<class_Mesh_constant_PRIMITIVE_TRIANGLES>`.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_get_skin_weight_count:
.. rst-class:: classref-method
:ref:`SkinWeightCount<enum_SurfaceTool_SkinWeightCount>` **get_skin_weight_count**\ (\ ) |const| :ref:`🔗<class_SurfaceTool_method_get_skin_weight_count>`
Come predefinito, restituisce :ref:`SKIN_4_WEIGHTS<class_SurfaceTool_constant_SKIN_4_WEIGHTS>` per indicare che sono utilizzate solo 4 influenze delle ossa per ogni vertice.
Restituisce :ref:`SKIN_8_WEIGHTS<class_SurfaceTool_constant_SKIN_8_WEIGHTS>` se sono utilizzate fino a 8 influenze.
\ **Nota:** Questa funzione restituisce un'enumerazione, non il numero esatto di pesi.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_index:
.. rst-class:: classref-method
|void| **index**\ (\ ) :ref:`🔗<class_SurfaceTool_method_index>`
Riduce l'array dei vertici creando un array di indici. Ciò può migliorare le prestazioni evitando che i vertici siano riutilizzati.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_optimize_indices_for_cache:
.. rst-class:: classref-method
|void| **optimize_indices_for_cache**\ (\ ) :ref:`🔗<class_SurfaceTool_method_optimize_indices_for_cache>`
Ottimizza l'ordinamento dei triangoli per migliorare le prestazioni. Richiede che :ref:`get_primitive_type()<class_SurfaceTool_method_get_primitive_type>` sia :ref:`Mesh.PRIMITIVE_TRIANGLES<class_Mesh_constant_PRIMITIVE_TRIANGLES>`.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_set_bones:
.. rst-class:: classref-method
|void| **set_bones**\ (\ bones\: :ref:`PackedInt32Array<class_PackedInt32Array>`\ ) :ref:`🔗<class_SurfaceTool_method_set_bones>`
Specifica un array di ossa da utilizzare per il *prossimo* vertice. ``bones`` deve contenere 4 numeri interi.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_set_color:
.. rst-class:: classref-method
|void| **set_color**\ (\ color\: :ref:`Color<class_Color>`\ ) :ref:`🔗<class_SurfaceTool_method_set_color>`
Specifica un :ref:`Color<class_Color>` da usare per il *prossimo* vertice . Se ogni vertice deve avere questa informazione impostata e non la si invia per il primo vertice, tale informazione potrebbe non essere usata affatto.
\ **Nota:** Il materiale deve avere :ref:`BaseMaterial3D.vertex_color_use_as_albedo<class_BaseMaterial3D_property_vertex_color_use_as_albedo>` abilitato affinché il colore del vertice sia visibile.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_set_custom:
.. rst-class:: classref-method
|void| **set_custom**\ (\ channel_index\: :ref:`int<class_int>`, custom_color\: :ref:`Color<class_Color>`\ ) :ref:`🔗<class_SurfaceTool_method_set_custom>`
Imposta il valore personalizzato su questo vertice per il canale all'indice ``channel_index``.
È necessario chiamare prima :ref:`set_custom_format()<class_SurfaceTool_method_set_custom_format>` per il canale all'indice ``channel_index``. I formati che non sono RGBA ignoreranno gli altri canali di colore.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_set_custom_format:
.. rst-class:: classref-method
|void| **set_custom_format**\ (\ channel_index\: :ref:`int<class_int>`, format\: :ref:`CustomFormat<enum_SurfaceTool_CustomFormat>`\ ) :ref:`🔗<class_SurfaceTool_method_set_custom_format>`
Imposta il formato colore per il canale personalizzato all'indice ``channel_index``. Usa :ref:`CUSTOM_MAX<class_SurfaceTool_constant_CUSTOM_MAX>` per disabilitare.
Deve essere richiamato dopo :ref:`begin()<class_SurfaceTool_method_begin>` e impostato prima di :ref:`commit()<class_SurfaceTool_method_commit>` o :ref:`commit_to_arrays()<class_SurfaceTool_method_commit_to_arrays>`.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_set_material:
.. rst-class:: classref-method
|void| **set_material**\ (\ material\: :ref:`Material<class_Material>`\ ) :ref:`🔗<class_SurfaceTool_method_set_material>`
Imposta il :ref:`Material<class_Material>` da utilizzare per la :ref:`Mesh<class_Mesh>` che stai costruendo.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_set_normal:
.. rst-class:: classref-method
|void| **set_normal**\ (\ normal\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_SurfaceTool_method_set_normal>`
Specifica una normale da usare per il *prossimo* vertice. Se ogni vertice deve avere questa informazione impostata e non la si invia per il primo vertice, tale informazione potrebbe non essere usata affatto.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_set_skin_weight_count:
.. rst-class:: classref-method
|void| **set_skin_weight_count**\ (\ count\: :ref:`SkinWeightCount<enum_SurfaceTool_SkinWeightCount>`\ ) :ref:`🔗<class_SurfaceTool_method_set_skin_weight_count>`
Imposta su :ref:`SKIN_8_WEIGHTS<class_SurfaceTool_constant_SKIN_8_WEIGHTS>` per indicare che è possibile utilizzare fino a 8 influenze delle ossa per ogni vertice.
Come predefinito, sono utilizzate solo 4 influenze delle ossa (:ref:`SKIN_4_WEIGHTS<class_SurfaceTool_constant_SKIN_4_WEIGHTS>`)
\ **Nota:** Questa funzione accetta un'enumerazione, non il numero esatto di pesi.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_set_smooth_group:
.. rst-class:: classref-method
|void| **set_smooth_group**\ (\ index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_SurfaceTool_method_set_smooth_group>`
Specifica il gruppo di lisciatura da usare per il *prossimo* vertice. Se non viene mai chiamato, tutti i vertici avranno il gruppo di lisciatura predefinito di ``0`` e saranno lisciati con i vertici adiacenti dello stesso gruppo. Per produrre una mesh con normali piatte, imposta il gruppo di lisciatura su ``-1``.
\ **Nota:** Questa funzione in realtà accetta un ``uint32_t``, quindi gli utenti in C# dovrebbero usare ``uint32.MaxValue`` invece di ``-1`` per produrre una mesh con normali piatte.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_set_tangent:
.. rst-class:: classref-method
|void| **set_tangent**\ (\ tangent\: :ref:`Plane<class_Plane>`\ ) :ref:`🔗<class_SurfaceTool_method_set_tangent>`
Specifies a tangent to use for the *next* vertex. If every vertex needs to have this information set and you fail to submit it for the first vertex, this information may not be used at all.
\ **Note:** Even though ``tangent`` is a :ref:`Plane<class_Plane>`, it does not directly represent the tangent plane. Its :ref:`Plane.x<class_Plane_property_x>`, :ref:`Plane.y<class_Plane_property_y>`, and :ref:`Plane.z<class_Plane_property_z>` represent the tangent vector and :ref:`Plane.d<class_Plane_property_d>` should be either ``-1`` or ``1``. See also :ref:`Mesh.ARRAY_TANGENT<class_Mesh_constant_ARRAY_TANGENT>`.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_set_uv:
.. rst-class:: classref-method
|void| **set_uv**\ (\ uv\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_SurfaceTool_method_set_uv>`
Specifica le coordinate UV da usare per il *prossimo* vertice. Se ogni vertice deve avere questa informazione impostata e non la si invia per il primo vertice, tale informazione potrebbe non essere usata affatto.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_set_uv2:
.. rst-class:: classref-method
|void| **set_uv2**\ (\ uv2\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_SurfaceTool_method_set_uv2>`
Specifica le coordinate UV secondarie da usare per il *prossimo* vertice. Se ogni vertice deve avere questa informazione impostata e non la si invia per il primo vertice, tale informazione potrebbe non essere usata affatto.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_set_weights:
.. rst-class:: classref-method
|void| **set_weights**\ (\ weights\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ ) :ref:`🔗<class_SurfaceTool_method_set_weights>`
Specifica i valori di peso da usare per il *prossimo* vertice. Se ogni vertice deve avere questa informazione impostata e non la si invia per il primo vertice, tale informazione potrebbe non essere usata affatto.
.. |virtual| replace:: :abbr:`virtual (Questo metodo dovrebbe solitamente essere sovrascritto dall'utente per aver un effetto.)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (Questo metodo non ha effetti collaterali. Non modifica alcuna variabile appartenente all'istanza.)`
.. |vararg| replace:: :abbr:`vararg (Questo metodo accetta qualsiasi numero di argomenti oltre a quelli descritti qui.)`
.. |constructor| replace:: :abbr:`constructor (Questo metodo è utilizzato per creare un tipo.)`
.. |static| replace:: :abbr:`static (Questo metodo non necessita di alcun'istanza per essere chiamato, quindi può essere chiamato direttamente usando il nome della classe.)`
.. |operator| replace:: :abbr:`operator (Questo metodo descrive un operatore valido da usare con questo tipo come operando di sinistra.)`
.. |bitfield| replace:: :abbr:`BitField (Questo valore è un intero composto da una maschera di bit dei seguenti flag.)`
.. |void| replace:: :abbr:`void (Nessun valore restituito.)`