Table of Contents

Class MeshDataTool

Helper tool to access and edit Mesh data.

Inheritance
MeshDataTool

Remarks

MeshDataTool provides access to individual vertices in a Mesh. It allows users to read and edit vertex data of meshes. It also creates an array of faces and edges.

To use MeshDataTool, load a mesh with MeshDataTool.create_from_surface. When you are finished editing the data commit the data to a mesh with MeshDataTool.commit_to_surface.

Below is an example of how MeshDataTool may be used.

var mesh = ArrayMesh.new()
mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, BoxMesh.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)
    # In this example we extend the mesh by one unit, which results in separated faces as it is flat shaded.
    vertex += mdt.get_vertex_normal(i)
    # Save your change.
    mdt.set_vertex(i, vertex)
mesh.clear_surfaces()
mdt.commit_to_surface(mesh)
var mi = MeshInstance.new()
mi.mesh = mesh
add_child(mi)

See also ArrayMesh, ImmediateMesh and SurfaceTool for procedural geometry generation.

Note: Godot uses clockwise winding order for front faces of triangle primitive modes.

See Also

Methods

clear

Clears all data currently in MeshDataTool.

void clear

commit_to_surface(ArrayMesh, int)

Adds a new surface to specified Mesh with edited data.

int commit_to_surface(ArrayMesh mesh, int compression_flags)

Parameters

mesh ArrayMesh
compression_flags int

create_from_surface(ArrayMesh, int)

Uses specified surface of given Mesh to populate data for MeshDataTool.

Requires Mesh with primitive type Mesh.PRIMITIVE_TRIANGLES.

int create_from_surface(ArrayMesh mesh, int surface)

Parameters

mesh ArrayMesh
surface int

get_edge_count

Qualifiers: const

Returns the number of edges in this Mesh.

int get_edge_count

get_edge_faces(int)

Qualifiers: const

Returns array of faces that touch given edge.

PackedInt32Array get_edge_faces(int idx)

Parameters

idx int

get_edge_meta(int)

Qualifiers: const

Returns meta information assigned to given edge.

Variant get_edge_meta(int idx)

Parameters

idx int

get_edge_vertex(int, int)

Qualifiers: const

Returns index of specified vertex connected to given edge.

Vertex argument can only be 0 or 1 because edges are comprised of two vertices.

int get_edge_vertex(int idx, int vertex)

Parameters

idx int
vertex int

get_face_count

Qualifiers: const

Returns the number of faces in this Mesh.

int get_face_count

get_face_edge(int, int)

Qualifiers: const

Returns specified edge associated with given face.

Edge argument must be either 0, 1, or 2 because a face only has three edges.

int get_face_edge(int idx, int edge)

Parameters

idx int
edge int

get_face_meta(int)

Qualifiers: const

Returns the metadata associated with the given face.

Variant get_face_meta(int idx)

Parameters

idx int

get_face_normal(int)

Qualifiers: const

Calculates and returns the face normal of the given face.

Vector3 get_face_normal(int idx)

Parameters

idx int

get_face_vertex(int, int)

Qualifiers: const

Returns the specified vertex index of the given face.

vertex must be either 0, 1, or 2 because faces contain three vertices.

var index = mesh_data_tool.get_face_vertex(0, 1) # Gets the index of the second vertex of the first face.
var position = mesh_data_tool.get_vertex(index)
var normal = mesh_data_tool.get_vertex_normal(index)

int get_face_vertex(int idx, int vertex)

Parameters

idx int
vertex int

get_format

Qualifiers: const

Returns the Mesh's format as a combination of the ArrayFormat flags. For example, a mesh containing both vertices and normals would return a format of 3 because Mesh.ARRAY_FORMAT_VERTEX is 1 and Mesh.ARRAY_FORMAT_NORMAL is 2.

int get_format

get_material

Qualifiers: const

Returns the material assigned to the Mesh.

Material get_material

get_vertex(int)

