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.
Checking the stable version of the documentation...
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à
|
Metodi
_get_aabb() virtual required const |
|
_get_blend_shape_count() virtual required const |
|
_get_blend_shape_name(index: int) virtual required const |
|
_get_surface_count() virtual required const |
|
void |
_set_blend_shape_name(index: int, name: StringName) virtual required |
_surface_get_array_index_len(index: int) virtual required const |
|
_surface_get_array_len(index: int) virtual required const |
|
_surface_get_arrays(index: int) virtual required const |
|
_surface_get_blend_shape_arrays(index: int) virtual required const |
|
_surface_get_format(index: int) virtual required const |
|
_surface_get_lods(index: int) virtual required const |
|
_surface_get_material(index: int) virtual required const |
|
_surface_get_primitive_type(index: int) virtual required const |
|
void |
_surface_set_material(index: int, material: Material) virtual required |
create_convex_shape(clean: bool = true, simplify: bool = false) const |
|
create_outline(margin: float) const |
|
create_placeholder() const |
|
create_trimesh_shape() const |
|
generate_triangle_mesh() const |
|
get_aabb() const |
|
get_faces() const |
|
get_surface_count() const |
|
surface_get_arrays(surf_idx: int) const |
|
surface_get_blend_shape_arrays(surf_idx: int) const |
|
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) 🔗
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.
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().