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.

ImporterMesh

Hérite de : Resource < RefCounted < Object

Une Resource qui contient une géométrie à base d'un tableau de sommets durant le processus d'import.

Description

ImporterMesh is a type of Resource analogous to ArrayMesh. It 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.

Unlike its runtime counterpart, ImporterMesh contains mesh data before various import steps, such as LOD and shadow mesh generation, have taken place. Modify surface data by calling clear(), followed by add_surface() for each surface.

Méthodes

void

add_blend_shape(name: String)

void

add_surface(primitive: PrimitiveType, arrays: Array, blend_shapes: Array[Array] = [], lods: Dictionary = {}, material: Material = null, name: String = "", flags: int = 0)

void

clear()

ImporterMesh

from_mesh(mesh: Mesh) static

void

generate_lods(normal_merge_angle: float, normal_split_angle: float, bone_transform_array: Array)

int

get_blend_shape_count() const

BlendShapeMode

get_blend_shape_mode() const

String

get_blend_shape_name(blend_shape_idx: int) const

Vector2i

get_lightmap_size_hint() const

ArrayMesh

get_mesh(base_mesh: ArrayMesh = null)

Array

get_surface_arrays(surface_idx: int) const

Array

get_surface_blend_shape_arrays(surface_idx: int, blend_shape_idx: int) const

int

get_surface_count() const

int

get_surface_format(surface_idx: int) const

int

get_surface_lod_count(surface_idx: int) const

PackedInt32Array

get_surface_lod_indices(surface_idx: int, lod_idx: int) const

float

get_surface_lod_size(surface_idx: int, lod_idx: int) const

Material

get_surface_material(surface_idx: int) const

String

get_surface_name(surface_idx: int) const

PrimitiveType

get_surface_primitive_type(surface_idx: int)

ImporterMesh

merge_importer_meshes(importer_meshes: Array[ImporterMesh], relative_transforms: Array[Transform3D], deduplicate_surfaces: bool = true) static

void

set_blend_shape_mode(mode: BlendShapeMode)

void

set_lightmap_size_hint(size: Vector2i)

void

set_surface_material(surface_idx: int, material: Material)

void

set_surface_name(surface_idx: int, name: String)


Descriptions des méthodes

void add_blend_shape(name: String) 🔗

Ajoute le nom d'une blend shape qui sera ajoutée avec add_surface(). Doit être appelée avant l'ajout de la surface.


void add_surface(primitive: PrimitiveType, arrays: Array, blend_shapes: Array[Array] = [], lods: Dictionary = {}, material: Material = null, name: String = "", flags: int = 0) 🔗

Crée une nouvelle surface. Mesh.get_surface_count() deviendra le surf_idx pour cette nouvelle surface.

Les surfaces sont créées pour être rendues en utilisant une primitive, qui peut être l'une des valeurs définies dans PrimitiveType.

