Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Mesh

Eredita: Resource < RefCounted < Object

Ereditato da: ArrayMesh, ImmediateMesh, PlaceholderMesh, PrimitiveMesh

Una Resource che contiene una geometria basata su array di vertici.

Descrizione

La mesh è un tipo di Resource che contiene una geometria basata su array di vertici, divisa in superfici. Ogni superficie contiene un array completamente separato e un materiale utilizzato per disegnarlo. In termini di design, una mesh con più superfici è preferita a una singola superficie, perché gli oggetti creati nel software di editing 3D contengono spesso più materiali. Il numero massimo di superfici per mesh è RenderingServer.MAX_MESH_SURFACES.

Tutorial

Proprietà

Vector2i

lightmap_size_hint

Vector2i(0, 0)

Metodi

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)


Enumerazioni

enum PrimitiveType: 🔗

PrimitiveType PRIMITIVE_POINTS = 0

Renderizza l'array come punti (un vertice equivale a un punto).

PrimitiveType PRIMITIVE_LINES = 1

Renderizza l'array come linee (ogni due vertici viene creata una linea).

PrimitiveType PRIMITIVE_LINE_STRIP = 2

Renderizza l'array come una striscia di linee.

PrimitiveType PRIMITIVE_TRIANGLES = 3

Renderizza l'array come triangoli (ogni tre vertici viene creato un triangolo).

PrimitiveType PRIMITIVE_TRIANGLE_STRIP = 4

Renderizza l'array come strisce di triangoli.


enum ArrayType: 🔗

ArrayType ARRAY_VERTEX = 0

Un PackedVector3Array, PackedVector2Array o Array contenente le posizioni dei vertici.

ArrayType ARRAY_NORMAL = 1

PackedVector3Array di normali dei vertici.

Nota: L'array deve essere costituito da vettori normali, altrimenti saranno normalizzati dal motore, causando eventuali discrepanze visive.

ArrayType ARRAY_TANGENT = 2

PackedFloat32Array di tangenti di vertici. Ogni elemento in gruppi di 4 float, i primi 3 float determinano la tangente e l'ultimo la direzione binormale come -1 o 1.

ArrayType ARRAY_COLOR = 3

PackedColorArray dei colori dei vertici.

ArrayType ARRAY_TEX_UV = 4

PackedVector2Array per le coordinate UV.

ArrayType ARRAY_TEX_UV2 = 5

PackedVector2Array per le coordinate UV secondarie.

ArrayType ARRAY_CUSTOM0 = 6

