Files
godot-docs-l10n/classes/uk/class_surfacetool.rst

684 lines
71 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. _class_SurfaceTool:
SurfaceTool
===========
**Успадковує:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
Інструмент для створення геометрії.
.. rst-class:: classref-introduction-group
Опис
--------
**SurfaceTool** використовується для побудови :ref:`Mesh<class_Mesh>` шляхом визначення атрибутів вершин окремо. Його можна використовувати для створення :ref:`Mesh<class_Mesh>` зі сценарію. Перед викликом :ref:`add_vertex()<class_SurfaceTool_method_add_vertex>` потрібно додати всі властивості, крім індексів. Наприклад, щоб додати кольори вершин і 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));
Наведений вище **SurfaceTool** тепер містить одну вершину трикутника, яка має UV-координату та вказаний :ref:`Color<class_Color>`. Якщо іншу вершину було додано без виклику :ref:`set_uv()<class_SurfaceTool_method_set_uv>` або :ref:`set_color()<class_SurfaceTool_method_set_color>`, тоді будуть використані останні значення.
Атрибути вершин необхідно передати **перед** викликом :ref:`add_vertex()<class_SurfaceTool_method_add_vertex>`. Невиконання цього призведе до помилки під час внесення інформації про вершини до сітки.
Крім того, атрибути, які використовуються перед додаванням першої вершини, визначають формат сітки. Наприклад, якщо ви додаєте UV лише до першої вершини, ви не можете додати колір до жодної з наступних вершин.
Дивіться також :ref:`ArrayMesh<class_ArrayMesh>`, :ref:`ImmediateMesh<class_ImmediateMesh>` і :ref:`MeshDataTool<class_MeshDataTool>` для створення процедурної геометрії.
\ **Примітка:** Godot використовує `порядок намотування <https://learnopengl.com/Advanced-OpenGL/Face-culling>`__ за годинниковою стрілкою для передніх граней примітивних режимів трикутника.
.. rst-class:: classref-introduction-group
Посібники
------------------
- :doc:`Використання SurfaceTool <../tutorials/3d/procedural_geometry/surfacetool>`
- `Демонстрація 3D вокселів <https://godotengine.org/asset-library/asset/2755>`__
.. rst-class:: classref-reftable-group
Методи
------------
.. 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
Переліки
----------------
.. _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``
Ліміти діапазону даних, переданих до :ref:`set_custom()<class_SurfaceTool_method_set_custom>`, щоб скасувати нормалізовано 0 до 1, що зберігається в 8 біт на каналі. :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``
Ліміти діапазону даних, переданих до :ref:`set_custom()<class_SurfaceTool_method_set_custom>`, щоб підписано нормалізовано -1 до 1, що зберігається в 8 бітах на каналі. :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``
Зберігати дані, передані до :ref:`set_custom()<class_SurfaceTool_method_set_custom>` як половина точності плавок, і використовувати тільки червоні і зелені кольорові канали. Див. :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``
Зберігати дані, передані в :ref:`set_custom()<class_SurfaceTool_method_set_custom>` як половина точності плавок і використовує всі кольорові канали. Див. :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``
Зберігати дані, передані до :ref:`set_custom()<class_SurfaceTool_method_set_custom>`, як повно прецизійних плавок, і використовує тільки червоний колірний канал. Див. :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``
Зберігати дані, передані до :ref:`set_custom()<class_SurfaceTool_method_set_custom>`, як повноточні плавки, і використовувати тільки червоні і зелені кольорові канали. Див. :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``
Зберігати дані, передані в :ref:`set_custom()<class_SurfaceTool_method_set_custom>`, як повноточні плавки, і використовувати тільки червоні, зелені і сині кольорові канали. Див. :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``
Зберігати дані, передані в :ref:`set_custom()<class_SurfaceTool_method_set_custom>`, як повноточні плавки, і використовувати всі кольорові канали. Подивитися :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``
Використовується для позначення відключення користувацького каналу.
.. 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``
Кожна окрема вершина може впливати лише на 4 кісткові маси.
.. _class_SurfaceTool_constant_SKIN_8_WEIGHTS:
.. rst-class:: classref-enumeration-constant
:ref:`SkinWeightCount<enum_SurfaceTool_SkinWeightCount>` **SKIN_8_WEIGHTS** = ``1``
Кожна окрема вершина може впливати на до 8 кісток.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Описи методів
--------------------------
.. _class_SurfaceTool_method_add_index:
.. rst-class:: classref-method
|void| **add_index**\ (\ index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_SurfaceTool_method_add_index>`
Додати вершину індексувати масив, якщо ви використовуєте індексовані вершини. Не потрібно називати перед додаванням вершин.
.. 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>`
Вставляє трикутний віяло, що складається з масиву даних, у :ref:`Mesh<class_Mesh>`, що створюється.
Потрібно встановити тип примітиву на :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>`
Вказати позицію поточного вершини. Повинен називатися після позначення інших властивостей вершини (наприклад, колір, УФ).
.. 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>`
Додати вершини з заданої поверхні :ref:`Mesh<class_Mesh>` до поточного масиву вершин за допомогою заданого :ref:`Transform3D<class_Transform3D>`.
.. 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>`
Зателефонуйте перед додаванням будь-яких вершин. Примітивний тип як аргумент (наприклад, :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>`
Зніміть всю інформацію, отриману в поверхневий інструмент так далеко.
.. 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>`
Повертає сконструйований :ref:`ArrayMesh<class_ArrayMesh>` із поточної переданої інформації. Якщо наявний :ref:`ArrayMesh<class_ArrayMesh>` передано як аргумент, буде додано додаткову поверхню до існуючого :ref:`ArrayMesh<class_ArrayMesh>`.
Аргумент ``flags`` може бути порозрядним АБО :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>` або :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>`
Записує дані у тому ж форматі, що використовується методами :ref:`ArrayMesh.add_surface_from_arrays()<class_ArrayMesh_method_add_surface_from_arrays>`, :ref:`ImporterMesh.add_surface()<class_ImporterMesh_method_add_surface>` та :ref:`create_from_arrays()<class_SurfaceTool_method_create_from_arrays>`. Таким чином, ви можете додатково обробляти дані сітки за допомогою API :ref:`ArrayMesh<class_ArrayMesh>` або :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>`
Створює вершину з існуючого :ref:`Mesh<class_Mesh>`.
.. 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>`
Створює цей SurfaceTool з існуючих масивів вершин, таких як повернені методами :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>` та :ref:`ImporterMesh.get_surface_blend_shape_arrays()<class_ImporterMesh_method_get_surface_blend_shape_arrays>`. Параметр ``primitive_type`` контролює тип даних сітки, за замовчуванням встановлюючи значення :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>`
Створює хребтовий масив з вказаної форми блендера існуючої :ref:`Mesh<class_Mesh>`. Це може бути використана для отримання конкретної пози від форми блендера.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_deindex:
.. rst-class:: classref-method
|void| **deindex**\ (\ ) :ref:`🔗<class_SurfaceTool_method_deindex>`
Видаліть індексний масив, розширивши діапазон вершини.
.. 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>`
**Застаріло:** 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.
Генерує рівень визначення (LOD) для заданого ``nd_threshold`` у лінійних одиницях (квадратний корінь з метрики квадратичної помилки), використовуючи не більше ``target_index_count`` indices.
.. 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>`
Генерує нормалі з вершин, тому вам не потрібно робити це вручну. Якщо ``flip`` має значення ``true``, отримані нормалі будуть інвертовані. :ref:`generate_normals()<class_SurfaceTool_method_generate_normals>` слід викликати *після* генерації геометрії та *перед* фіксацією сітки за допомогою :ref:`commit()<class_SurfaceTool_method_commit>` або :ref:`commit_to_arrays()<class_SurfaceTool_method_commit_to_arrays>`. Для правильного відображення поверхонь, нанесених на карту нормалей, вам також доведеться генерувати дотичні за допомогою :ref:`generate_tangents()<class_SurfaceTool_method_generate_tangents>`.
\ **Примітка:** :ref:`generate_normals()<class_SurfaceTool_method_generate_normals>` працює, лише якщо для примітивного типу встановлено значення :ref:`Mesh.PRIMITIVE_TRIANGLES<class_Mesh_constant_PRIMITIVE_TRIANGLES>`.
\ **Примітка:** :ref:`generate_normals()<class_SurfaceTool_method_generate_normals>` враховує гладкі групи. Щоб згенерувати згладжені нормалі, встановіть для згладженої групи значення більше або рівне ``0`` за допомогою :ref:`set_smooth_group()<class_SurfaceTool_method_set_smooth_group>` або залиште згладжену групу за замовчуванням ``0``. Щоб створити плоскі нормалі, перед додаванням вершин встановіть згладжену групу на ``-1`` за допомогою :ref:`set_smooth_group()<class_SurfaceTool_method_set_smooth_group>`.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_generate_tangents:
.. rst-class:: classref-method
|void| **generate_tangents**\ (\ ) :ref:`🔗<class_SurfaceTool_method_generate_tangents>`
Генерує дотичний вектор для кожної вершини. Вимагає, щоб кожна вершина вже мала встановлені UV та нормалі (див. :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>`
Повертає вісь-вирівнюючу коробку позицій вершини.
.. 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>`
Повертає формат на замовлення ``channel_index`` (поточно до 4). Повернення :ref:`CUSTOM_MAX<class_SurfaceTool_constant_CUSTOM_MAX>` якщо цей користувальницький канал невикористаний.
.. 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>`
Повертає тип геометрії сітки, наприклад :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>`
За замовчуванням повертає :ref:`SKIN_4_WEIGHTS<class_SurfaceTool_constant_SKIN_4_WEIGHTS>`, щоб вказати, що використовується лише 4 впливи кісток на вершину.
Повертає :ref:`SKIN_8_WEIGHTS<class_SurfaceTool_constant_SKIN_8_WEIGHTS>`, якщо використовується до 8 впливів..
\ **Примітка:** Ця функція повертає перерахування, а не точну кількість вагових коефіцієнтів.
.. rst-class:: classref-item-separator
----
.. _class_SurfaceTool_method_index:
.. rst-class:: classref-method
|void| **index**\ (\ ) :ref:`🔗<class_SurfaceTool_method_index>`
Подрібнює хребетний масив, створюючи індексний масив. Це може поліпшити продуктивність, уникаючи повторення вершини.
.. 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>`
Оптимізуйте сортування трикутника для виконання. Вимагає, що :ref:`get_primitive_type()<class_SurfaceTool_method_get_primitive_type>` :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>`
Визначає масив кісток для використання для *наступної* вершини. ``bones`` має містити 4 цілі числа.
.. 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>`
Вкажіть :ref:`Color<class_Color>` для використання *next* vertex. Якщо кожна вершина повинна мати цей набір інформації, і ви не можете подати його на перший вершину, ця інформація не може бути використана у всіх випадках.
\ **Примітка:** Матеріал повинен мати :ref:`BaseMaterial3D.vertex_color_use_as_albedo<class_BaseMaterial3D_property_vertex_color_use_as_albedo>` включений для кольору вершини, щоб бути видимим.
.. 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>`
Налаштовує індивідуальне значення на цьому вершині ``channel_index``.
\ :ref:`set_custom_format()<class_SurfaceTool_method_set_custom_format>` повинен бути викликаний першим для цього ``channel_index``. Формати, які не RGBA ігноруватимуть інші кольорові канали.
.. 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>`
Встановлює формат кольору для цього користувацького параметра ``channel_index``. Використовуйте :ref:`CUSTOM_MAX<class_SurfaceTool_constant_CUSTOM_MAX>` для вимкнення.
Повинен викликатися після :ref:`begin()<class_SurfaceTool_method_begin>` та має бути встановлений перед :ref:`commit()<class_SurfaceTool_method_commit>` або :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>`
Набори :ref:`Material<class_Material>` для використання :ref:`Mesh<class_Mesh>` ви конструктори.
.. 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>`
Визначає нормальне використання для *next* vertex. Якщо кожна вершина повинна мати цей набір інформації, і ви не можете подати його на перший вершину, ця інформація не може бути використана у всіх випадках.
.. 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>`
Установіть значення :ref:`SKIN_8_WEIGHTS<class_SurfaceTool_constant_SKIN_8_WEIGHTS>`, щоб вказати, що можна використовувати до 8 впливів на кістку на вершину.
За замовчуванням використовуються лише 4 впливи на кістку (:ref:`SKIN_4_WEIGHTS<class_SurfaceTool_constant_SKIN_4_WEIGHTS>`).
\ **Примітка.** Ця функція приймає перелік, а не точну кількість ваг.
.. 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>`
Визначає гладку групу для використання *next* vertex. Якщо це ніколи не називається, всі вершини будуть мати гладку групу за замовчуванням ``0`` і будуть плавлені сусідні вершини тієї ж групи. Для виготовлення сітки з плоскими нормами встановлюється гладка група до ``-1``.
\ **Примітка:** Ця функція фактично займає ``uint32_t``, тому користувачі C# повинні використовувати ``uint32.MaxValue`` замість ``-1`` для виробництва сітки з плоскими нормами.
.. 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>`
Вкажіть тангенс для використання *next* vertex. Якщо кожна вершина повинна мати цей набір інформації, і ви не можете подати його на перший вершину, ця інформація не може бути використана у всіх випадках.
.. 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>`
Визначає набір УФ-координат для використання для *next* vertex. Якщо кожна вершина повинна мати цей набір інформації, і ви не можете подати його на перший вершину, ця інформація не може бути використана у всіх випадках.
.. 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>`
Вкажіть додатковий другий набір УФ-координат для використання для *next* vertex. Якщо кожна вершина повинна мати цей набір інформації, і ви не можете подати його на перший вершину, ця інформація не може бути використана у всіх випадках.
.. 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>`
Визначає значення ваги для використання *next* vertex. ``weights`` повинні містити 4 значення. Якщо кожна вершина повинна мати цей набір інформації, і ви не можете подати його на перший вершину, ця інформація не може бути використана у всіх випадках.
.. |virtual| replace:: :abbr:`virtual (Зазвичай, цей метод перевизначається користувачем, щоб він мав вплив.)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (Цей метод не має побічних ефектів. Не змінює ніяку змінну екземпляра об'єкта.)`
.. |vararg| replace:: :abbr:`vararg (Цей метод приймає будь-яке число аргументів після описаних тут.)`
.. |constructor| replace:: :abbr:`constructor (Цей метод використовується для побудови типів.)`
.. |static| replace:: :abbr:`static (Цей метод не потребує екземпляра для виклику, його можна викликати безпосередньо за допомогою назви класу.)`
.. |operator| replace:: :abbr:`operator (Цей метод описує дійсний оператор для взаємодії з цим типом як з лівим операндом.)`
.. |bitfield| replace:: :abbr:`BitField (Це значення є цілим числом, складеним у вигляді бітової маски з наступних прапорів.)`
.. |void| replace:: :abbr:`void (Значення не повертається.)`