Class reference

MeshDataTool

Inherits RefCounted

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)
		
		var mesh = new ArrayMesh();
		mesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, new BoxMesh().GetMeshArrays());
		var mdt = new MeshDataTool();
		mdt.CreateFromSurface(mesh, 0);
		for (var i = 0; i < mdt.GetVertexCount(); i++)
		{
			Vector3 vertex = mdt.GetVertex(i);
			// In this example we extend the mesh by one unit, which results in separated faces as it is flat shaded.
			vertex += mdt.GetVertexNormal(i);
			// Save your change.
			mdt.SetVertex(i, vertex);
		}
		mesh.ClearSurfaces();
		mdt.CommitToSurface(mesh);
		var mi = new MeshInstance();
		mi.Mesh = mesh;
		AddChild(mi);
		

See also ArrayMesh, ImmediateMesh and SurfaceTool for procedural geometry generation. Note: Redot uses clockwise winding order for front faces of triangle primitive modes.

Methods

void clear()

Clears all data currently in MeshDataTool.

int commit_to_surface(ArrayMesh mesh, int compression_flags = 0)

Adds a new surface to specified Mesh with edited data.

int get_edge_count() const

Returns the number of edges in this Mesh.

Variant get_edge_meta(int idx) const

Returns meta information assigned to given edge.

int get_edge_vertex(int idx, int vertex) const

Returns the index of the specified vertex connected to the edge at index idx. vertex can only be 0 or 1, as edges are composed of two vertices.

int get_face_count() const

Returns the number of faces in this Mesh.

int get_face_edge(int idx, int edge) const

Returns the edge associated with the face at index idx. edge argument must be either 0, 1, or 2 because a face only has three edges.

Variant get_face_meta(int idx) const

Returns the metadata associated with the given face.

Vector3 get_face_normal(int idx) const

Calculates and returns the face normal of the given face.

int get_face_vertex(int idx, int vertex) 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 index = meshDataTool.GetFaceVertex(0, 1); // Gets the index of the second vertex of the first face.
				Vector3 position = meshDataTool.GetVertex(index);
				Vector3 normal = meshDataTool.GetVertexNormal(index);
				

Material get_material() const

Returns the material assigned to the Mesh.

Vector3 get_vertex(int idx) const

Returns the position of the given vertex.

Color get_vertex_color(int idx) const

Returns the color of the given vertex.

int get_vertex_count() const

Returns the total number of vertices in Mesh.

PackedInt32Array get_vertex_edges(int idx) const

Returns an array of edges that share the given vertex.

PackedInt32Array get_vertex_faces(int idx) const

Returns an array of faces that share the given vertex.

Variant get_vertex_meta(int idx) const

Returns the metadata associated with the given vertex.

Vector3 get_vertex_normal(int idx) const

Returns the normal of the given vertex.

Plane get_vertex_tangent(int idx) const

Returns the tangent of the given vertex.

Vector2 get_vertex_uv(int idx) const

Returns the UV of the given vertex.

Vector2 get_vertex_uv2(int idx) const

Returns the UV2 of the given vertex.

void set_edge_meta(int idx, Variant meta)

Sets the metadata of the given edge.

void set_face_meta(int idx, Variant meta)

Sets the metadata of the given face.

void set_material(Material material)

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

void set_vertex(int idx, Vector3 vertex)

Sets the position of the given vertex.

void set_vertex_color(int idx, Color color)

Sets the color of the given vertex.

void set_vertex_meta(int idx, Variant meta)

Sets the metadata associated with the given vertex.

void set_vertex_normal(int idx, Vector3 normal)

Sets the normal of the given vertex.

void set_vertex_tangent(int idx, Plane tangent)

Sets the tangent of the given vertex.

void set_vertex_uv(int idx, Vector2 uv)

Sets the UV of the given vertex.

void set_vertex_uv2(int idx, Vector2 uv2)

Sets the UV2 of the given vertex.

Tutorials

Source revision 4f5b14abade2
Connection interrupted. Reload×

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.