ImporterMesh
Наследует: Resource < RefCounted < Object
Resource содержащий геометрию на основе массива вершин во время процесса импорта.
Описание
ImporterMesh — это тип Resource, аналогичный ArrayMesh. Он содержит геометрию на основе массива вершин, разделенную на поверхности. Каждая поверхность содержит полностью отдельный массив и материал, используемый для ее рисования. С точки зрения дизайна сетка с несколькими поверхностями предпочтительнее одной поверхности, поскольку объекты, созданные в программном обеспечении для редактирования 3D, обычно содержат несколько материалов.
В отличие от своего аналога во время выполнения, ImporterMesh содержит данные сетки до того, как будут выполнены различные шаги импорта, такие как генерация сетки lod и теней. Измените данные поверхности, вызвав clear(), а затем add_surface() для каждой поверхности.
Методы
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() |
void |
generate_lods(normal_merge_angle: float, normal_split_angle: float, bone_transform_array: Array) |
get_blend_shape_count() const |
|
get_blend_shape_mode() const |
|
get_blend_shape_name(blend_shape_idx: int) const |
|
get_lightmap_size_hint() const |
|
get_surface_arrays(surface_idx: int) const |
|
get_surface_blend_shape_arrays(surface_idx: int, blend_shape_idx: int) const |
|
get_surface_count() const |
|
get_surface_format(surface_idx: int) const |
|
get_surface_lod_count(surface_idx: int) const |
|
get_surface_lod_indices(surface_idx: int, lod_idx: int) const |
|
get_surface_lod_size(surface_idx: int, lod_idx: int) const |
|
get_surface_material(surface_idx: int) const |
|
get_surface_name(surface_idx: int) const |
|
get_surface_primitive_type(surface_idx: int) |
|
void |
|
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) |
Описания метода
void add_blend_shape(name: String) 🔗
Добавляет имя для формы смешивания, которая будет добавлена с помощью add_surface(). Необходимо вызвать перед добавлением поверхности.
void add_surface(primitive: PrimitiveType, arrays: Array, blend_shapes: Array[Array] = [], lods: Dictionary = {}, material: Material = null, name: String = "", flags: int = 0) 🔗
Создает новую поверхность. Mesh.get_surface_count() станет surf_idx для этой новой поверхности.
Поверхности создаются для визуализации с использованием primitive, который может быть любым из значений, определенных в PrimitiveType.
Аргумент arrays — это массив массивов. Каждый из элементов Mesh.ARRAY_MAX содержит массив с некоторыми данными сетки для этой поверхности, как описано соответствующим членом ArrayType или null, если он не используется поверхностью. Например, arrays[0] — это массив вершин. Этот первый подмассив вершин всегда обязателен; остальные необязательны. Добавление индексного массива переводит эту поверхность в «индексный режим», где вершины и другие массивы становятся источниками данных, а индексный массив определяет порядок вершин. Все подмассивы должны иметь ту же длину, что и массив вершин (или быть кратными длине массива вершин, когда несколько элементов подмассива соответствуют одной вершине) или быть пустыми, за исключением Mesh.ARRAY_INDEX, если он используется.
Аргумент blend_shapes — это массив данных вершин для каждой формы смешивания. Каждый элемент — это массив той же структуры, что и arrays, но Mesh.ARRAY_VERTEX, Mesh.ARRAY_NORMAL и Mesh.ARRAY_TANGENT устанавливаются тогда и только тогда, когда они установлены в arrays, а все остальные записи — null.
Аргумент lods — это словарь с ключами float и значениями PackedInt32Array. Каждая запись в словаре представляет уровень детализации поверхности, где значение — это массив Mesh.ARRAY_INDEX, используемый для уровня детализации, а ключ примерно пропорционален расстоянию, на котором используются характеристики детализации. То есть, увеличение ключа детализации также увеличивает расстояние, на котором объекты должны находиться от камеры, прежде чем будет использован детализация.
Аргумент flags представляет собой побитовое ИЛИ, при необходимости: одного значения ArrayCustomFormat, сдвинутого влево на ARRAY_FORMAT_CUSTOMn_SHIFT для каждого используемого пользовательского канала, Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE, Mesh.ARRAY_FLAG_USE_8_BONE_WEIGHTS или Mesh.ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY.
Примечание: При использовании индексов рекомендуется использовать только точки, линии или треугольники.
void clear() 🔗
Удаляет все поверхности и формы смешивания из этого ImporterMesh.
ImporterMesh from_mesh(mesh: Mesh) static 🔗
Преобразует заданный Mesh в ImporterMesh, копируя все её поверхности, формы смешивания, материалы и метаданные в новый объект ImporterMesh.
void generate_lods(normal_merge_angle: float, normal_split_angle: float, bone_transform_array: Array) 🔗
Генерирует все уровни детализации для этого ImporterMesh.
normal_merge_angle указывается в градусах и используется так же, как настройки импортера в lods.
normal_split_angle не используется и остается только для совместимости со старыми версиями API.
К количеству сгенерированных уровней детализации можно получить доступ с помощью get_surface_lod_count(), а каждый уровень детализации доступен в get_surface_lod_size() и get_surface_lod_indices().
bone_transform_array — это Array, который может быть как пустым, так и содержать Transform3D, которые для каждого идентификатора костей сетки будут применять скиннинг сетки при генерации вариаций сетки LOD. Обычно это используется для учета расхождений в масштабе между самой сеткой и ее данными скиннинга.
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 🔗
Возвращает подсказку о размере этой сетки для развертки карты освещения в UV-пространстве.
ArrayMesh get_mesh(base_mesh: ArrayMesh = null) 🔗
Возвращает данные сетки, представленные этим ImporterMesh, как пригодный для использования ArrayMesh.
Этот метод кэширует возвращенную сетку, и последующие вызовы будут возвращать кэшированные данные до тех пор, пока не будет вызван clear().
Если еще не кэшированы и предоставлен base_mesh, base_mesh будет использоваться и мутироваться.
Array get_surface_arrays(surface_idx: int) const 🔗
Возвращает Texture2D заданного кадра.Возвращает массивы вершин, нормалей, UV и т. д., которые составляют запрошенную поверхность. См. add_surface().
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 🔗
Возвращает количество уровней детализации (LOD), которые сетка содержит на заданной поверхности.
PackedInt32Array get_surface_lod_indices(surface_idx: int, lod_idx: int) const 🔗
Возвращает индекс буфера уровня детализации (LOD) данных для поверхности.
float get_surface_lod_size(surface_idx: int, lod_idx: int) const 🔗
Возвращает соотношение сторон экрана, которое активирует уровень детализации для поверхности.
Material get_surface_material(surface_idx: int) const 🔗
Возвращает Material в заданной поверхности. Поверхность визуализируется с использованием этого материала.
String get_surface_name(surface_idx: int) const 🔗
Получает имя, назначенное этой поверхности.
PrimitiveType get_surface_primitive_type(surface_idx: int) 🔗
Возвращает тип примитива запрошенной поверхности (см. add_surface()).
void set_blend_shape_mode(mode: BlendShapeMode) 🔗
Устанавливает режим смешивания форм.
void set_lightmap_size_hint(size: Vector2i) 🔗
Задает подсказку по размеру этой сетки для развертки карты освещения в UV-пространстве.
void set_surface_material(surface_idx: int, material: Material) 🔗
Устанавливает Material для заданной поверхности. Поверхность будет визуализироваться с использованием этого материала.
void set_surface_name(surface_idx: int, name: String) 🔗
Задает имя для данной поверхности.