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().