MeshDataTool

Hereda: RefCounted < Object

Herramienta de ayuda para acceder y editar los datos de la Mesh.

Descripción

MeshDataTool proporciona acceso a los vértices individuales de una Mesh. Permite a los usuarios leer y editar los datos de los vértices de las mallas. También crea un array de caras y aristas.

Para usar MeshDataTool, cargue una malla con create_from_surface(). Cuando termines de editar los datos, confírmalos en una malla con commit_to_surface().

A continuación se muestra un ejemplo de cómo se puede usar MeshDataTool.

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)
    # En este ejemplo extendemos la malla una unidad, lo que resulta en caras separadas ya que tiene sombreado plano.
    vertex += mdt.get_vertex_normal(i)
    # Guarde su cambio.
    mdt.set_vertex(i, vertex)
mesh.clear_surfaces()
mdt.commit_to_surface(mesh)
var mi = MeshInstance.new()
mi.mesh = mesh
add_child(mi)

Véase también ArrayMesh, ImmediateMesh y SurfaceTool para la generación procedural de geometría.

Nota: Godot utiliza un orden de devanado en sentido horario para las caras frontales de los modos de primitiva de triángulo.

Tutoriales

Métodos

void

clear()

Error

commit_to_surface(mesh: ArrayMesh, compression_flags: int = 0)

Error

create_from_surface(mesh: ArrayMesh, surface: int)

int

get_edge_count() const

PackedInt32Array

get_edge_faces(idx: int) const

Variant

get_edge_meta(idx: int) const

int

get_edge_vertex(idx: int, vertex: int) const

int

get_face_count() const

int

get_face_edge(idx: int, edge: int) const

Variant

get_face_meta(idx: int) const

Vector3

get_face_normal(idx: int) const

int

get_face_vertex(idx: int, vertex: int) const

int

get_format() const

Material

get_material() const

Vector3

get_vertex(idx: int) const

PackedInt32Array

get_vertex_bones(idx: int) const

Color

get_vertex_color(idx: int) const

int

get_vertex_count() const

PackedInt32Array

get_vertex_edges(idx: int) const

PackedInt32Array

get_vertex_faces(idx: int) const

Variant

get_vertex_meta(idx: int) const

Vector3

get_vertex_normal(idx: int) const

Plane

get_vertex_tangent(idx: int) const

Vector2

get_vertex_uv(idx: int) const

Vector2

get_vertex_uv2(idx: int) const

PackedFloat32Array

get_vertex_weights(idx: int) const

void

set_edge_meta(idx: int, meta: Variant)

void

set_face_meta(idx: int, meta: Variant)

void

set_material(material: Material)

void

set_vertex(idx: int, vertex: Vector3)

void

set_vertex_bones(idx: int, bones: PackedInt32Array)

void

set_vertex_color(idx: int, color: Color)

void

set_vertex_meta(idx: int, meta: Variant)

void

set_vertex_normal(idx: int, normal: Vector3)

void

set_vertex_tangent(idx: int, tangent: Plane)

void

set_vertex_uv(idx: int, uv: Vector2)

void

set_vertex_uv2(idx: int, uv2: Vector2)

void

set_vertex_weights(idx: int, weights: PackedFloat32Array)


Descripciones de Métodos

void clear() 🔗

Borra todos los datos que actualmente están en la MeshDataTool.


Error commit_to_surface(mesh: ArrayMesh, compression_flags: int = 0) 🔗

Añade una nueva superficie a la Mesh especificada con datos editados.


Error create_from_surface(mesh: ArrayMesh, surface: int) 🔗

Utiliza la superficie especificada de la Mesh dada para poblar los datos de la MeshDataTool.

Requiere Mesh con el tipo primitivo Mesh.PRIMITIVE_TRIANGLES.


int get_edge_count() const 🔗

Devuelve el número de bordes en esta Mesh.


PackedInt32Array get_edge_faces(idx: int) const 🔗

Devuelve el conjunto de rostros que tocan el borde dado.


Variant get_edge_meta(idx: int) const 🔗

