ArrayMesh
Успадковує: Mesh < Resource < RefCounted < Object
Тип Mesh, який надає утиліту для побудови поверхні з масивів.
Опис
ArrayMesh використовується для створення Mesh шляхом визначення таких атрибутів, як масиви.
Найпростішим прикладом є створення одного трикутника:
var vertices = PackedVector3Array()
vertices.push_back(Vector3(0, 1, 0))
vertices.push_back(Vector3(1, 0, 0))
vertices.push_back(Vector3(0, 0, 1))
# Ініціалізація Масивів Мешу.
var arr_mesh = ArrayMesh.new()
var arrays = []
arrays.resize(Mesh.ARRAY_MAX)
arrays[Mesh.ARRAY_VERTEX] = vertices
# Створення Мешу.
arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)
var m = MeshInstance3D.new()
m.mesh = arr_mesh
var vertices = new Vector3[]
{
new Vector3(0, 1, 0),
new Vector3(1, 0, 0),
new Vector3(0, 0, 1),
};
// Initialize the ArrayMesh.
var arrMesh = new ArrayMesh();
var arrays = new Godot.Collections.Array();
arrays.Resize((int)Mesh.ArrayType.Max);
arrays[(int)Mesh.ArrayType.Vertex] = vertices;
// Create the Mesh.
arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);
var m = new MeshInstance3D();
m.Mesh = arrMesh;
MeshInstance3D готовий до додавання до SceneTree.
Дивіться також ImmediateMesh, MeshDataTool і SurfaceTool для генерації процедурної геометрії.
Примітка: Godot використовує порядок намотування за годинниковою стрілкою для передніх граней примітивів трикутників.
Посібники
Властивості
|
||
|
||
Методи
Описи властивостей
BlendShapeMode blend_shape_mode = 1 🔗
void set_blend_shape_mode(value: BlendShapeMode)
BlendShapeMode get_blend_shape_mode()
Режим накладання фігур.
AABB custom_aabb = AABB(0, 0, 0, 0, 0, 0) 🔗
Замінює AABB на один, визначений користувачем для використання з вибракуванням усеченої точки. Особливо корисно, щоб уникнути несподіваного відсікання під час використання шейдера для зміщення вершин.
Додаткова сітка, яку можна використовувати для візуалізації тіней і попереднього проходу глибини. Можна використовувати для підвищення продуктивності шляхом надання сітки з об’єднаними вершинами та лише даними про положення вершин (без нормалей, UV, кольорів тощо).
Примітка: ця сітка повинна мати точно такі ж позиції вершин, як і вихідна сітка (включаючи LOD вихідної сіті, якщо вони є). Якщо положення вершин відрізняються, сітка не буде намальована правильно.
Описи методів
void add_blend_shape(name: StringName) 🔗
Додає назву для форми змішування, яку буде додано за допомогою add_surface_from_arrays(). Має викликатися перед додаванням поверхні.
void add_surface_from_arrays(primitive: PrimitiveType, arrays: Array, blend_shapes: Array[Array] = [], lods: Dictionary = {}, flags: BitField[ArrayFormat] = 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_blend_shapes() 🔗
Видаляє всі форми змішування з цього ArrayMesh.
void clear_surfaces() 🔗
Видаляє всі поверхні з цього ArrayMesh.
int get_blend_shape_count() const 🔗
Повертає кількість форм змішування, які містить ArrayMesh.
StringName get_blend_shape_name(index: int) const 🔗
Повертає назву форми змішування за цим індексом.
Error lightmap_unwrap(transform: Transform3D, texel_size: float) 🔗
Виконує ультрафіолетове розгортання ArrayMesh, щоб підготувати сітку до світлового відображення.
void regen_normal_maps() 🔗
Повторно генерує дотичні для кожної поверхні ArrayMesh.
void set_blend_shape_name(index: int, name: StringName) 🔗
Встановлює назву форми змішування за цим індексом.
int surface_find_by_name(name: String) const 🔗
Повертає індекс першої поверхні з такою назвою у цьому ArrayMesh. Якщо не знайдено жодної, повертається -1.
int surface_get_array_index_len(surf_idx: int) const 🔗
Повертає довжину в індексах масиву індексів у запитуваній поверхні (див. add_surface_from_arrays()).
int surface_get_array_len(surf_idx: int) const 🔗
Повертає довжину у вершинах масиву вершин запитуваної поверхні (див. add_surface_from_arrays()).
BitField[ArrayFormat] surface_get_format(surf_idx: int) const 🔗
Повертає маску формату запитуваної поверхні (див. add_surface_from_arrays()).
String surface_get_name(surf_idx: int) const 🔗
Отримує назву, призначену цій поверхні.
PrimitiveType surface_get_primitive_type(surf_idx: int) const 🔗
Повертає тип примітиву запитуваної поверхні (див. add_surface_from_arrays()).
void surface_remove(surf_idx: int) 🔗
Видаляє поверхню з заданим індексом із сітки, зміщуючи поверхні з вищим індексом на одиницю вниз.
void surface_set_name(surf_idx: int, name: String) 🔗
Задає назву для заданої поверхні.
void surface_update_attribute_region(surf_idx: int, offset: int, data: PackedByteArray) 🔗
There is currently no description for this method. Please help us by contributing one!
void surface_update_skin_region(surf_idx: int, offset: int, data: PackedByteArray) 🔗
There is currently no description for this method. Please help us by contributing one!
void surface_update_vertex_region(surf_idx: int, offset: int, data: PackedByteArray) 🔗
There is currently no description for this method. Please help us by contributing one!