mirror of
https://github.com/godotengine/godot-docs-l10n.git
synced 2025-12-31 09:49:22 +03:00
686 lines
64 KiB
ReStructuredText
686 lines
64 KiB
ReStructuredText
: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-cn.github.io/04%20Advanced%20OpenGL/04%20Face%20culling/>`__\ 。
|
||
|
||
.. 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>`
|
||
|
||
指定当前顶点的位置。应在指定其他顶点属性(例如颜色、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>`
|
||
|
||
使用指定的 :ref:`Transform3D<class_Transform3D>` 将来自给定 :ref:`Mesh<class_Mesh>` 表面的顶点追加到当前的顶点数组中。
|
||
|
||
.. 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>`
|
||
|
||
清除到目前为止传入表面工具(surface tool)的所有信息。
|
||
|
||
.. 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>` 使用的相同格式。这样,你可以使用 :ref:`ArrayMesh<class_ArrayMesh>` 或 :ref:`ImporterMesh<class_ImporterMesh>` API 进一步处理网格数据。
|
||
|
||
.. 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>`
|
||
|
||
从现有顶点数组(例如 :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>` 返回的数组)创建该 SurfaceTool。\ ``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.
|
||
|
||
为给定的 ``nd_threshold`` 生成 LOD,使用线性单位(四次误差的平方根),最多使用 ``target_index_count`` 个索引。
|
||
|
||
.. 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>` 考虑了平滑组。要生成平滑法线,请使用 :ref:`set_smooth_group()<class_SurfaceTool_method_set_smooth_group>` 将平滑组设置为大于或等于 ``0`` 的值,或者将平滑组保留为默认值 ``0``\ 。要生成平面法线,请在添加顶点之前,使用 :ref:`set_smooth_group()<class_SurfaceTool_method_set_smooth_group>` 将平滑组设置为 ``-1``\ 。
|
||
|
||
.. 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 个骨骼影响。
|
||
|
||
如果使用最多 8 个影响,则返回 :ref:`SKIN_8_WEIGHTS<class_SurfaceTool_constant_SKIN_8_WEIGHTS>`\ 。
|
||
|
||
\ **注意:**\ 该函数返回一个枚举,而不是确切的权重数量。
|
||
|
||
.. 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>`\ 。如果每个顶点都需要设置此信息,而你没有成功为第一个顶点提交,则可能根本不会使用此信息。
|
||
|
||
\ **注意:**\ 材质必须启用 :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`` 通道的自定义值。
|
||
|
||
必须先为 ``channel_index`` 通道调用 :ref:`set_custom_format()<class_SurfaceTool_method_set_custom_format>`\ 。非 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:`Mesh<class_Mesh>` 使用的 :ref:`Material<class_Material>`\ 。
|
||
|
||
.. 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>`
|
||
|
||
指定\ *下一个*\ 顶点所使用的法线。如果每个顶点都需要设置此信息,而你没有为第一个顶点提交,则可能根本无法使用此信息。
|
||
|
||
.. 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>`
|
||
|
||
指定用于\ *下一个*\ 顶点的平滑组。如果从未调用过,则所有顶点都将具有默认的 ``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>`
|
||
|
||
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>`
|
||
|
||
指定\ *下一个*\ 顶点所使用的 UV 坐标。如果每个顶点都需要设置此信息,而你未能为第一个顶点提交此信息,此信息可能根本就不会被使用。
|
||
|
||
.. 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>`
|
||
|
||
指定可选的第二组UV坐标,用于\ *next*\ 顶点。如果每个顶点都需要设置这个信息,而你没有为第一个顶点提交这个信息,此信息可能根本就不会被使用。
|
||
|
||
.. 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>`
|
||
|
||
指定用于\ *下一个*\ 顶点的权重值。\ ``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 (无返回值。)`
|