MeshDataTool

Inherits: Reference < 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, 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)
    # 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.surface_remove(0)
mdt.commit_to_surface(mesh)
var mi = MeshInstance.new()
mi.mesh = mesh
add_child(mi)

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

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

Methods

void

clear ( )

Error

commit_to_surface ( ArrayMesh mesh )

Error

create_from_surface ( ArrayMesh mesh, int surface )

int

get_edge_count ( ) const

PoolIntArray

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

PoolIntArray

get_vertex_bones ( int idx ) const

Color

get_vertex_color ( int idx ) const

int

get_vertex_count ( ) const

PoolIntArray

get_vertex_edges ( int idx ) const

PoolIntArray

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

PoolRealArray

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, PoolIntArray 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 ( int idx, Vector2 uv )

void

set_vertex_uv2 ( int idx, Vector2 uv2 )

void

set_vertex_weights ( int idx, PoolRealArray weights )

Method Descriptions

  • void clear ( )

Clears all data currently in MeshDataTool.


Adds a new surface to specified Mesh with edited data.


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

Requires Mesh with primitive type Mesh.PRIMITIVE_TRIANGLES.


  • int get_edge_count ( ) const

Returns the number of edges in this Mesh.


Returns array of faces that touch given edge.


Returns meta information assigned to given edge.


  • int get_edge_vertex ( int idx, int vertex ) 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_face_count ( ) const

Returns the number of faces in this Mesh.


  • int get_face_edge ( int idx, int edge ) const

Returns specified edge associated with given face.

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


Returns the metadata associated with the given face.


Calculates and returns the face normal of the given face.


  • int get_face_vertex ( int idx, int vertex ) const

Returns the specified vertex of the given face.

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


  • int get_format ( ) const

Returns the Mesh's format. Format is an integer made up of Mesh format flags combined together. For example, a mesh containing both vertices and normals would return a format of 3 because ArrayMesh.ARRAY_FORMAT_VERTEX is 1 and ArrayMesh.ARRAY_FORMAT_NORMAL is 2.

See ArrayFormat for a list of format flags.


Returns the material assigned to the Mesh.


Returns the vertex at given index.


Returns the bones 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.


Returns an array of edges that share the given vertex.


Returns an array of faces that share the given vertex.


Returns the metadata associated with the given vertex.


Returns the normal of the given vertex.


  • Plane get_vertex_tangent ( int idx ) const

Returns the tangent of the given vertex.


Returns the UV of the given vertex.


Returns the UV2 of the given vertex.


Returns bone weights of the given vertex.


Sets the metadata of the given edge.


Sets the metadata of the given face.


  • void set_material ( Material material )

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


Sets the position of the given vertex.


Sets the bones of the given vertex.


  • void set_vertex_color ( int idx, Color color )

Sets the color of the given vertex.


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.


Sets the UV of the given vertex.


Sets the UV2 of the given vertex.


Sets the bone weights of the given vertex.