Mesh

Hereda: Resource < RefCounted < Object

Heredado por: ArrayMesh, ImmediateMesh, PlaceholderMesh, PrimitiveMesh

Un Resource que contiene un array de vértices de una geometría.

Descripción

Mesh is a type of Resource that contains vertex array-based geometry, divided in surfaces. Each surface contains a completely separate array and a material used to draw it. Design wise, a mesh with multiple surfaces is preferred to a single surface, because objects created in 3D editing software commonly contain multiple materials. The maximum number of surfaces per mesh is RenderingServer.MAX_MESH_SURFACES.

Tutoriales

Propiedades

Vector2i

lightmap_size_hint

Vector2i(0, 0)

Métodos

AABB

_get_aabb() virtual required const

int

_get_blend_shape_count() virtual required const

StringName

_get_blend_shape_name(index: int) virtual required const

int

_get_surface_count() virtual required const

void

_set_blend_shape_name(index: int, name: StringName) virtual required

int

_surface_get_array_index_len(index: int) virtual required const

int

_surface_get_array_len(index: int) virtual required const

Array

_surface_get_arrays(index: int) virtual required const

Array[Array]

_surface_get_blend_shape_arrays(index: int) virtual required const

int

_surface_get_format(index: int) virtual required const

Dictionary

_surface_get_lods(index: int) virtual required const

Material

_surface_get_material(index: int) virtual required const

int

_surface_get_primitive_type(index: int) virtual required const

void

_surface_set_material(index: int, material: Material) virtual required

ConvexPolygonShape3D

create_convex_shape(clean: bool = true, simplify: bool = false) const

Mesh

create_outline(margin: float) const

Resource

create_placeholder() const

ConcavePolygonShape3D

create_trimesh_shape() const

TriangleMesh

generate_triangle_mesh() const

AABB

get_aabb() const

PackedVector3Array

get_faces() const

int

get_surface_count() const

Array

surface_get_arrays(surf_idx: int) const

Array[Array]

surface_get_blend_shape_arrays(surf_idx: int) const

Material

surface_get_material(surf_idx: int) const

void

surface_set_material(surf_idx: int, material: Material)


Enumeraciones

enum PrimitiveType: 🔗

PrimitiveType PRIMITIVE_POINTS = 0

Renderizar un array como puntos (un vértice es igual a un punto).

PrimitiveType PRIMITIVE_LINES = 1

Renderiza el array como líneas (cada dos vértices se crea una línea).

PrimitiveType PRIMITIVE_LINE_STRIP = 2

Renderiza un array como una tira de líneas.

PrimitiveType PRIMITIVE_TRIANGLES = 3

Renderizar la matriz como triángulos (cada tres vértices se crea un triángulo).

PrimitiveType PRIMITIVE_TRIANGLE_STRIP = 4

Renderizar un array como tiras de triángulo.


enum ArrayType: 🔗

ArrayType ARRAY_VERTEX = 0

PackedVector3Array, PackedVector2Array o Array de posiciones de vértices.

ArrayType ARRAY_NORMAL = 1

PackedVector3Array de normales de vértices.

Nota: El array tiene que consistir en vectores normales, de lo contrario serán normalizados por el motor, causando potencialmente discrepancias visuales.

ArrayType ARRAY_TANGENT = 2

PackedFloat32Array de tangentes de vértice. Cada elemento está en grupos de 4 floats, los 3 primeros floats determinan la tangente, y el último la dirección binormal como -1 o 1.

ArrayType ARRAY_COLOR = 3

PackedColorArray de colores de vertices.

ArrayType ARRAY_TEX_UV = 4

PackedVector2Array para coordenadas UV.

ArrayType ARRAY_TEX_UV2 = 5

PackedVector2Array para las segundas coordenadas UV.

ArrayType ARRAY_CUSTOM0 = 6