Contiene il canale colore personalizzato 0. È un PackedByteArray se (format >> Mesh.ARRAY_FORMAT_CUSTOM0_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK è ARRAY_CUSTOM_RGBA8_UNORM, ARRAY_CUSTOM_RGBA8_SNORM, ARRAY_CUSTOM_RG_HALF o ARRAY_CUSTOM_RGBA_HALF. Altrimenti è un PackedFloat32Array.

ArrayType ARRAY_CUSTOM1 = 7

Contiene il canale colore personalizzato 1. È un PackedByteArray se (format >> Mesh.ARRAY_FORMAT_CUSTOM1_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK è ARRAY_CUSTOM_RGBA8_UNORM, ARRAY_CUSTOM_RGBA8_SNORM, ARRAY_CUSTOM_RG_HALF o ARRAY_CUSTOM_RGBA_HALF. Altrimenti è un PackedFloat32Array.

ArrayType ARRAY_CUSTOM2 = 8

Contiene il canale colore personalizzato 2. È un PackedByteArray se (format >> Mesh.ARRAY_FORMAT_CUSTOM2_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK è ARRAY_CUSTOM_RGBA8_UNORM, ARRAY_CUSTOM_RGBA8_SNORM, ARRAY_CUSTOM_RG_HALF o ARRAY_CUSTOM_RGBA_HALF. Altrimenti è un PackedFloat32Array.

ArrayType ARRAY_CUSTOM3 = 9

Contiene il canale colore personalizzato 3. È un PackedByteArray se (format >> Mesh.ARRAY_FORMAT_CUSTOM3_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK è ARRAY_CUSTOM_RGBA8_UNORM, ARRAY_CUSTOM_RGBA8_SNORM, ARRAY_CUSTOM_RG_HALF o ARRAY_CUSTOM_RGBA_HALF. Altrimenti è un PackedFloat32Array.

ArrayType ARRAY_BONES = 10

PackedFloat32Array o PackedInt32Array degli indici delle ossa. Contiene 4 o 8 numeri per vertice a seconda della presenza del flag ARRAY_FLAG_USE_8_BONE_WEIGHTS.

ArrayType ARRAY_WEIGHTS = 11

PackedFloat32Array o PackedFloat64Array di pesi delle ossa nell'intervallo 0.0 a 1.0 (inclusi). Contiene 4 o 8 numeri per vertice a seconda della presenza del flag ARRAY_FLAG_USE_8_BONE_WEIGHTS.

ArrayType ARRAY_INDEX = 12

PackedInt32Array di numeri interi usati come indici che fanno riferimento a vertici, colori, normali, tangenti e texture. Tutti questi array devono avere lo stesso numero di elementi dell'array dei vertici. Nessun indice può superare la dimensione dell'array dei vertici. Quando questo array di indici è presente, mette la funzione in "modalità indice", dove l'indice seleziona il i-esimo vertice, normale, tangente, colore, UV, ecc. Ciò significa che se si desidera avere normali o colori diversi lungo un bordo, è necessario duplicare i vertici.

Per i triangoli, l'array di indici viene interpretato come triple, che fanno riferimento ai vertici di ciascun triangolo. Per le linee, l'array di indici è in coppie che indicano l'inizio e la fine di ciascuna linea.

ArrayType ARRAY_MAX = 13

Rappresenta la dimensione dell'enumerazione ArrayType.


enum ArrayCustomFormat: 🔗

ArrayCustomFormat ARRAY_CUSTOM_RGBA8_UNORM = 0

Indica che questo canale personalizzato contiene byte di colori normalizzati senza segno da 0 a 1, codificati come PackedByteArray.

ArrayCustomFormat ARRAY_CUSTOM_RGBA8_SNORM = 1

Indica che questo canale personalizzato contiene byte di colori normalizzati con segno da 0 a 1, codificati come PackedByteArray.

ArrayCustomFormat ARRAY_CUSTOM_RG_HALF = 2

Indica che questo canale personalizzato contiene colori in virgola mobile a mezza precisione, codificati come PackedByteArray. Sono utilizzati solo i canali rosso e verde.

ArrayCustomFormat ARRAY_CUSTOM_RGBA_HALF = 3

Indica che questo canale personalizzato contiene colori in virgola mobile a mezza precisione, codificati come PackedByteArray.

ArrayCustomFormat ARRAY_CUSTOM_R_FLOAT = 4

Indica che questo canale personalizzato contiene colori in virgola mobile completi, codificati come PackedFloat32Array. Solo il canale rosso è utilizzato.

ArrayCustomFormat ARRAY_CUSTOM_RG_FLOAT = 5

Indica che questo canale personalizzato contiene colori in virgola mobile completi, codificati come PackedFloat32Array. Sono utilizzati solo i canali rosso e verde.

ArrayCustomFormat ARRAY_CUSTOM_RGB_FLOAT = 6

Indica che questo canale personalizzato contiene colori in virgola mobile completi, codificati come PackedFloat32Array. Sono utilizzati solo i canali rosso, verde e blu.

ArrayCustomFormat ARRAY_CUSTOM_RGBA_FLOAT = 7

Indica che questo canale personalizzato contiene colori in virgola mobile completi, codificati come PackedFloat32Array.

ArrayCustomFormat ARRAY_CUSTOM_MAX = 8

Rappresenta la dimensione dell'enumerazione ArrayCustomFormat.


flags ArrayFormat: 🔗

ArrayFormat ARRAY_FORMAT_VERTEX = 1

L'array della mesh contiene vertici. Tutte le mesh richiedono un array di vertici, quindi questo dovrebbe essere sempre presente.

ArrayFormat ARRAY_FORMAT_NORMAL = 2

L'array della mesh contiene le normali.

ArrayFormat ARRAY_FORMAT_TANGENT = 4

L'array della mesh contiene le tangenti.

ArrayFormat ARRAY_FORMAT_COLOR = 8

L'array della mesh contiene i colori.

ArrayFormat ARRAY_FORMAT_TEX_UV = 16

L'array della mesh contiene gli UV.

ArrayFormat ARRAY_FORMAT_TEX_UV2 = 32

L'array della mesh contiene gli UV secondari.

ArrayFormat ARRAY_FORMAT_CUSTOM0 = 64

L'array della mesh contiene il canale personalizzato di indice 0.

ArrayFormat ARRAY_FORMAT_CUSTOM1 = 128

L'array della mesh contiene il canale personalizzato di indice 1.

ArrayFormat ARRAY_FORMAT_CUSTOM2 = 256

L'array della mesh contiene il canale personalizzato di indice 2.

ArrayFormat ARRAY_FORMAT_CUSTOM3 = 512

L'array della mesh contiene il canale personalizzato di indice 3.

ArrayFormat ARRAY_FORMAT_BONES = 1024

L'array della mesh contiene le ossa.

ArrayFormat ARRAY_FORMAT_WEIGHTS = 2048

L'array della mesh contiene i pesi delle ossa.

ArrayFormat ARRAY_FORMAT_INDEX = 4096

L'array della mesh utilizza gli indici.

ArrayFormat ARRAY_FORMAT_BLEND_SHAPE_MASK = 7

Maschera dei canali della mesh consentiti nelle forme di fusione.

ArrayFormat ARRAY_FORMAT_CUSTOM_BASE = 13

Spostamento del primo canale personalizzato.

ArrayFormat ARRAY_FORMAT_CUSTOM_BITS = 3

Numero di bit di formato per canale personalizzato. Vedi ArrayCustomFormat.

ArrayFormat ARRAY_FORMAT_CUSTOM0_SHIFT = 13

Quantità da spostare ArrayCustomFormat per il canale personalizzato di indice 0.

ArrayFormat ARRAY_FORMAT_CUSTOM1_SHIFT = 16

Quantità da spostare ArrayCustomFormat per il canale personalizzato di indice 1.

ArrayFormat ARRAY_FORMAT_CUSTOM2_SHIFT = 19

Quantità da spostare ArrayCustomFormat per il canale personalizzato di indice 2.

ArrayFormat ARRAY_FORMAT_CUSTOM3_SHIFT = 22

Quantità da spostare ArrayCustomFormat per il canale personalizzato di indice 3.

ArrayFormat ARRAY_FORMAT_CUSTOM_MASK = 7

Maschera di bit di formato personalizzati per canale personalizzato. Deve essere spostata da una delle costanti SHIFT. Vedi ArrayCustomFormat.

ArrayFormat ARRAY_COMPRESS_FLAGS_BASE = 25

Spostamento di bit del primo flag di compressione. I flag di compressione devono essere passati a ArrayMesh.add_surface_from_arrays() e SurfaceTool.commit().

ArrayFormat ARRAY_FLAG_USE_2D_VERTICES = 33554432

Flag usato per indicare che l'array contiene vertici 2D.

ArrayFormat ARRAY_FLAG_USE_DYNAMIC_UPDATE = 67108864

Flag usato per indicare che i dati della mesh utilizzeranno GL_DYNAMIC_DRAW su GLES. Non usato su Vulkan.

ArrayFormat ARRAY_FLAG_USE_8_BONE_WEIGHTS = 134217728

Flag usato per indicare che la mesh contiene fino a 8 influenze di ossa per vertice. Questo flag indica che gli elementi di ARRAY_BONES e di ARRAY_WEIGHTS avranno una lunghezza doppia.

ArrayFormat ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY = 268435456

Flag usato per indicare che la mesh intenzionalmente non contiene alcun array di vertici.

ArrayFormat ARRAY_FLAG_COMPRESS_ATTRIBUTES = 536870912

Flag usato per indicare che una mesh sta usando attributi compressi (vertici, normali, tangenti, UV). Quando questa forma di compressione è abilitata, le posizioni dei vertici saranno compresse in un attributo RGBA16UNORM e ridimensionate nello shader dei vertici. La normale e la tangente saranno compresse in un RG16UNORM che rappresenta un asse e un float a 16 bit memorizzato nel canale A del vertice. Gli UV utilizzeranno float normalizzati a 16 bit anziché float con segno a 32 bit completi. Quando si utilizza questa modalità di compressione, è necessario utilizzare vertici, normali e tangenti o solo vertici. Non è possibile utilizzare normali senza tangenti. Gli importatori abiliteranno automaticamente questa compressione se possibile.


enum BlendShapeMode: 🔗

BlendShapeMode BLEND_SHAPE_MODE_NORMALIZED = 0

Le forme di fusione sono normalizzate.

BlendShapeMode BLEND_SHAPE_MODE_RELATIVE = 1

Le forme di fusione sono relative al peso base.


Descrizioni delle proprietà

Vector2i lightmap_size_hint = Vector2i(0, 0) 🔗

  • void set_lightmap_size_hint(value: Vector2i)

  • Vector2i get_lightmap_size_hint()

Imposta un suggerimento da usare per la risoluzione della lightmap.


Descrizioni dei metodi

AABB _get_aabb() virtual required const 🔗

Metodo virtuale per sovrascrivere l'AABB per una classe personalizzata che estende Mesh.


int _get_blend_shape_count() virtual required const 🔗

Metodo virtuale per sovrascrivere il numero di forme di fusione per una classe personalizzata che estende Mesh.


StringName _get_blend_shape_name(index: int) virtual required const 🔗

Metodo virtuale per sovrascrivere il recupero dei nomi delle forme di fusione per una classe personalizzata che estende Mesh.


int _get_surface_count() virtual required const 🔗

Metodo virtuale per sovrascrivere il numero delle superfici per una classe personalizzata che estende Mesh.


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

Metodo virtuale per sovrascrivere i nomi delle forme di fusione per una classe personalizzata che estende Mesh.


int _surface_get_array_index_len(index: int) virtual required const 🔗

Metodo virtuale per sovrascrivere la lunghezza di un indice degli array di superfici per una classe personalizzata che estende Mesh.


int _surface_get_array_len(index: int) virtual required const 🔗

Metodo virtuale per sovrascrivere la lunghezza degli array di superfici per una classe personalizzata che estende Mesh.


Array _surface_get_arrays(index: int) virtual required const 🔗

Metodo virtuale per sovrascrivere gli array di superfici per una classe personalizzata che estende Mesh.


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

Metodo virtuale per sovrascrivere gli array di forme di fusione per una classe personalizzata che estende Mesh.


int _surface_get_format(index: int) virtual required const 🔗

Metodo virtuale per sovrascrivere il formato di superficie per una classe personalizzata che estende Mesh.


Dictionary _surface_get_lods(index: int) virtual required const 🔗

Metodo virtuale per sovrascrivere i LOD di superficie per una classe personalizzata che estende Mesh.


Material _surface_get_material(index: int) virtual required const 🔗

Metodo virtuale per sovrascrivere il materiale di superficie per una classe personalizzata che estende Mesh.


int _surface_get_primitive_type(index: int) virtual required const 🔗

Metodo virtuale per sovrascrivere il tipo di primitiva di una superficie per una classe personalizzata che estende Mesh.


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

Metodo virtuale per sovrascrivere l'impostazione di un material all'indice index per una classe personalizzata che estende Mesh.


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

Calcola un ConvexPolygonShape3D dalla mesh.

Se clean è true (predefinito), i vertici duplicati e interni sono rimossi automaticamente. Puoi impostarlo su false per rendere il processo più veloce se non necessario.

Se simplify è true, la geometria può essere ulteriormente semplificata per ridurre il numero di vertici. Disabilitato per impostazione predefinita.


Mesh create_outline(margin: float) const 🔗

Calcola una mesh di contorno a un offset (margine) definito dalla mesh originale.

Nota: Questo metodo in genere restituisce i vertici in ordine inverso (ad esempio da senso orario a senso antiorario).


Resource create_placeholder() const 🔗

Crea una versione segnaposto di questa risorsa (PlaceholderMesh).


ConcavePolygonShape3D create_trimesh_shape() const 🔗

Calcola una ConcavePolygonShape3D dalla mesh.


TriangleMesh generate_triangle_mesh() const 🔗

Genera un TriangleMesh dalla mesh. Considera solo le superfici che utilizzano uno di questi tipi primitivi: PRIMITIVE_TRIANGLES, PRIMITIVE_TRIANGLE_STRIP.


AABB get_aabb() const 🔗

Restituisce il più piccolo AABB che racchiude questa mesh in spazio locale. Non influenzato da custom_aabb.

Nota: Questo è implementato solo per ArrayMesh e PrimitiveMesh.


PackedVector3Array get_faces() const 🔗

Restituisce tutti i vertici che compongono le facce della mesh. Ogni tre vertici rappresentano un triangolo.


int get_surface_count() const 🔗

Restituisce il numero di superfici contenute nella Mesh. Equivale a MeshInstance3D.get_surface_override_material_count().


Array surface_get_arrays(surf_idx: int) const 🔗

Restituisce gli array per i vertici, normali, UV, ecc. che compongono la superficie richiesta (vedi ArrayMesh.add_surface_from_arrays()).


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

Restituisce gli array di forme di fusione per la superficie richiesta.


Material surface_get_material(surf_idx: int) const 🔗

Restituisce un Material in una data superficie. La superficie è renderizzata utilizzando questo materiale.

Nota: Questo restituisce il materiale all'interno della risorsa Mesh, non il Material associato alle proprietà di sostituzione del materiale di superficie di un MeshInstance3D. Per ottenere quelli, utilizza invece MeshInstance3D.get_surface_override_material().


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

Imposta un Material per una determinata superficie. La superficie sarà renderizzata utilizzando questo materiale.

Nota: Questo assegna il materiale all'interno della risorsa Mesh, non il Material associato alle proprietà di sostituzione del materiale di superficie di un MeshInstance3D. Per impostare quelli, utilizza invece MeshInstance3D.set_surface_override_material().