Qualifiers: const

Returns the position of the given vertex.

Vector3 get_vertex(int idx)

Parameters

idx int

get_vertex_bones(int)

Qualifiers: const

Returns the bones of the given vertex.

PackedInt32Array get_vertex_bones(int idx)

Parameters

idx int

get_vertex_color(int)

Qualifiers: const

Returns the color of the given vertex.

Color get_vertex_color(int idx)

Parameters

idx int

get_vertex_count

Qualifiers: const

Returns the total number of vertices in Mesh.

int get_vertex_count

get_vertex_edges(int)

Qualifiers: const

Returns an array of edges that share the given vertex.

PackedInt32Array get_vertex_edges(int idx)

Parameters

idx int

get_vertex_faces(int)

Qualifiers: const

Returns an array of faces that share the given vertex.

PackedInt32Array get_vertex_faces(int idx)

Parameters

idx int

get_vertex_meta(int)

Qualifiers: const

Returns the metadata associated with the given vertex.

Variant get_vertex_meta(int idx)

Parameters

idx int

get_vertex_normal(int)

Qualifiers: const

Returns the normal of the given vertex.

Vector3 get_vertex_normal(int idx)

Parameters

idx int

get_vertex_tangent(int)

Qualifiers: const

Returns the tangent of the given vertex.

Plane get_vertex_tangent(int idx)

Parameters

idx int

get_vertex_uv(int)

Qualifiers: const

Returns the UV of the given vertex.

Vector2 get_vertex_uv(int idx)

Parameters

idx int

get_vertex_uv2(int)

Qualifiers: const

Returns the UV2 of the given vertex.

Vector2 get_vertex_uv2(int idx)

Parameters

idx int

get_vertex_weights(int)

Qualifiers: const

Returns bone weights of the given vertex.

PackedFloat32Array get_vertex_weights(int idx)

Parameters

idx int

set_edge_meta(int, Variant)

Sets the metadata of the given edge.

void set_edge_meta(int idx, Variant meta)

Parameters

idx int
meta Variant

set_face_meta(int, Variant)

Sets the metadata of the given face.

void set_face_meta(int idx, Variant meta)

Parameters

idx int
meta Variant

set_material(Material)

Sets the material to be used by newly-constructed Mesh.

void set_material(Material material)

Parameters

material Material

set_vertex(int, Vector3)

Sets the position of the given vertex.

void set_vertex(int idx, Vector3 vertex)

Parameters

idx int
vertex Vector3

set_vertex_bones(int, PackedInt32Array)

Sets the bones of the given vertex.

void set_vertex_bones(int idx, PackedInt32Array bones)

Parameters

idx int
bones PackedInt32Array

set_vertex_color(int, Color)

Sets the color of the given vertex.

void set_vertex_color(int idx, Color color)

Parameters

idx int
color Color

set_vertex_meta(int, Variant)

Sets the metadata associated with the given vertex.

void set_vertex_meta(int idx, Variant meta)

Parameters

idx int
meta Variant

set_vertex_normal(int, Vector3)

Sets the normal of the given vertex.

void set_vertex_normal(int idx, Vector3 normal)

Parameters

idx int
normal Vector3

set_vertex_tangent(int, Plane)

Sets the tangent of the given vertex.

void set_vertex_tangent(int idx, Plane tangent)

Parameters

idx int
tangent Plane

set_vertex_uv(int, Vector2)

Sets the UV of the given vertex.

void set_vertex_uv(int idx, Vector2 uv)

Parameters

idx int
uv Vector2

set_vertex_uv2(int, Vector2)

Sets the UV2 of the given vertex.

void set_vertex_uv2(int idx, Vector2 uv2)

Parameters

idx int
uv2 Vector2

set_vertex_weights(int, PackedFloat32Array)

Sets the bone weights of the given vertex.

void set_vertex_weights(int idx, PackedFloat32Array weights)

Parameters

idx int
weights PackedFloat32Array