MeshDataTool
Hérite de : RefCounted < Object
Un outil d'aide pour accéder et modifier les données des Mesh.
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: Godot uses clockwise winding order for front faces of triangle primitive modes.
Tutoriels
Méthodes
Descriptions des méthodes
void clear() 🔗
Efface toutes les données actuellement dans le MeshDataTool.
Error commit_to_surface(mesh: ArrayMesh, compression_flags: int = 0) 🔗
Ajoute une nouvelle surface au Mesh spécifié avec les données modifiées.
Error create_from_surface(mesh: ArrayMesh, surface: int) 🔗
Utiliser la surface spécifiée de Mesh pour construire les données pour le MeshDataTool.
Nécessite un Mesh de type primitif Mesh.PRIMITIVE_TRIANGLES.
Renvoie le nombre d'arêtes dans ce Mesh.
PackedInt32Array get_edge_faces(idx: int) const 🔗
Renvoie le tableau des faces qui touchent l'arête donnée.
Variant get_edge_meta(idx: int) const 🔗
Renvoie les méta-données assignées à l'arête donnée.
int get_edge_vertex(idx: int, vertex: int) 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.
Renvoie le nombre de faces dans ce Mesh.
int get_face_edge(idx: int, edge: int) 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(idx: int) const 🔗
Renvoie les méta-données associées à la face donnée.
Vector3 get_face_normal(idx: int) const 🔗
Calcule et renvoie la normale de face de la face donnée.
int get_face_vertex(idx: int, vertex: int) 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);
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.
Material get_material() const 🔗
Renvoie la matériau assigné au Mesh.
Vector3 get_vertex(idx: int) const 🔗
Renvoie la position du sommet donné.
PackedInt32Array get_vertex_bones(idx: int) const 🔗
Renvoie les os du sommet donné.
Color get_vertex_color(idx: int) const 🔗
Renvoie la couleur du sommet donné.
int get_vertex_count() const 🔗
Renvoie le nombre total de sommet dans le Mesh.
PackedInt32Array get_vertex_edges(idx: int) const 🔗
Renvoie une liste des arêtes partageant le sommet donné.
PackedInt32Array get_vertex_faces(idx: int) const 🔗
Renvoie le tableau des faces partageant le sommet donné.
Variant get_vertex_meta(idx: int) const 🔗
Renvoie les méta-données associées au sommet donné.
Vector3 get_vertex_normal(idx: int) const 🔗
Renvoie la normale du sommet donné.
Plane get_vertex_tangent(idx: int) const 🔗
Renvoie la tangente du sommet donné.
Vector2 get_vertex_uv(idx: int) const 🔗
Renvoie l'UV du sommet donné.
Vector2 get_vertex_uv2(idx: int) const 🔗
Renvoie l'UV2 du sommet donné.
PackedFloat32Array get_vertex_weights(idx: int) const 🔗
Renvoie le poids des os du sommet donné.
void set_edge_meta(idx: int, meta: Variant) 🔗
Définit les méta-données pour le sommet donné.
void set_face_meta(idx: int, meta: Variant) 🔗
Définit les méta-données pour la face donnée.
void set_material(material: Material) 🔗
Définit le matériau à utiliser pour le nouveau Mesh construit.
void set_vertex(idx: int, vertex: Vector3) 🔗
Définit la position du sommet donné.
void set_vertex_bones(idx: int, bones: PackedInt32Array) 🔗
Définit les os du sommet donné.
void set_vertex_color(idx: int, color: Color) 🔗
Définit la couleur du sommet donné.
void set_vertex_meta(idx: int, meta: Variant) 🔗
Définit les méta-données associées du sommet donné.
void set_vertex_normal(idx: int, normal: Vector3) 🔗
Définit la normale du sommet donné.
void set_vertex_tangent(idx: int, tangent: Plane) 🔗
Définit la tangente du sommet donné.
void set_vertex_uv(idx: int, uv: Vector2) 🔗
Définit l'UV du sommet donné.
void set_vertex_uv2(idx: int, uv2: Vector2) 🔗
Définit l'UV2 du sommet donné.
void set_vertex_weights(idx: int, weights: PackedFloat32Array) 🔗
Définit les poids des os du sommet donné.