MeshDataTool¶
用于帮助编辑和使用 Mesh 网格数据的工具。
描述¶
MeshDataTool提供对Mesh中单个顶点的访问。它允许用户读取和编辑网格的顶点数据。还可以创建面和边的数组。
要使用MeshDataTool,请使用create_from_surface加载网格。当完成编辑数据后,用commit_to_surface将数据提交给Mesh。
下面是如何使用MeshDataTool的例子。
var mesh = ArrayMesh.new()
mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, CubeMesh.new().get_mesh_arrays())
var mdt = MeshDataTool.new()
mdt.create_from_surface(mesh, 0)
for i in range(mdt.get_vertex_count()):
var vertex = mdt.get_vertex(i)
# 在这个例子中,我们将Mesh扩展了一个单元,这样就会产生分离的面,因为它是平面阴影。
vertex += mdt.get_vertex_normal(i)
# 保存你的改动。
mdt.set_vertex(i, vertex)
mesh.surface_remove(0)
mdt.commit_to_surface(mesh)
var mi = MeshInstance.new()
mi.mesh = mesh
add_child(mi)
参阅ArrayMesh、ImmediateGeometry和SurfaceTool的程序性几何体生成。
注意: Godot对三角形原始模式的前端面使用顺时针缠绕顺序。
方法¶
方法说明¶
void clear ( )
将当前MeshDataTool中所有的数据全部清除。
使用编辑后的数据,向特定的Mesh中添加一个新的面。
使用给定Mesh的指定表面来填充MeshDataTool的数据。
要求Mesh具有基本类型Mesh.PRIMITIVE_TRIANGLES。
int get_edge_count ( ) const
返回这个Mesh的边数。
PoolIntArray get_edge_faces ( int idx ) const
返回与给定边相邻的面数组。
返回给定边的元数据。
返回连接到给定边的指定顶点的索引。
顶点参数只能是0或1,因为边是由两个顶点组成的。
int get_face_count ( ) const
返回这个Mesh中的面数。
返回与给定面关联的指定边。
Edge参数必须小于等于2,因为面只有3条边。
返回与给定面关联的元数据。
计算并返回给定面的面法线。
返回给定面的指定顶点。
顶点参数必须小于等于2,因为面包含3个顶点。
int get_format ( ) const
返回 Mesh 的格式,该格式是由 Mesh 格式标识组合而成的整数。例如,一个同时包含顶点和法线的网格将返回3
格式,因为 ArrayMesh.ARRAY_FORMAT_VERTEX = 1
,ArrayMesh.ARRAY_FORMAT_NORMAL = 2
。
参阅 ArrayFormat 的格式标识列表。
Material get_material ( ) const
返回分配给Mesh的材质。
返回给定索引处的顶点。
PoolIntArray get_vertex_bones ( int idx ) const
返回给定顶点的骨架。
返回给定顶点的颜色。
int get_vertex_count ( ) const
返回Mesh中顶点的总数。
PoolIntArray get_vertex_edges ( int idx ) const
返回共享给定顶点的边的数组。
PoolIntArray get_vertex_faces ( int idx ) const
返回共享给定顶点的面数组。
返回与给定顶点关联的元数据。
返回给定顶点的法线。
返回给定顶点的正切值。
返回给定顶点的UV。
返回给定顶点的UV2。
PoolRealArray get_vertex_weights ( int idx ) const
返回给定顶点的骨骼权重。
设置给定边的元数据。
设置给定面的元数据。
void set_material ( Material material )
设置新构建的Mesh使用的材质。
设置给定顶点的位置。
void set_vertex_bones ( int idx, PoolIntArray bones )
设置给定顶点的骨架。
设置给定顶点的颜色。
设置与给定顶点关联的元数据。
设置给定顶点的法线。
设置给定顶点的切线。
设置给定顶点的UV。
设置给定顶点的UV2。
void set_vertex_weights ( int idx, PoolRealArray weights )
设置给定顶点的骨骼权重。