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.

Mesh

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

Успадковано від: ArrayMesh, ImmediateMesh, PlaceholderMesh, PrimitiveMesh

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

Опис

Сітка — це тип Resource, який містить геометрію на основі масиву вершин, розділену на поверхні. Кожна поверхня містить повністю окремий масив і матеріал, який використовується для її малювання. Що стосується дизайну, сітка з кількома поверхнями є кращою, ніж одна поверхня, оскільки об’єкти, створені в програмному забезпеченні для редагування 3D, зазвичай містять кілька матеріалів. Максимальна кількість поверхонь на сітку становить RenderingServer.MAX_MESH_SURFACES.

Посібники

Властивості

Vector2i

lightmap_size_hint

Vector2i(0, 0)

Методи

AABB

_get_aabb() virtual required const

int

_get_blend_shape_count() virtual required const

StringName

_get_blend_shape_name(index: int) virtual required const

int

_get_surface_count() virtual required const

void

_set_blend_shape_name(index: int, name: StringName) virtual required

int

_surface_get_array_index_len(index: int) virtual required const

int

_surface_get_array_len(index: int) virtual required const

Array

_surface_get_arrays(index: int) virtual required const

Array[Array]

_surface_get_blend_shape_arrays(index: int) virtual required const

int

_surface_get_format(index: int) virtual required const

Dictionary

_surface_get_lods(index: int) virtual required const

Material

_surface_get_material(index: int) virtual required const

int

_surface_get_primitive_type(index: int) virtual required const

void

_surface_set_material(index: int, material: Material) virtual required

ConvexPolygonShape3D

create_convex_shape(clean: bool = true, simplify: bool = false) const

Mesh

create_outline(margin: float) const

Resource

create_placeholder() const

ConcavePolygonShape3D

create_trimesh_shape() const

TriangleMesh

generate_triangle_mesh() const

AABB

get_aabb() const

PackedVector3Array

get_faces() const

int

get_surface_count() const

Array

surface_get_arrays(surf_idx: int) const

Array[Array]

surface_get_blend_shape_arrays(surf_idx: int) const

Material

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 get_aabb() const 🔗

Повертає найменшу 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().