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) |
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. Кожен запис у словнику представляє рівень 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) 🔗
Задає назву для заданої поверхні.