Devuelve la meta información asignada a un borde dado.


int get_edge_vertex(idx: int, vertex: int) const 🔗

Devuelve el índice del vertex especificado conectado al borde en el índice idx.

vertex solo puede ser 0 o 1, ya que los bordes se componen de dos vértices.


int get_face_count() const 🔗

Devuelve el número de caras en esta Mesh.


int get_face_edge(idx: int, edge: int) const 🔗

Devuelve el borde asociado con la cara en el índice idx.

El argumento edge debe ser 0, 1 o 2 porque una cara solo tiene tres bordes.


Variant get_face_meta(idx: int) const 🔗

Devuelve los metadatos asociados con la cara dada.


Vector3 get_face_normal(idx: int) const 🔗

Calcula y devuelve la cara normal de la cara dada.


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 get_format() const 🔗

Devuelve el formato de la Mesh como una combinación de los flags de ArrayFormat. Por ejemplo, una malla que contiene tanto vértices como normales devolvería un formato de 3 porque Mesh.ARRAY_FORMAT_VERTEX es 1 y Mesh.ARRAY_FORMAT_NORMAL es 2.


Material get_material() const 🔗

Devuelve el material asignado a la Mesh.


Vector3 get_vertex(idx: int) const 🔗

Devuelve la posición del vértice dado.


PackedInt32Array get_vertex_bones(idx: int) const 🔗

Devuelve los huesos del vértice dado.


Color get_vertex_color(idx: int) const 🔗

Devuelve el color del vértice dado.


int get_vertex_count() const 🔗

Devuelve el número total de vértices en Mesh.


PackedInt32Array get_vertex_edges(idx: int) const 🔗

Devuelve un array de bordes que comparten el vértice dado.


PackedInt32Array get_vertex_faces(idx: int) const 🔗

Devuelve un array de caras que comparten el vértice dado.


Variant get_vertex_meta(idx: int) const 🔗

Devuelve los metadatos asociados con el vértice dado.


Vector3 get_vertex_normal(idx: int) const 🔗

Devuelve la normal del vértice dado.


Plane get_vertex_tangent(idx: int) const 🔗

Devuelve la tangente del vértice dado.


Vector2 get_vertex_uv(idx: int) const 🔗

Devuelve el UV del vértice dado.


Vector2 get_vertex_uv2(idx: int) const 🔗

Devuelve el UV2 del vértice dado.


PackedFloat32Array get_vertex_weights(idx: int) const 🔗

Devuelve los pesos del hueso del vértice dado.


void set_edge_meta(idx: int, meta: Variant) 🔗

Establece los metadatos del borde dado.


void set_face_meta(idx: int, meta: Variant) 🔗

Establece los metadatos de la cara dada.


void set_material(material: Material) 🔗

Establece el material a ser usado por la Mesh recién construida.


void set_vertex(idx: int, vertex: Vector3) 🔗

Establece la posición del vértice dado.


void set_vertex_bones(idx: int, bones: PackedInt32Array) 🔗

Establece los huesos del vértice dado.


void set_vertex_color(idx: int, color: Color) 🔗

Establece el color del vértice dado.


void set_vertex_meta(idx: int, meta: Variant) 🔗

Establece los metadatos asociados con el vértice dado.


void set_vertex_normal(idx: int, normal: Vector3) 🔗

Establece la normal del vértice dado.


void set_vertex_tangent(idx: int, tangent: Plane) 🔗

Sets the tangent of the given vertex.

Note: Even though tangent is a Plane, it does not directly represent the tangent plane. Its Plane.x, Plane.y, and Plane.z represent the tangent vector and Plane.d should be either -1 or 1. See also Mesh.ARRAY_TANGENT.


void set_vertex_uv(idx: int, uv: Vector2) 🔗

Establece el UV del vértice dado.


void set_vertex_uv2(idx: int, uv2: Vector2) 🔗

Establece el UV2 del vértice dado.


void set_vertex_weights(idx: int, weights: PackedFloat32Array) 🔗

Establece los pesos del hueso del vértice dado.