L'argument arrays est un tableau de tableaux. Chacune des Mesh.ARRAY_MAX éléments contient un tableau contenant certaines données du maillage pour cette surface, comme le décrit le membre correspondant de ArrayType ou null s'il n'est pas utilisé par la surface. Par exemple, arrays[0] est le tableau des sommets. Ce premier sous-tableau de sommets est toujours nécessaire ; les autres sont optionnels. L'ajout d'un tableau d'index met cette surface en "mode index" où les sommets et les autres tableaux deviennent les sources de données et le tableau d'index définit l'ordre des sommets. Tous les sous-tableaux doivent avoir la même longueur que le tableau des sommets (ou être un multiple exact de la longueur du tableau des sommets, lorsque plusieurs éléments d'un sous-réseau correspondent à un seul sommet) ou être vides, à l'exception de Mesh.ARRAY_INDEX s'il est utilisé.

L'argument blend_shapes est un tableau de données sommet pour chaque blend shape. Chaque élément est un tableau de la même structure que arrays, mais Mesh.ARRAY_VERTEX, Mesh.ARRAY_NORMAL, et Mesh.ARRAY_TANGENT sont définis si et seulement si ils sont définis dans arrays et toutes les autres entrées sont null.

L'argument lods est un dictionnaire avec des clés float et des valeurs PackedInt32Array. Chaque entrée dans le dictionnaire représente un niveau de LOD de la surface, où la valeur est le tableau Mesh.ARRAY_INDEX à utiliser pour le niveau de LOD et la clé est grossièrement proportionnelle à la distance à laquelle les statistiques de LOD sont utilisées. Par exemple, augmenter la clé d'un LOD augmente également la distance à laquelle les objets doivent être de la caméra avant que le LOD soit utilisé.

L'argument flags est le OU par bits de, comme requis : Une valeur de ArrayCustomFormat décalée à gauche par ARRAY_FORMAT_CUSTOMn_SHIFT pour chaque canal personnalisé utilisé, Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE, Mesh.ARRAY_FLAG_USE_8_BONE_WEIGHTS, ou Mesh.ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY.

Note : Lors de l'utilisation d'indices, il est recommandé d'utiliser uniquement des points, des lignes ou des triangles.


void clear() 🔗

Retire toutes les surfaces et blend shapes de ce ImporterMesh.


ImporterMesh from_mesh(mesh: Mesh) static 🔗

Converts the given Mesh into an ImporterMesh by copying all its surfaces, blend shapes, materials, and metadata into a new ImporterMesh object.


void generate_lods(normal_merge_angle: float, normal_split_angle: float, bone_transform_array: Array) 🔗

Generates all lods for this ImporterMesh.

normal_merge_angle is in degrees and used in the same way as the importer settings in lods.

normal_split_angle is not used and only remains for compatibility with older versions of the API.

The number of generated lods can be accessed using get_surface_lod_count(), and each LOD is available in get_surface_lod_size() and get_surface_lod_indices().

bone_transform_array is an Array which can be either empty or contain Transform3Ds which, for each of the mesh's bone IDs, will apply mesh skinning when generating the LOD mesh variations. This is usually used to account for discrepancies in scale between the mesh itself and its skinning data.


int get_blend_shape_count() const 🔗

Renvoie le nombre de blend shapes que le maillage contient.


BlendShapeMode get_blend_shape_mode() const 🔗

Renvoie le mode de blend shape pour ce Mesh.


String get_blend_shape_name(blend_shape_idx: int) const 🔗

Renvoie le nom de la blend shape à cette position.


Vector2i get_lightmap_size_hint() const 🔗

Returns the size hint of this mesh for lightmap-unwrapping in UV-space.


ArrayMesh get_mesh(base_mesh: ArrayMesh = null) 🔗

Returns the mesh data represented by this ImporterMesh as a usable ArrayMesh.

This method caches the returned mesh, and subsequent calls will return the cached data until clear() is called.

If not yet cached and base_mesh is provided, base_mesh will be used and mutated.


Array get_surface_arrays(surface_idx: int) const 🔗

Renvoie les tableaux pour les sommets, les normales, les UV, etc. qui composent la surface demandée. Voir add_surface().


Array get_surface_blend_shape_arrays(surface_idx: int, blend_shape_idx: int) const 🔗

Returns a single set of blend shape arrays for the requested blend shape index for a surface.


int get_surface_count() const 🔗

Renvoie le nombre de surfaces que le maillage contient.


int get_surface_format(surface_idx: int) const 🔗

Renvoie le format de la surface que le maillage contient.


int get_surface_lod_count(surface_idx: int) const 🔗

Renvoie le nombre de lods que le maillage contient sur une surface donnée.


PackedInt32Array get_surface_lod_indices(surface_idx: int, lod_idx: int) const 🔗

Renvoie le buffer d'index d'un lod pour une surface.


float get_surface_lod_size(surface_idx: int, lod_idx: int) const 🔗

Renvoie le rapport d'écran qui active un lod pour une surface.


Material get_surface_material(surface_idx: int) const 🔗

Renvoie un Material pour une surface donnée. Le rendu de la surface est fait en utilisant ce matériau.


String get_surface_name(surface_idx: int) const 🔗

Obtient le nom assigné à cette surface.


PrimitiveType get_surface_primitive_type(surface_idx: int) 🔗

Renvoie le type de primitive de la surface demandée (voir add_surface()).


ImporterMesh merge_importer_meshes(importer_meshes: Array[ImporterMesh], relative_transforms: Array[Transform3D], deduplicate_surfaces: bool = true) static 🔗

Merges multiple ImporterMeshes into a single ImporterMesh. Each input mesh is transformed by the corresponding Transform3D in the relative_transforms array, which must be the same size as importer_meshes. Negative scales are supported, and the winding order in the mesh data will be corrected to account for this.

If deduplicate_surfaces is true and multiple meshes have surfaces with the same names and formats, the surfaces will be merged together when the meshes are merged, and will use the material from the first matching surface. This is useful for reducing the number of surfaces in the resulting mesh, and avoids duplicating materials. Surfaces with bone weights will never be deduplicated. If deduplicate_surfaces is false, the surfaces will always be kept separate, and will be given unique names.

Warning: Blend shapes and LODs are not supported and will be discarded. Do not use this function to discard blend shapes and LODs, as support for these may be added in the future.


void set_blend_shape_mode(mode: BlendShapeMode) 🔗

Définit le mode de blend shape.


void set_lightmap_size_hint(size: Vector2i) 🔗

Sets the size hint of this mesh for lightmap-unwrapping in UV-space.


void set_surface_material(surface_idx: int, material: Material) 🔗

Définit un Material pour une surface donnée. Le rendu de la surface sera faite utilisant ce matériau.


void set_surface_name(surface_idx: int, name: String) 🔗

Définit le nom donné à cette surface.