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
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
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
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
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.
int get_face_vertex(int idx, int vertex)
Parameters
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
set_face_meta(int, Variant)
Sets the metadata of the given face.
void set_face_meta(int idx, Variant meta)
Parameters
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
set_vertex_bones(int, PackedInt32Array)
Sets the bones of the given vertex.
void set_vertex_bones(int idx, PackedInt32Array bones)
Parameters
idx
intbones
PackedInt32Array
set_vertex_color(int, Color)
Sets the color of the given vertex.
void set_vertex_color(int idx, Color color)
Parameters
set_vertex_meta(int, Variant)
Sets the metadata associated with the given vertex.
void set_vertex_meta(int idx, Variant meta)
Parameters
set_vertex_normal(int, Vector3)
Sets the normal of the given vertex.
void set_vertex_normal(int idx, Vector3 normal)
Parameters
set_vertex_tangent(int, Plane)
Sets the tangent of the given vertex.
void set_vertex_tangent(int idx, Plane tangent)
Parameters
set_vertex_uv(int, Vector2)
Sets the UV of the given vertex.
void set_vertex_uv(int idx, Vector2 uv)
Parameters
set_vertex_uv2(int, Vector2)
Sets the UV2 of the given vertex.
void set_vertex_uv2(int idx, Vector2 uv2)
Parameters
set_vertex_weights(int, PackedFloat32Array)
Sets the bone weights of the given vertex.
void set_vertex_weights(int idx, PackedFloat32Array weights)
Parameters
idx
intweights
PackedFloat32Array