Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

MeshDataTool

Inherits: RefCounted < Object

Helper tool to access and edit Mesh data.

Description

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 create_from_surface. When you are finished editing the data commit the data to a mesh with 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.

Tutorials

Methods

void

clear ( )

Error

commit_to_surface ( ArrayMesh mesh, int compression_flags=0 )

Error

create_from_surface ( ArrayMesh mesh, int surface )

int

get_edge_count ( ) const

PackedInt32Array

get_edge_faces ( int idx ) const

Variant

get_edge_meta ( int idx ) const

int

get_edge_vertex ( int idx, int vertex ) const

int

get_face_count ( ) const

int

get_face_edge ( int idx, int edge ) const

Variant

get_face_meta ( int idx ) const

Vector3

get_face_normal ( int idx ) const

int

get_face_vertex ( int idx, int vertex ) const

int

get_format ( ) const

Material

get_material ( ) const

Vector3

get_vertex ( int idx ) const

PackedInt32Array

get_vertex_bones ( int idx ) const

Color

get_vertex_color ( int idx ) const

int

get_vertex_count ( ) const

PackedInt32Array

get_vertex_edges ( int idx ) const

PackedInt32Array

get_vertex_faces ( int idx ) const

Variant

get_vertex_meta ( int idx ) const

Vector3

get_vertex_normal ( int idx ) const

Plane

get_vertex_tangent ( int idx ) const

Vector2

get_vertex_uv ( int idx ) const

Vector2

get_vertex_uv2 ( int idx ) const

PackedFloat32Array

get_vertex_weights ( int idx ) const

void

set_edge_meta ( int idx, Variant meta )

void

set_face_meta ( int idx, Variant meta )

void

set_material ( Material material )

void

set_vertex ( int idx, Vector3 vertex )

void

set_vertex_bones ( int idx, PackedInt32Array bones )

void

set_vertex_color ( int idx, Color color )

void

set_vertex_meta ( int idx, Variant meta )

void

set_vertex_normal ( int idx, Vector3 normal )

void

set_vertex_tangent ( int idx, Plane tangent )

void

set_vertex_uv (