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.
Checking the stable version of the documentation...
Mesh
Успадковує: Resource < RefCounted < Object
Успадковано від: ArrayMesh, ImmediateMesh, PlaceholderMesh, PrimitiveMesh
Resource, що містить геометрію на основі вертексу.
Опис
Сітка — це тип Resource, який містить геометрію на основі масиву вершин, розділену на поверхні. Кожна поверхня містить повністю окремий масив і матеріал, який використовується для її малювання. Що стосується дизайну, сітка з кількома поверхнями є кращою, ніж одна поверхня, оскільки об’єкти, створені в програмному забезпеченні для редагування 3D, зазвичай містять кілька матеріалів. Максимальна кількість поверхонь на сітку становить RenderingServer.MAX_MESH_SURFACES.
Посібники
Властивості
Vector2i |
|
Методи
_get_aabb() virtual required const |
|
_get_blend_shape_count() virtual required const |
|
StringName |
_get_blend_shape_name(index: int) virtual required const |
_get_surface_count() virtual required const |
|
void |
_set_blend_shape_name(index: int, name: StringName) virtual required |
_surface_get_array_index_len(index: int) virtual required const |
|
_surface_get_array_len(index: int) virtual required const |
|
_surface_get_arrays(index: int) virtual required const |
|
_surface_get_blend_shape_arrays(index: int) virtual required const |
|
_surface_get_format(index: int) virtual required const |
|
_surface_get_lods(index: int) virtual required const |
|
_surface_get_material(index: int) virtual required const |
|
_surface_get_primitive_type(index: int) virtual required const |
|
void |
_surface_set_material(index: int, material: Material) virtual required |
create_convex_shape(clean: bool = true, simplify: bool = false) const |
|
create_outline(margin: float) const |
|
Resource |
create_placeholder() const |
create_trimesh_shape() const |
|
TriangleMesh |
generate_triangle_mesh() const |
get_aabb() const |
|
PackedVector3Array |
get_faces() const |
get_surface_count() const |
|
surface_get_arrays(surf_idx: int) const |
|
surface_get_blend_shape_arrays(surf_idx: int) const |
|
surface_get_material(surf_idx: int) const |
|
void |
surface_set_material(surf_idx: int, material: Material) |
Переліки
enum PrimitiveType: 🔗
PrimitiveType PRIMITIVE_POINTS = 0
Рендерний масив як точки (одна вершина дорівнює одній точці).
PrimitiveType PRIMITIVE_LINES = 1
Рендерний масив як лінії (все два вершини створюється лінія).
PrimitiveType PRIMITIVE_LINE_STRIP = 2
Рендерний масив як смуга лінії.
PrimitiveType PRIMITIVE_TRIANGLES = 3
Рендерний масив як трикутники (все три вершини створюється трикутник).
PrimitiveType PRIMITIVE_TRIANGLE_STRIP = 4
Рендерний масив як трикутник смуги.
enum ArrayType: 🔗
ArrayType ARRAY_VERTEX = 0
PackedVector3Array, PackedVector2Array, або Array позицій вершини.
ArrayType ARRAY_NORMAL = 1
PackedVector3Array нормалів вершини.
Примітка: масив повинен складатися з нормальних векторів, інакше вони будуть нормалізовані двигуном, потенційно викликаючи візуальні недоліки.
ArrayType ARRAY_TANGENT = 2
PackedFloat32Array з тангенсів вершини. Кожен елемент у групах 4 плавок, перші 3 плавань визначають тангенс, а останній двонормальний напрямок -1 або 1.
ArrayType ARRAY_COLOR = 3
PackedColorArray квітів вершини.
ArrayType ARRAY_TEX_UV = 4
PackedVector2Array для УФ-координат.
ArrayType ARRAY_TEX_UV2 = 5
PackedVector2Array для координат другого УФ.
ArrayType ARRAY_CUSTOM0 = 6
Містить користувальницький кольоровий канал `` (формат >> Mesh.ARRAY_FORMAT_CUSTOM0_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK`` ARRAY_CUSTOM_RGBA8_UNORM, ARRAY_CUSTOM_RGBA8_SNORM, ARRAY_CUSTOM_RG_HALF, або ARRAY_CUSTOM_RGBA_HALF. PackedFloat32Array.
ArrayType ARRAY_CUSTOM1 = 7
Містить користувальницький кольоровий канал 1. PackedByteArray якщо `` (формат >> Mesh.ARRAY_FORMAT_CUSTOM1_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK`` ARRAY_CUSTOM_RGBA8_UNORM, ARRAY_CUSTOM_RGBA8_SNORM, ARRAY_CUSTOM_RG_HALF, або ARRAY_CUSTOM_RGBA_HALF. PackedFloat32Array.
ArrayType ARRAY_CUSTOM2 = 8
Містить користувальницький кольоровий канал 2. PackedByteArray якщо `` (формат >> Mesh.ARRAY_FORMAT_CUSTOM2_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK`` ARRAY_CUSTOM_RGBA8_UNORM, ARRAY_CUSTOM_RGBA8_SNORM, ARRAY_CUSTOM_RG_HALF, або ARRAY_CUSTOM_RGBA_HALF. PackedFloat32Array.
ArrayType ARRAY_CUSTOM3 = 9
Містить користувальницький кольоровий канал 3. PackedByteArray якщо `` (формат >> Mesh.ARRAY_FORMAT_CUSTOM3_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK`` ARRAY_CUSTOM_RGBA8_UNORM, ARRAY_CUSTOM_RGBA8_SNORM, ARRAY_CUSTOM_RG_HALF, або ARRAY_CUSTOM_RGBA_HALF. PackedFloat32Array.
ArrayType ARRAY_BONES = 10
PackedFloat32Array або PackedInt32Array кісткових індексів. Містить 4 або 8 номерів на вершину в залежності від наявності ARRAY_FLAG_USE_8_BONE_WEIGHTS прапор.
ArrayType ARRAY_WEIGHTS = 11
PackedFloat32Array або PackedFloat64Array кісткової маси в діапазоні 0.0 to 1.0 (включаючи). Містить 4 або 8 номерів на вершину в залежності від наявності ARRAY_FLAG_USE_8_BONE_WEIGHTS прапор.
ArrayType ARRAY_INDEX = 12
PackedInt32Array цілих чисел, використовуваних як індекси, що посилаються вершини, кольори, нормали, тангенси і текстури. Всі ці масиви повинні мати однакову кількість елементів, як verex масив. Немає індексу може бути поза розмірами вершини. Коли цей індексний масив присутній, він кладе функцію в режим "індекс", де індекс вибирає i'th vertex, нормальний, тангенс, колір, УФ і т.д. Це означає, якщо ви хочете мати різні нормали або кольори по краю, ви повинні дублювати вершини.
Для трикутників індексний масив інтерпретується як потрійки, посилаючись на вершини кожного трикутника. Для ліній, індексний масив в парах, що вказують на початок і кінець кожної лінії.
ArrayType ARRAY_MAX = 13
Представляємо розмір ArrayType enum.
enum ArrayCustomFormat: 🔗
ArrayCustomFormat ARRAY_CUSTOM_RGBA8_UNORM = 0
Призначає цей користувальницький канал містить невизначені нормалізовані кольори байтів від 0 до 1, закодовані як PackedByteArray.
ArrayCustomFormat ARRAY_CUSTOM_RGBA8_SNORM = 1
Призначає цей користувальницький канал, який містить укладено нормалізований колір байтів від -1 до 1, зашифрований як PackedByteArray.
ArrayCustomFormat ARRAY_CUSTOM_RG_HALF = 2
Призначає цей користувальницький канал містить половину прецизійних плавальних кольорів, закодованих як PackedByteArray. Використовуються тільки червоні і зелені канали.
ArrayCustomFormat ARRAY_CUSTOM_RGBA_HALF = 3
Призначає цей користувальницький канал містить половину прецизійних плавальних кольорів, закодованих як PackedByteArray.
ArrayCustomFormat ARRAY_CUSTOM_R_FLOAT = 4
Цей користувальницький канал містить повно плаваючі кольори, в PackedFloat32Array. Тільки використовується червоний канал.
ArrayCustomFormat ARRAY_CUSTOM_RG_FLOAT = 5
Цей користувальницький канал містить повно плаваючі кольори, в PackedFloat32Array. Використовуються тільки червоні і зелені канали.
ArrayCustomFormat ARRAY_CUSTOM_RGB_FLOAT = 6
Цей користувальницький канал містить повно плаваючі кольори, в PackedFloat32Array. Використовуються тільки червоні, зелені і сині канали.
ArrayCustomFormat ARRAY_CUSTOM_RGBA_FLOAT = 7
Цей користувальницький канал містить повно плаваючі кольори, в PackedFloat32Array.
ArrayCustomFormat ARRAY_CUSTOM_MAX = 8
Представляємо розмір ArrayCustomFormat enum.
flags ArrayFormat: 🔗
ArrayFormat ARRAY_FORMAT_VERTEX = 1
Сітчастий масив містить вершини. Всі сітки вимагають хребта, тому це завжди повинно бути присутнім.
ArrayFormat ARRAY_FORMAT_NORMAL = 2
Сітчастий масив містить нормалі.
ArrayFormat ARRAY_FORMAT_TANGENT = 4
Сітчастий масив містить тангенси.
ArrayFormat ARRAY_FORMAT_COLOR = 8
Сітчастий масив містить кольори.
ArrayFormat ARRAY_FORMAT_TEX_UV = 16
Сітчастий масив містить УФ.
ArrayFormat ARRAY_FORMAT_TEX_UV2 = 32
Сітка масиву містить другий УФ.
ArrayFormat ARRAY_FORMAT_CUSTOM0 = 64
Сітка масиву містить індекс користувацького каналу 0 р.
ArrayFormat ARRAY_FORMAT_CUSTOM1 = 128
Сітка масиву містить індекс користувацького каналу 1.
ArrayFormat ARRAY_FORMAT_CUSTOM2 = 256
Сітка масиву містить індекс користувацького каналу 2.
ArrayFormat ARRAY_FORMAT_CUSTOM3 = 512
Сітка масиву містить індекс користувацького каналу 3.
ArrayFormat ARRAY_FORMAT_BONES = 1024
Сітчастий масив містить кістки.
ArrayFormat ARRAY_FORMAT_WEIGHTS = 2048
Сітчастий масив містить кісткові маси.
ArrayFormat ARRAY_FORMAT_INDEX = 4096
Сітчастий масив використовує індекси.
ArrayFormat ARRAY_FORMAT_BLEND_SHAPE_MASK = 7
Маска сітчастих каналів дозволяється в формі блендера.
ArrayFormat ARRAY_FORMAT_CUSTOM_BASE = 13
Шифт першого користувацького каналу.
ArrayFormat ARRAY_FORMAT_CUSTOM_BITS = 3
Кількість форматних біт на користувальницький канал. ArrayCustomFormat.
ArrayFormat ARRAY_FORMAT_CUSTOM0_SHIFT = 13
Сума для перемикання ArrayCustomFormat для індексу каналів 0.
ArrayFormat ARRAY_FORMAT_CUSTOM1_SHIFT = 16
Сума для перемикання ArrayCustomFormat для індексу каналів 1.
ArrayFormat ARRAY_FORMAT_CUSTOM2_SHIFT = 19
Сума для перемикання ArrayCustomFormat для індексу каналів 2.
ArrayFormat ARRAY_FORMAT_CUSTOM3_SHIFT = 22
Сума для перемикання ArrayCustomFormat для індексу каналів 3.
ArrayFormat ARRAY_FORMAT_CUSTOM_MASK = 7
Маска користувальницьких форматів біт на користувацькому каналі. Необхідно перенести один з констанцій SHIFT. ArrayCustomFormat.
ArrayFormat ARRAY_COMPRESS_FLAGS_BASE = 25
Шифт першого компресорного прапора. Стискачі повинні бути передані в ArrayMesh.add_surface_from_arrays() і SurfaceTool.commit().
ArrayFormat ARRAY_FLAG_USE_2D_VERTICES = 33554432
Прапор використовується для позначення, що масив містить 2D вершини.
ArrayFormat ARRAY_FLAG_USE_DYNAMIC_UPDATE = 67108864
Прапорець, що використовується для позначення того, що дані сітки використовуватимуть GL_DYNAMIC_DRAW на GLES. Не використовується на Vulkan.
ArrayFormat ARRAY_FLAG_USE_8_BONE_WEIGHTS = 134217728
Прапор використовується для позначення, що сітка містить до 8 кісткових впливів на вершину. Цей прапор вказує, що ARRAY_BONES і ARRAY_WEIGHTS елементи будуть мати подвійну довжину.
ArrayFormat ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY = 268435456
Прапор використовується для позначення того, що сітка навмисно не містить хребта.
ArrayFormat ARRAY_FLAG_COMPRESS_ATTRIBUTES = 536870912
Прапор використовується для позначення, що сітка використовує стиснені атрибути (перетворювачі, норми, тангенси, УФ). Коли ця форма стиснення ввімкнена, позиції вершини будуть упаковані в атрибут RGBA16UNORM і масштабовані в шейдері вершини. Нормальний і tangent буде упаковано в RG16UNORM, що представляє вісь, і 16-бітний плавлення, що зберігається в A-каналі вершини. УФС використовуватимуть 16-бітні нормалізовані плавки замість повної 32-бітової підписаної плавки. При використанні цього режиму стиснення ви повинні використовувати або вершини, нормали, тангенси або тільки вершини. Ви не можете використовувати нормалі без тангенсів. Імпортери автоматично ввімкнуть цю компресію, якщо вони можуть.
enum BlendShapeMode: 🔗
BlendShapeMode BLEND_SHAPE_MODE_NORMALIZED = 0
Норматизовані форми суміша.
BlendShapeMode BLEND_SHAPE_MODE_RELATIVE = 1
Блендерні форми відносно базової ваги.
Описи властивостей
Vector2i lightmap_size_hint = Vector2i(0, 0) 🔗
void set_lightmap_size_hint(value: Vector2i)
Vector2i get_lightmap_size_hint()
Налаштовується підказка, яка використовується для роздільної здатності Lightmap.
Описи методів
AABB _get_aabb() virtual required const 🔗
Віртуальний спосіб перевизначення AABB для розширення користувацького класу Mesh.
int _get_blend_shape_count() virtual required const 🔗
Віртуальний спосіб перевизначення кількості форм суміша для розширення індивідуального класу Mesh.
StringName _get_blend_shape_name(index: int) virtual required const 🔗
Віртуальний спосіб перевизначення назв форм сумішшю для розширення індивідуального класу Mesh.
int _get_surface_count() virtual required const 🔗
Віртуальний спосіб перевизначити кількість поверхні для розширення користувацького класу Mesh.
void _set_blend_shape_name(index: int, name: StringName) virtual required 🔗
Віртуальний спосіб перевизначити імена форм суміша для розширення індивідуального класу Mesh.
int _surface_get_array_index_len(index: int) virtual required const 🔗
Віртуальний спосіб перевизначення довжини індексу поверхні для розширення користувацького класу Mesh.
int _surface_get_array_len(index: int) virtual required const 🔗
Віртуальний спосіб перевизначення довжини масиву поверхні для розширення користувацького класу Mesh.
Array _surface_get_arrays(index: int) virtual required const 🔗
Віртуальний спосіб перевизначення поверхневих масивів для розширення користувацького класу Mesh.
Array[Array] _surface_get_blend_shape_arrays(index: int) virtual required const 🔗
Віртуальний метод для перевизначення масивів форми блендера для розширення індивідуального класу Mesh.
int _surface_get_format(index: int) virtual required const 🔗
Віртуальний спосіб перевизначити формат поверхні для розширення користувацького класу Mesh.
Dictionary _surface_get_lods(index: int) virtual required const 🔗
Віртуальний спосіб перевизначення поверхні LODs для розширення користувацького класу Mesh.
Material _surface_get_material(index: int) virtual required const 🔗
Віртуальний спосіб перевизначення поверхневого матеріалу для розширення користувацького класу Mesh.
int _surface_get_primitive_type(index: int) virtual required const 🔗
Віртуальний спосіб перевизначення поверхневого примітивного типу для розширення індивідуального класу Mesh.
void _surface_set_material(index: int, material: Material) virtual required 🔗
Віртуальний метод для перевизначення значення material за заданим index для користувацького класу, що розширює Mesh.
ConvexPolygonShape3D create_convex_shape(clean: bool = true, simplify: bool = false) const 🔗
Розрахунок ConvexPolygonShape3D з сітки.
Якщо clear є true (default), дублікати та інтер'єрні вершини видаляються автоматично. Ви можете налаштувати його на false, щоб зробити процес швидше, якщо не потрібно.
Якщо спрощує true, геометрія може бути додатково спрощена для зменшення кількості вершин. Вимкнено за замовчуванням.
Mesh create_outline(margin: float) const 🔗
Розрахунок окресленої сітки при визначеному офсеті (маргіні) з оригінальної сітки.
Примітка: Цей метод, як правило, повертає вершини в зворотному порядку (наприклад, годинниковою стрілкою, щоб проти годинникової стрілки).
Resource create_placeholder() const 🔗
Створює резиденцію вкладника цього ресурсу (PlaceholderMesh).
ConcavePolygonShape3D create_trimesh_shape() const 🔗
Розрахунок ConcavePolygonShape3D з сітки.
TriangleMesh generate_triangle_mesh() const 🔗
Генерувати TriangleMesh з сітки. Розглядаються тільки поверхні за допомогою одного з цих примітивних типів: PRIMITIVE_TRIANGLES, PRIMITIVE_TRIANGLE_STRIANGLE_STRIP.
Повертає найменшу AABB закриваючи цю сітку в локальному просторі. Не впливає custom_aabb.
Примітка: Для ArrayMesh та PrimitiveMesh.
PackedVector3Array get_faces() const 🔗
Повертає всі вершини, які складають обличчя сітки. Кожен три вершини представляють один трикутник.
int get_surface_count() const 🔗
Повертаємо кількість поверхонь, які тримається Mesh. MeshInstance3D.get_surface_override_material_count().
Array surface_get_arrays(surf_idx: int) const 🔗
Повертає масиви для вершин, нормалей, УФів і т.д., що складають затребувану поверхню (див. ArrayMesh.add_surface_from_arrays()).
Array[Array] surface_get_blend_shape_arrays(surf_idx: int) const 🔗
Повертає масиви форми блендера на задану поверхню.
Material surface_get_material(surf_idx: int) const 🔗
Повертаємо Material в даній поверхні. Поверхня подається за допомогою цього матеріалу.
Примітка: Це повертає матеріал в межах Mesh ресурсу, а не Material, пов'язаний з MeshInstance3D поверхневим матеріалом Override властивості. Щоб отримати Material, пов'язаний з MeshInstance3D's Surface Material Override властивості, скористайтеся MeshInstance3D.get_surface_override_material().
void surface_set_material(surf_idx: int, material: Material) 🔗
Настроювання Material для даної поверхні. Поверхня буде надано за допомогою цього матеріалу.
Примітка: Це відзначає матеріал в межах Mesh ресурсу, а не Material, пов'язаний з MeshInstance3D поверхневими властивостями. Щоб встановити Material, пов'язаний з MeshInstance3D's Surface Material Override властивості, скористайтеся MeshInstance3D.set_surface_override_material().