Mesh

Наследует: Resource < RefCounted < Object

Наследуется от: ArrayMesh, ImmediateMesh, PlaceholderMesh, PrimitiveMesh

Resource содержащий геометрию на основе массива вершин.

Описание

Mesh — это тип 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

Визуализируйте массив как линейную полосу (Line Strip).

PrimitiveType PRIMITIVE_TRIANGLES = 3

Визуализируем массив в виде треугольников (через каждые три вершины создается треугольник).

PrimitiveType PRIMITIVE_TRIANGLE_STRIP = 4

Визуализируйте массив в виде полосок треугольников (Triangle Strips).


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 для UV-координат.

ArrayType ARRAY_TEX_UV2 = 5

PackedVector2Array для вторых UV-координат.

ArrayType ARRAY_CUSTOM0 = 6

Содержит пользовательский цветовой канал 0. PackedByteArray, если (format >> 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, если (format >> 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, если (format >> 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, если (format >> 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 до 1.0 (включительно). Содержит 4 или 8 чисел на вершину в зависимости от наличия флага ARRAY_FLAG_USE_8_BONE_WEIGHTS.

ArrayType ARRAY_INDEX = 12

PackedInt32Array целых чисел, используемых в качестве индексов, ссылающихся на вершины, цвета, нормали, касательные и текстуры. Все эти массивы должны иметь то же количество элементов, что и массив вершин. Ни один индекс не может выходить за пределы размера массива вершин. Когда присутствует этот массив индексов, он переводит функцию в «индексный режим», где индекс выбирает i-ю вершину, нормаль, касательную, цвет, UV и т. д. Это означает, что если вы хотите иметь разные нормали или цвета вдоль ребра, вам нужно дублировать вершины.

Для треугольников массив индексов интерпретируется как тройки, ссылающиеся на вершины каждого треугольника. Для линий массив индексов состоит из пар, указывающих начало и конец каждой линии.

ArrayType ARRAY_MAX = 13

Представляет размер перечисления ArrayType.


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

Указывает, что этот пользовательский канал содержит цвета с плавающей точкой половинной (precision) точности, закодированные как PackedByteArray. Используются только красный и зеленый каналы.

ArrayCustomFormat ARRAY_CUSTOM_RGBA_HALF = 3

Указывает, что этот пользовательский канал содержит цвета с плавающей точкой половинной (precision) точности, закодированные как 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.


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

Массив сетки содержит UV.

ArrayFormat ARRAY_FORMAT_TEX_UV2 = 32

Массив сетки содержит второй UV.

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

Флаг, используемый для обозначения того, что сетка использует сжатые атрибуты (вершины, нормали, касательные, UV). Когда включена эта форма сжатия, позиции вершин будут упакованы в атрибут RGBA16UNORM и масштабированы в вершинном шейдере. Нормаль и касательная будут упакованы в RG16UNORM, представляющий ось, и 16-битное число с плавающей точкой, сохраненное в A-канале вершины. UV будут использовать 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 🔗

Виртуальный метод для переопределения уровней детализации (LOD) поверхности для пользовательского класса, расширяющего 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 из сетки.

Если clean равен true (по умолчанию), дублирующиеся и внутренние вершины удаляются автоматически. Вы можете установить его на false, чтобы ускорить процесс, если он не нужен.

Если simplify равен 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_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 🔗

Возвращает массивы вершин, нормалей, UV и т. д., составляющих запрошенную поверхность (см. 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. Чтобы получить Material, связанный со свойствами переопределения материала поверхности MeshInstance3D, используйте вместо этого MeshInstance3D.get_surface_override_material().


void surface_set_material(surf_idx: int, material: Material) 🔗

Устанавливает Material для заданной поверхности. Поверхность будет визуализирована с использованием этого материала.

Примечание: Это назначает материал в ресурсе Mesh, а не Material, связанный со свойствами переопределения материала поверхности MeshInstance3D. Чтобы установить Material, связанный со свойствами переопределения материала поверхности MeshInstance3D, используйте вместо этого MeshInstance3D.set_surface_override_material().