ImporterMesh

Успадковує: Resource < RefCounted < Object

Resource, що містить геометрію на основі вертексу в процесі імпорту.

Опис

Імпортер Сітка є типом Resource аналогом ArrayMesh. Він містить геометрію на основі вертексу, *розділену на * Кожна поверхня містить повністю окремий масив і матеріал, який використовується для його малювання. Дизайн мудрий, сітка з декількома поверхнями краще для однієї поверхні, тому що об'єкти, створені в 3D програмному забезпеченні, зазвичай містять кілька матеріалів.

На відміну від його аналога runtime, ImporterMesh містить дані сітки перед різними кроками імпорту, такими як lod і Shadow Mesh, що утворюються. Перевірити дані поверхні за допомогою виклику 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)

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)

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)


Описи методів

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. Кожен запис у словнику представляє рівень LOD поверхні, де значенням є масив Mesh.ARRAY_INDEX для використання рівня LOD, а ключ приблизно пропорційний відстані, на якій використовується статистика LOD. Тобто збільшення ключа LOD також збільшує відстань, на якій об’єкти повинні бути від камери до використання LOD.

Аргумент 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.


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

Генерує всі lods для цього ImporterMesh.

normal_merge_angle у градусах і використовується так само, як налаштування імпортера в lods.

normal_split_angle не використовується і залишається лише для сумісності зі старішими версіями API.

Доступ до кількості згенерованих lods можна отримати за допомогою get_surface_lod_count(), і кожен LOD доступний у 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 🔗

Повертає розмір натяка цієї сітки для Lightmap-unwrapping в УФ-просторі.


ArrayMesh get_mesh(base_mesh: ArrayMesh = null) 🔗

Повертаємо дані сітки, що представлені цими ImporterMesh, як можна використовувати ArrayMesh.

Цей метод кешує зворотну сіточку, а наступні дзвінки повернеться до тих пір, поки не називається clear().

Якщо ще не передбачено кешування та base_mesh, буде використовуватися base_mesh і мутований.


Array get_surface_arrays(surface_idx: int) const 🔗

Повертає масиви для вершин, нормалей, УФів і т.д., які складають необхідну поверхню. Див. 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 🔗

Повертаємо кількість подів, що сітка тримається на даній поверхні.


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 🔗

Повертаємо 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) 🔗

Встановлює розмір натяка цієї сітки для Lightmap-unwrapping в УФ-просторі.


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

Настроювання Material для даної поверхні. Поверхня буде надано за допомогою цього матеріалу.


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

Задає назву для заданої поверхні.