Contiene el canal de color personalizado 0. PackedByteArray si (format >> Mesh.ARRAY_FORMAT_CUSTOM0_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK es ARRAY_CUSTOM_RGBA8_UNORM, ARRAY_CUSTOM_RGBA8_SNORM, ARRAY_CUSTOM_RG_HALF, o ARRAY_CUSTOM_RGBA_HALF. PackedFloat32Array en caso contrario.

ArrayType ARRAY_CUSTOM1 = 7

Contiene el canal de color personalizado 1. PackedByteArray si (format >> Mesh.ARRAY_FORMAT_CUSTOM1_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK es ARRAY_CUSTOM_RGBA8_UNORM, ARRAY_CUSTOM_RGBA8_SNORM, ARRAY_CUSTOM_RG_HALF, o ARRAY_CUSTOM_RGBA_HALF. PackedFloat32Array en caso contrario.

ArrayType ARRAY_CUSTOM2 = 8

Contiene el canal de color personalizado 2. PackedByteArray si (format >> Mesh.ARRAY_FORMAT_CUSTOM2_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK es ARRAY_CUSTOM_RGBA8_UNORM, ARRAY_CUSTOM_RGBA8_SNORM, ARRAY_CUSTOM_RG_HALF, o ARRAY_CUSTOM_RGBA_HALF. PackedFloat32Array en caso contrario.

ArrayType ARRAY_CUSTOM3 = 9

Contiene el canal de color personalizado 3. PackedByteArray si (format >> Mesh.ARRAY_FORMAT_CUSTOM3_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK es ARRAY_CUSTOM_RGBA8_UNORM, ARRAY_CUSTOM_RGBA8_SNORM, ARRAY_CUSTOM_RG_HALF, o ARRAY_CUSTOM_RGBA_HALF. PackedFloat32Array en caso contrario.

ArrayType ARRAY_BONES = 10

PackedFloat32Array o PackedInt32Array de índices de hueso. Contiene 4 u 8 números por vértice dependiendo de la presencia de la bandera ARRAY_FLAG_USE_8_BONE_WEIGHTS.

ArrayType ARRAY_WEIGHTS = 11

PackedFloat32Array o PackedFloat64Array de pesos de hueso en el rango 0.0 a 1.0 (inclusivo). Contiene 4 u 8 números por vértice dependiendo de la presencia de la bandera ARRAY_FLAG_USE_8_BONE_WEIGHTS.

ArrayType ARRAY_INDEX = 12

PackedInt32Array of integers used as indices referencing vertices, colors, normals, tangents, and textures. All of those arrays must have the same number of elements as the vertex array. No index can be beyond the vertex array size. When this index array is present, it puts the function into "index mode," where the index selects the i'th vertex, normal, tangent, color, UV, etc. This means if you want to have different normals or colors along an edge, you have to duplicate the vertices.

For triangles, the index array is interpreted as triples, referring to the vertices of each triangle. For lines, the index array is in pairs indicating the start and end of each line.

ArrayType ARRAY_MAX = 13

Representa el tamaño del enum ArrayType.


enum ArrayCustomFormat: 🔗

ArrayCustomFormat ARRAY_CUSTOM_RGBA8_UNORM = 0

Indica que este canal personalizado contiene colores de bytes normalizados sin signo de 0 a 1, codificados como PackedByteArray.

ArrayCustomFormat ARRAY_CUSTOM_RGBA8_SNORM = 1

Indica que este canal personalizado contiene colores de bytes normalizados con signo de -1 a 1, codificados como PackedByteArray.

ArrayCustomFormat ARRAY_CUSTOM_RG_HALF = 2

Indica que este canal personalizado contiene colores de punto flotante de media precisión, codificados como PackedByteArray. Solo se utilizan los canales rojo y verde.

ArrayCustomFormat ARRAY_CUSTOM_RGBA_HALF = 3

Indica que este canal personalizado contiene colores de punto flotante de media precisión, codificados como PackedByteArray.

ArrayCustomFormat ARRAY_CUSTOM_R_FLOAT = 4

Indica que este canal personalizado contiene colores de punto flotante completo, en un PackedFloat32Array. Solo se utiliza el canal rojo.

ArrayCustomFormat ARRAY_CUSTOM_RG_FLOAT = 5

Indica que este canal personalizado contiene colores de punto flotante completo, en un PackedFloat32Array. Solo se utilizan los canales rojo y verde.

ArrayCustomFormat ARRAY_CUSTOM_RGB_FLOAT = 6

Indica que este canal personalizado contiene colores de punto flotante completo, en un PackedFloat32Array. Solo se utilizan los canales rojo, verde y azul.

ArrayCustomFormat ARRAY_CUSTOM_RGBA_FLOAT = 7

Indica que este canal personalizado contiene colores de punto flotante completo, en un PackedFloat32Array.

ArrayCustomFormat ARRAY_CUSTOM_MAX = 8

Representa el tamaño del enum ArrayCustomFormat.


flags ArrayFormat: 🔗

ArrayFormat ARRAY_FORMAT_VERTEX = 1

El array de malla contiene vértices. Todas las mallas requieren un array de vértices, así que esto siempre debe estar presente.

ArrayFormat ARRAY_FORMAT_NORMAL = 2

El array de malla contiene normales.

ArrayFormat ARRAY_FORMAT_TANGENT = 4

El array de malla contiene tangentes.

ArrayFormat ARRAY_FORMAT_COLOR = 8

El array de malla contiene colores.

ArrayFormat ARRAY_FORMAT_TEX_UV = 16

El array de malla contiene UVs.

ArrayFormat ARRAY_FORMAT_TEX_UV2 = 32

El array de malla contiene un segundo UV.

ArrayFormat ARRAY_FORMAT_CUSTOM0 = 64

El array de malla contiene el índice de canal personalizado 0.

ArrayFormat ARRAY_FORMAT_CUSTOM1 = 128

El array de malla contiene el índice de canal personalizado 1.

ArrayFormat ARRAY_FORMAT_CUSTOM2 = 256

El array de malla contiene el índice de canal personalizado 2.

ArrayFormat ARRAY_FORMAT_CUSTOM3 = 512

El array de malla contiene el índice de canal personalizado 3.

ArrayFormat ARRAY_FORMAT_BONES = 1024

El array de malla contiene huesos.

ArrayFormat ARRAY_FORMAT_WEIGHTS = 2048

El array de malla contiene pesos de huesos.

ArrayFormat ARRAY_FORMAT_INDEX = 4096

El array de malla usa índices.

ArrayFormat ARRAY_FORMAT_BLEND_SHAPE_MASK = 7

Máscara de los canales de malla permitidos en las blendshapes.

ArrayFormat ARRAY_FORMAT_CUSTOM_BASE = 13

Desplazamiento del primer canal personalizado.

ArrayFormat ARRAY_FORMAT_CUSTOM_BITS = 3

Número de bits de formato por canal personalizado. Véase ArrayCustomFormat.

ArrayFormat ARRAY_FORMAT_CUSTOM0_SHIFT = 13

Cantidad a desplazar ArrayCustomFormat para el índice de canal personalizado 0.

ArrayFormat ARRAY_FORMAT_CUSTOM1_SHIFT = 16

Cantidad a desplazar ArrayCustomFormat para el índice de canal personalizado 1.

ArrayFormat ARRAY_FORMAT_CUSTOM2_SHIFT = 19

Cantidad a desplazar ArrayCustomFormat para el índice de canal personalizado 2.

ArrayFormat ARRAY_FORMAT_CUSTOM3_SHIFT = 22

Cantidad a desplazar ArrayCustomFormat para el índice de canal personalizado 3.

ArrayFormat ARRAY_FORMAT_CUSTOM_MASK = 7

Máscara de bits de formato personalizado por canal personalizado. Debe ser desplazado por una de las constantes SHIFT. Véase ArrayCustomFormat.

ArrayFormat ARRAY_COMPRESS_FLAGS_BASE = 25

Desplazamiento de la primera bandera de compresión. Las banderas de compresión deben pasarse a ArrayMesh.add_surface_from_arrays() y SurfaceTool.commit().

ArrayFormat ARRAY_FLAG_USE_2D_VERTICES = 33554432

Flag usada para marcar que el array contiene vértices 2D.

ArrayFormat ARRAY_FLAG_USE_DYNAMIC_UPDATE = 67108864

Bandera utilizada para marcar que los datos de la malla usarán GL_DYNAMIC_DRAW en GLES. No se utiliza en Vulkan.

ArrayFormat ARRAY_FLAG_USE_8_BONE_WEIGHTS = 134217728

Bandera utilizada para marcar que la malla contiene hasta 8 influencias de hueso por vértice. Esta bandera indica que los elementos ARRAY_BONES y ARRAY_WEIGHTS tendrán el doble de longitud.

ArrayFormat ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY = 268435456

Bandera utilizada para marcar que la malla no contiene intencionalmente ningún array de vértices.

ArrayFormat ARRAY_FLAG_COMPRESS_ATTRIBUTES = 536870912

Bandera utilizada para marcar que una malla está utilizando atributos comprimidos (vértices, normales, tangentes, UVs). Cuando esta forma de compresión está habilitada, las posiciones de los vértices se empaquetarán en un atributo RGBA16UNORM y se escalarán en el sombreador de vértices. La normal y la tangente se empaquetarán en un RG16UNORM representando un eje, y un float de 16 bits almacenado en el canal A del vértice. Los UVs utilizarán floats normalizados de 16 bits en lugar de floats completos de 32 bits con signo. Cuando utilices este modo de compresión debes usar vértices, normales y tangentes o solo vértices. No puedes usar normales sin tangentes. Los importadores habilitarán automáticamente esta compresión si pueden.


enum BlendShapeMode: 🔗

BlendShapeMode BLEND_SHAPE_MODE_NORMALIZED = 0

Las formas de la mezcla se normalizan.

BlendShapeMode BLEND_SHAPE_MODE_RELATIVE = 1

Las formas de la mezcla son relativas al peso base.


Descripciones de Propiedades

Vector2i lightmap_size_hint = Vector2i(0, 0) 🔗

  • void set_lightmap_size_hint(value: Vector2i)

  • Vector2i get_lightmap_size_hint()

Sets a hint to be used for lightmap resolution.


Descripciones de Métodos

AABB _get_aabb() virtual required const 🔗

Método virtual para sobrescribir el AABB para una clase personalizada que extiende Mesh.


int _get_blend_shape_count() virtual required const 🔗

Método virtual para sobrescribir el número de blendshapes para una clase personalizada que extiende Mesh.


StringName _get_blend_shape_name(index: int) virtual required const 🔗

Método virtual para sobrescribir la recuperación de nombres de blendshapes para una clase personalizada que extiende Mesh.


int _get_surface_count() virtual required const 🔗

Método virtual para sobrescribir el recuento de superficies para una clase personalizada que extiende Mesh.


void _set_blend_shape_name(index: int, name: StringName) virtual required 🔗

Método virtual para sobrescribir los nombres de los blendshapes para una clase personalizada que extiende Mesh.


int _surface_get_array_index_len(index: int) virtual required const 🔗

Método virtual para sobrescribir la longitud del array de índices de superficie para una clase personalizada que extiende Mesh.


int _surface_get_array_len(index: int) virtual required const 🔗

Método virtual para sobrescribir la longitud del array de superficie para una clase personalizada que extiende Mesh.


Array _surface_get_arrays(index: int) virtual required const 🔗

Método virtual para sobrescribir los arrays de superficie para una clase personalizada que extiende Mesh.


Array[Array] _surface_get_blend_shape_arrays(index: int) virtual required const 🔗

Método virtual para sobrescribir los arrays de blend shape para una clase personalizada que extiende Mesh.


int _surface_get_format(index: int) virtual required const 🔗

Método virtual para sobrescribir el formato de superficie para una clase personalizada que extiende Mesh.


Dictionary _surface_get_lods(index: int) virtual required const 🔗

Método virtual para sobrescribir los LODs de superficie para una clase personalizada que extiende Mesh.


Material _surface_get_material(index: int) virtual required const 🔗

Método virtual para sobrescribir el material de superficie para una clase personalizada que extiende Mesh.


int _surface_get_primitive_type(index: int) virtual required const 🔗

Método virtual para sobrescribir el tipo de primitiva de superficie para una clase personalizada que extiende Mesh.


void _surface_set_material(index: int, material: Material) virtual required 🔗

Método virtual para sobrescribir la configuración de un material en el index dado para una clase personalizada que extiende Mesh.


ConvexPolygonShape3D create_convex_shape(clean: bool = true, simplify: bool = false) const 🔗

Calcula un ConvexPolygonShape3D a partir de la malla.

Si clean es true (por defecto), los vértices duplicados e interiores se eliminan automáticamente. Puedes establecerlo en false para que el proceso sea más rápido si no es necesario.

Si simplify es true, la geometría puede simplificarse aún más para reducir el número de vértices. Desactivado por defecto.


Mesh create_outline(margin: float) const 🔗

Calcular una malla de contorno en un desplazamiento definido (margen) de la malla original.

Nota: Este método típicamente devuelve los vértices en orden inverso (por ejemplo, de derecha a izquierda).


Resource create_placeholder() const 🔗

Crea una versión de marcador de posición de este recurso (PlaceholderMesh).


ConcavePolygonShape3D create_trimesh_shape() const 🔗

Calcula un ConcavePolygonShape3D a partir de la malla.


TriangleMesh generate_triangle_mesh() const 🔗

Genera un TriangleMesh a partir de la malla. Considera sólo las superficies que utilizan uno de estos tipos de primitivas: PRIMITIVE_TRIANGLES, PRIMITIVE_TRIANGLE_STRIP.


AABB get_aabb() const 🔗

Devuelve el AABB más pequeño que encierra esta malla en el espacio local. No se ve afectado por custom_aabb.

Nota: Esto sólo está implementado para ArrayMesh y PrimitiveMesh.


PackedVector3Array get_faces() const 🔗

Devuelve todos los vértices que forman las caras de la malla. Cada tres vértices representan un triángulo.


int get_surface_count() const 🔗

Devuelve el número de superficies que contiene la Mesh. Esto es equivalente a MeshInstance3D.get_surface_override_material_count().


Array surface_get_arrays(surf_idx: int) const 🔗

Devuelve los arrays para los vértices, normales, UVs, etc. que conforman la superficie solicitada (véase ArrayMesh.add_surface_from_arrays()).


Array[Array] surface_get_blend_shape_arrays(surf_idx: int) const 🔗

Devuelve los arrays de formas de mezcla para la superficie solicitada.


Material surface_get_material(surf_idx: int) const 🔗

Devuelve un Material en una superficie dada. La superficie se renderiza usando este material.

Nota: Esto devuelve el material dentro del recurso Mesh, no el Material asociado a las propiedades de Surface Material Override de MeshInstance3D. Para obtener el Material asociado a las propiedades de Surface Material Override de MeshInstance3D, usa MeshInstance3D.get_surface_override_material() en su lugar.


void surface_set_material(surf_idx: int, material: Material) 🔗

Establece un Material para una superficie dada. La superficie se renderizará usando este material.

Nota: Esto asigna el material dentro del recurso Mesh, no el Material asociado a las propiedades de Surface Material Override de MeshInstance3D. Para establecer el Material asociado a las propiedades de Surface Material Override de MeshInstance3D, usa MeshInstance3D.set_surface_override_material() en su lugar.