reckfellENGINE

Mesh

Базовый ресурс геометрии: поверхности, материалы и CPU-производные данных.

На этой странице
class MeshReckfellSharpНаследует Resource

Mesh — базовый ресурс, не Entity и не физическое тело. Для обычного создания используйте ArrayMesh, ImmediateMesh или готовый PrimitiveMesh, например BoxMesh. MeshInstance3D размещает ресурс в мире; несколько экземпляров могут использовать один Mesh. Material поверхности хранится в общем ресурсе, а настройки отдельного экземпляра задаются у потребителя. Сам базовый Mesh зарегистрирован как виртуальный класс: наличие C#-конструктора не делает new Mesh() готовой геометрией.

C#
using var mesh = new ArrayMesh();
using var arrays = new Reckfell.Collections.Array();
arrays.Resize((int)Mesh.ArrayType.Max);
arrays[(int)Mesh.ArrayType.Vertex] = new Vector3[] {
    Vector3.Zero, new(1, 0, 0), new(0, 1, 0)
};
mesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);
Vector3[] faces = mesh.GetFaces(); // 3 corners
using var shape = mesh.CreateTrimeshShape();

Пример создаёт треугольник и ресурс формы, не видимый объект и не коллизию мира. Для физики назначьте shape в CollisionShape3D внутри подходящего CollisionObject3D; для отображения нужен MeshInstance3D с mesh. Сохраняйте ресурсы живыми, пока ими пользуются; using здесь ограничивает срок жизни проверкой данных.

SurfaceGetArrays возвращает массив слотов Mesh.ArrayType, а не flat-список углов. У индексной поверхности Vertex хранит уникальные записи, Index определяет последовательность углов. GetFaces разворачивает Triangles и TriangleStrip всех подходящих поверхностей в Vector3-тройки; Points/Lines пропускаются. Это данные локального пространства, без Transform3D экземпляра, GPU shader-деформации, текущей позы skeleton и выбранного renderer LOD.

GetFaces использует GenerateTriangleMesh: CPU-BVH кэшируется, координаты округляются к шагу 0.0001. Результат GetFaces — managed-копия, а GenerateTriangleMesh может повторно вернуть тот же wrapper: не освобождайте повторный alias раньше владельца. Это не точное чтение исходного Vertex float-массива. Проверьте входные индексы сами; utility не является валидатором произвольной повреждённой геометрии.

Известный дефект 1.0.0: ArrayMesh.ClearSurfaces не сбрасывает этот кэш. После ранее вызванного GetFaces/GenerateTriangleMesh удалённые треугольники могут остаться в последующем GetFaces или создаваемой trimesh-форме. Для полной замены геометрии используйте новый ArrayMesh и заново создайте зависимые формы; пустое число surfaces не гарантирует пустой кэш. Добавление/удаление отдельной поверхности через обычные методы ArrayMesh сбрасывает основной triangle cache, но уже выданный TriangleMesh остаётся прежним снимком.

CreateTrimeshShape копирует треугольники в ConcavePolygonShape3D, возвращая null при их отсутствии. Это поверхность, не автоматически заполненный объём и не готовая Entity. Для движущегося выпуклого объекта выбирайте подходящий convex-примитив или convex-форму; создание данных формы здесь не подтверждает физическую устойчивость сцены. CreateConvexShape берёт позиции всех поверхностей, включая неиспользуемые индексами и неTriangles. clean строит очищенный hull, simplify пробует один hull через доступный decomposer; при сбое возможен fallback с диагностикой. Полости/проёмы convex-форма не сохраняет.

CreateOutline — отдельный Mesh со смещёнными по геометрическим normals вершинами и обратным обходом. Он не включает постэффект, не задаёт толщину в пикселях и не рисуется автоматически. Материал назначьте отдельно. Нужны согласованные Triangles-поверхности, начиная с первой: вариант с неTriangles в начале не является надёжным путём. Метод объединяет поверхности, не сохраняет их отдельные материалы/blend shapes/LOD и не является универсальным lossless-редактором.

LightmapSizeHint хранит подсказку размера; setter не генерирует UV2, не запекает освещение и не отправляет Changed. CreatePlaceholder создаёт PlaceholderMesh только с текущим Aabb: текстуры/материалы/треугольники и коллизия в него не переносятся.

Методы с подчёркиванием (_GetSurfaceCount, _SurfaceGetArrays и остальные) — callbacks для собственной реализации Mesh. Переопределяйте согласованный набор; прямой вызов generated base-метода возвращает default, а не вызывает обычный нативный getter конкретного ArrayMesh. _SurfaceGetFormat имеет uint, хотя ArrayMesh.SurfaceGetFormat возвращает 64-битный Mesh.ArrayFormat: не переносите произвольно высокие биты в callback. Полная пользовательская реализация и видимый рендер этим примером не проверены.

19 Windows headless-проверок подтвердили CPU-тройки/strip, округление, кэш, простой outline, placeholder и данные форм. Реальные physics-world collisions, clean/simplify, деформация, custom Mesh renderer и производительность не подтверждены. Дефект кэша воспроизведён, код движка не исправлялся.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

MeshКонструктор
# Mesh
C#
public Mesh();

Базовый виртуальный native-тип ресурса. Для обычной геометрии создавайте конкретный ArrayMesh/ImmediateMesh/BoxMesh; C#-конструктор не заполняет поверхности и не заменяет реализацию обязательных callbacks.

Свойства1

LightmapSizeHintСвойство
# LightmapSizeHint
C#
public Vector2I LightmapSizeHint { get; set; }

Подсказка размера lightmap в texels. По умолчанию (0,0); установка не запекает свет/UV2 и не отправляет Changed.

Методы28

CreateConvexShapeConvexPolygonShape3D
# CreateConvexShape
C#
public ConvexPolygonShape3D CreateConvexShape(bool clean = true, bool simplify = false);

Создаёт convex shape из позиций всех поверхностей, не только используемых треугольных углов. clean строит hull, simplify пробует decomposer с одним hull и может перейти к fallback. Не сохраняет вогнутость и не создаёт физическое тело.

Параметры
ИмяТипПо умолчанию
cleanbooltrue
simplifyboolfalse
clean

true пробует построить hull и удалить внутренние/лишние точки; при неуспехе возможен fallback. Не проверка mesh на отсутствие дыр.

simplify

true пробует доступную convex-decomposition реализацию с одним hull; дороже и может завершиться fallback. В этом проходе не запускалось.

Возвращает ConvexPolygonShape3D

Новый собственный ConvexPolygonShape3D; проверьте данные/журнал. Наличие shape не подтверждает физическую устойчивость и точность вогнутого объекта.

CreateOutlineMesh
# CreateOutline
C#
public Mesh CreateOutline(float margin);

Создаёт новый одно-поверхностный Mesh: смещение по геометрическим normals и обратный обход. Требует согласованных Triangles начиная с первой поверхности. Не материал/постэффект/пиксельная обводка; разные surface materials и LOD не сохраняются.

Параметры
ИмяТипПо умолчанию
marginfloat—
margin

Конечное локальное смещение вдоль накопленных геометрических normals. Не пиксели и не гарантированная равномерная толщина на экране.

Возвращает Mesh

Новый Mesh, обычно ArrayMesh, либо null при отклонении данных. Материал автоматически не назначается.

CreatePlaceholderResource
# CreatePlaceholder
C#
public Resource CreatePlaceholder();

Создаёт PlaceholderMesh с текущим GetAabb. Геометрия, материалы, текстуры и collision не копируются; после изменения source bounds placeholder сам не обновляется.

Возвращает Resource

Новый собственный Resource типа PlaceholderMesh с сохранёнными bounds.

CreateTrimeshShapeConcavePolygonShape3D
# CreateTrimeshShape
C#
public ConcavePolygonShape3D CreateTrimeshShape();

Создаёт ConcavePolygonShape3D из GetFaces, включая округление/кэш TriangleMesh. Без треугольников null. Не добавляет CollisionShape3D в мир; после изменения mesh пересоздайте зависимую форму.

Возвращает ConcavePolygonShape3D

Новый собственный ConcavePolygonShape3D либо null без треугольников.

GenerateTriangleMeshTriangleMesh
# GenerateTriangleMesh
C#
public TriangleMesh GenerateTriangleMesh();

Возвращает кэшированный CPU TriangleMesh по Triangles/TriangleStrip; прочие primitives пропускаются. Позиции округляются к шагу 0.0001, видимая деформация не учитывается. Известно: ArrayMesh.ClearSurfaces не сбрасывает старый кэш.

Возвращает TriangleMesh

Общая кэшированная ссылка TriangleMesh либо null без подходящих треугольников. Повторный результат может быть тем же wrapper.

GetAabbAabb
# GetAabb
C#
public Aabb GetAabb();

Запрашивает локальные границы ресурса Mesh. Конкретный нативный тип предоставляет свою реализацию: например, ArrayMesh возвращает сохранённые границы геометрии. Базовый Mesh делегирует запрос _GetAabb. Метод не учитывает трансформацию экземпляра, CustomAabb, ExtraCullMargin или смещения GPU-шейдера.

Возвращает Aabb

Локальный Aabb ресурса, предоставленный реализацией Mesh. Для мировой оценки отдельно примените трансформацию экземпляра; это всё равно не запрос окончательных границ рендеринга.

GetFacesVector3[]
# GetFaces
C#
public Vector3[] GetFaces();

Возвращает managed-копию локальных углов тройками из GenerateTriangleMesh. Это округлённые/кэшированные CPU-данные, не исходные точные Vertex floats и не финальная GPU-поза.

Возвращает Vector3[]

Новый Vector3[] углов тройками, пустой без треугольников; координаты уже округлены BVH.

GetLightmapSizeHintVector2I
# GetLightmapSizeHint
C#
public Vector2I GetLightmapSizeHint();

Читает сохранённую подсказку размера lightmap, не размер запечённой текстуры и не результат UV unwrap.

Возвращает Vector2I

Сохранённый Vector2I, по умолчанию (0,0).

GetSurfaceCountint
# GetSurfaceCount
C#
public int GetSurfaceCount();

Возвращает число поверхностей конкретной реализации. Не число материалов экземпляра или треугольников.

Возвращает int

Число поверхностей реализации.

SetLightmapSizeHintvoid
# SetLightmapSizeHint
C#
public void SetLightmapSizeHint(Vector2I size);

Сохраняет подсказку, также доступную через LightmapSizeHint. Не меняет геометрию и не запускает запекание; Changed не отправляется.

Параметры
ИмяТипПо умолчанию
sizeVector2I—
size

Неотрицательные размеры подсказки в texels, (0,0) без заданной подсказки.

SurfaceGetArraysReckfell.Collections.Array
# SurfaceGetArrays
C#
public Reckfell.Collections.Array SurfaceGetArrays(int surfIdx);

Читает слоты Mesh.ArrayType поверхности через конкретную реализацию. ArrayMesh/ImmediateMesh возвращают snapshots, но для пользовательского Mesh семантика зависит от callback. Не считайте это universal deep copy.

Параметры
ИмяТипПо умолчанию
surfIdxint—
surfIdx

Индекс поверхности конкретного Mesh от 0 до GetSurfaceCount()-1.

Возвращает Reckfell.Collections.Array

Array слотов каналов; wrapper освобождайте после чтения. Семантика копирования зависит от реализации.

SurfaceGetBlendShapeArraysReckfell.Collections.Array<Reckfell.Collections.Array>
# SurfaceGetBlendShapeArrays
C#
public Reckfell.Collections.Array<Reckfell.Collections.Array> SurfaceGetBlendShapeArrays(int surfIdx);

Читает typed-массив каналов форм поверхности. Порядок соответствует определениям форм реализации; без форм пусто. Контейнеры форм — Array слотов, не просто Vector3[].

Параметры
ИмяТипПо умолчанию
surfIdxint—
surfIdx

Индекс поверхности конкретного Mesh от 0 до GetSurfaceCount()-1.

Возвращает Reckfell.Collections.Array<Reckfell.Collections.Array>

Typed-массив Array форм; отдельные untyped Array wrappers освобождайте после чтения, typed Array сам не IDisposable.

SurfaceGetMaterialMaterial
# SurfaceGetMaterial
C#
public Material SurfaceGetMaterial(int surfIdx);

Возвращает общий Material поверхности либо null. Это материал ресурса, не MaterialOverride/overlay отдельного MeshInstance3D.

Параметры
ИмяТипПо умолчанию
surfIdxint—
surfIdx

Индекс поверхности конкретного Mesh от 0 до GetSurfaceCount()-1.

Возвращает Material

Общая ссылка Material или null; не отдельная копия для раннего Dispose.

SurfaceSetMaterialvoid
# SurfaceSetMaterial
C#
public void SurfaceSetMaterial(int surfIdx, Material material);

Меняет Material общей поверхности через конкретную реализацию. Все использующие ресурс экземпляры могут увидеть изменение, если не перекрывают материал. Сигнал Changed зависит от реализации.

Параметры
ИмяТипПо умолчанию
surfIdxint—
materialMaterial—
surfIdx

Индекс поверхности конкретного Mesh от 0 до GetSurfaceCount()-1.

material

Общий Material либо null; передача не клонирует ресурс.

_GetAabbAabb
# _GetAabb
C#
public virtual Aabb _GetAabb();

Виртуальный обратный вызов для локальных границ пользовательского ресурса на базе Mesh. Его вызывает базовая реализация Mesh.GetAabb. Нативные производные типы могут переопределять GetAabb напрямую, поэтому этот callback не является универсальным способом заменить границы любого встроенного Mesh.

Возвращает Aabb

Локальные геометрические границы пользовательского Mesh. Не добавляйте сюда трансформацию отдельного MeshInstance3D.

_GetBlendShapeCountint
# _GetBlendShapeCount
C#
public virtual int _GetBlendShapeCount();

Возвращайте число форм в собственной реализации Mesh. Это callback, не вызов нативного GetBlendShapeCount произвольного ArrayMesh.

Возвращает int

Число форм; generated base возвращает 0.

_GetBlendShapeNameStringName
# _GetBlendShapeName
C#
public virtual StringName _GetBlendShapeName(int index);

Возвращайте имя формы для index в собственной реализации. Согласуйте с количеством форм и порядком blend-массивов.

Параметры
ИмяТипПо умолчанию
indexint—
index

Индекс формы в собственных данных от 0 до объявленного числа форм минус 1.

Возвращает StringName

StringName формы; generated base возвращает default.

_GetSurfaceCountint
# _GetSurfaceCount
C#
public virtual int _GetSurfaceCount();

Возвращайте число поверхностей собственного Mesh; все surface callbacks должны принимать соответствующие индексы.

Возвращает int

Число поверхностей; generated base возвращает 0.

_SetBlendShapeNamevoid
# _SetBlendShapeName
C#
public virtual void _SetBlendShapeName(int index, StringName name);

Реализуйте переименование формы в своих данных. Generated base-метод сам ничего не делает и не пересылает вызов в native ArrayMesh.

Параметры
ИмяТипПо умолчанию
indexint—
nameStringName—
index

Индекс формы в собственных данных от 0 до объявленного числа форм минус 1.

name

Новое имя формы, согласованное с вашей реализацией и сериализацией.

_SurfaceGetArrayIndexLenint
# _SurfaceGetArrayIndexLen
C#
public virtual int _SurfaceGetArrayIndexLen(int index);

Возвращайте длину индексного массива поверхности, 0 без индексов. Это число элементов, не байтов/треугольников.

Параметры
ИмяТипПо умолчанию
indexint—
index

Индекс поверхности в собственных данных от 0 до объявленного surface count минус 1.

Возвращает int

Число индексов, 0 для неиндексированной поверхности.

_SurfaceGetArrayLenint
# _SurfaceGetArrayLen
C#
public virtual int _SurfaceGetArrayLen(int index);

Возвращайте число записей Vertex поверхности. Согласуйте с массивами атрибутов и индексами.

Параметры
ИмяТипПо умолчанию
indexint—
index

Индекс поверхности в собственных данных от 0 до объявленного surface count минус 1.

Возвращает int

Число записей Vertex выбранной поверхности.

_SurfaceGetArraysReckfell.Collections.Array
# _SurfaceGetArrays
C#
public virtual Reckfell.Collections.Array _SurfaceGetArrays(int index);

Возвращайте согласованный Array ровно Mesh.ArrayType.Max слотов с нужными packed-типами. Это данные CPU callback, не автоматическое создание GPU mesh.

Параметры
ИмяТипПо умолчанию
indexint—
index

Индекс поверхности в собственных данных от 0 до объявленного surface count минус 1.

Возвращает Reckfell.Collections.Array

Array каналов, согласованный с форматом/длинами; generated base возвращает null.

_SurfaceGetBlendShapeArraysReckfell.Collections.Array<Reckfell.Collections.Array>
# _SurfaceGetBlendShapeArrays
C#
public virtual Reckfell.Collections.Array<Reckfell.Collections.Array> _SurfaceGetBlendShapeArrays(int index);

Возвращайте по одному Max-слотовому Array на форму поверхности в порядке объявленных форм; пусто без форм.

Параметры
ИмяТипПо умолчанию
indexint—
index

Индекс формы в собственных данных от 0 до объявленного числа форм минус 1.

Возвращает Reckfell.Collections.Array<Reckfell.Collections.Array>

Typed-массив Array форм; generated base возвращает null.

_SurfaceGetFormatuint
# _SurfaceGetFormat
C#
public virtual uint _SurfaceGetFormat(int index);

Возвращайте согласованные channel/format bits. Текущий callback uint, не ulong; нельзя гарантировать перенос высоких 64-битных флагов ArrayMesh через него.

Параметры
ИмяТипПо умолчанию
indexint—
index

Индекс поверхности в собственных данных от 0 до объявленного surface count минус 1.

Возвращает uint

32-битная маска uint; generated base возвращает 0, не полный ulong ArrayMesh format.

_SurfaceGetLodsReckfell.Collections.Dictionary
# _SurfaceGetLods
C#
public virtual Reckfell.Collections.Dictionary _SurfaceGetLods(int index);

Возвращайте Dictionary метрика → int[] индексов LOD соответствующей поверхности. Это данные уровня, не переключение камеры или автоматическое упрощение.

Параметры
ИмяТипПо умолчанию
indexint—
index

Индекс поверхности в собственных данных от 0 до объявленного surface count минус 1.

Возвращает Reckfell.Collections.Dictionary

Dictionary уровней; generated base возвращает null.

_SurfaceGetMaterialMaterial
# _SurfaceGetMaterial
C#
public virtual Material _SurfaceGetMaterial(int index);

Возвращайте общую ссылку Material либо null из своей реализации; сохраняйте ресурс живым, пока он нужен mesh.

Параметры
ИмяТипПо умолчанию
indexint—
index

Индекс поверхности в собственных данных от 0 до объявленного surface count минус 1.

Возвращает Material

Общий Material либо null; generated base возвращает null.

_SurfaceGetPrimitiveTypeuint
# _SurfaceGetPrimitiveType
C#
public virtual uint _SurfaceGetPrimitiveType(int index);

Возвращайте uint-представление Mesh.PrimitiveType поверхности, согласованное с массивами. Не подставляйте произвольный flags enum.

Параметры
ИмяТипПо умолчанию
indexint—
index

Индекс поверхности в собственных данных от 0 до объявленного surface count минус 1.

Возвращает uint

uint-значение primitive. Generated base 0 соответствует Points и не подтверждает корректную реализацию.

_SurfaceSetMaterialvoid
# _SurfaceSetMaterial
C#
public virtual void _SurfaceSetMaterial(int index, Material material);

Реализуйте смену общей ссылки материала в собственном Mesh. Generated base-метод не меняет нативный материал и не отправляет Changed.

Параметры
ИмяТипПо умолчанию
indexint—
materialMaterial—
index

Индекс поверхности в собственных данных от 0 до объявленного surface count минус 1.

material

Общий Material либо null; передача не клонирует ресурс.

Mesh.ArrayCustomFormat

ЗначениеОписание
Max = 8

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

RFloat = 4

Указал, что этот заказ содержит полный канал float цвета в а) float[]Используется только красный канал.

RgFloat = 5

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

RgHalf = 2

Указал этот заказ канал, содержащий полточку float цвета, кодируемые как byte[]. Используются только красные и зеленые каналы.

RgbFloat = 6

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

Rgba8Snorm = 1

Указывает, что этот пользовательский канал содержит знаковые нормализованные байтовые цвета от -1 до 1, закодированные как byte[].

Rgba8Unorm = 0

Указывает, что этот пользовательский канал содержит беззнаковые нормализованные байтовые цвета от 0 до 1, закодированные как byte[].

RgbaFloat = 7

Указал, что этот заказ содержит полный канал float цвета в а) float[].

RgbaHalf = 3

Указал этот заказ канал, содержащий полточку float цвета, кодируемые как byte[].

Mesh.ArrayFormat

ЗначениеОписание
CompressFlagsBase = 25

Сдвиг первого флага сжатия. Флаги сжатия должны быть переданы в ArrayMesh.AddSurfaceFromArrays и SurfaceTool.Commit.

FlagCompressAttributes = 536870912

Флаг, используемый для обозначения того, что сетка использует сжатые атрибуты (вертики, нормальные, касательные, ультрафиолетовые). Когда эта форма сжатия включена, положения позвоночника упаковываются в атрибут RGBA16UNORM и умножаются на вершину. Нормальная и касательная будут упаковываться в RG16unORM, представляющую собой ось, и 16 бит float Ультрафиолетовые системы будут использовать 16-битные нормализованные поплавки вместо полных 32-битных поплавков с подписью. При использовании этого режима сжатия вы должны использовать либо вершины, нормальные и тангенсные, либо только вершины. Вы не можете использовать нормальные поплавки без касательных. Импортеры автоматически позволят это сжатие, если смогут.

FlagUse2DVertices = 33554432

Флаг, используемый для обозначения того, что массив содержит 2D вершины.

FlagUse8BoneWeights = 134217728

Флаг, используемый для обозначения того, что сетка содержит до 8 влияний костей на вершину. Этот флаг указывает, что элементы Mesh.ArrayType.Bones и Mesh.ArrayType.Weights будут иметь двойную длину.

FlagUseDynamicUpdate = 67108864

Флаг, используемый для обозначения того, что данные сетки будут использовать GL_DYNAMIC_DRAW на GLES. Не используется на Vulkan.

FlagUseStorageBuffer = 1073741824

Флаг, используемый для обозначения того, что вершины поверхности, атрибуты, кожа и индексные буферы должны создаваться с битом использования хранилищ-буфера, чтобы они могли быть связаны как буферы хранения в вычислениях. Это требуется для записи в них из вычислительного трубопровода через Rids Возвращен RenderingServer.MeshSurfaceGetVertexBufferRdRid Не оказывает влияния на спинку OpenGL, которая не разоблачает RenderingDevice Rids.

FlagUsesEmptyVertexArray = 268435456

Флаг, используемый для обозначения того, что сетка намеренно не содержит массива вершин.

FormatBlendShapeMask = 7

Маска каналов сетки разрешена в смешанных формах.

FormatBones = 1024

Mesh массив содержит кости.

FormatColor = 8

Mesh массив содержит цвета.

FormatCustom0 = 64

Mesh массив содержит заказный индекс канала 0.

FormatCustom0Shift = 13

Величина сдвига Mesh.ArrayCustomFormat для индекса пользовательского канала 0.

FormatCustom1 = 128

Mesh массив содержит отдельный индекс канала 1.

FormatCustom1Shift = 16

Величина сдвига Mesh.ArrayCustomFormat для индекса пользовательского канала 1.

FormatCustom2 = 256

Mesh массив содержит индивидуальный индекс канала 2.

FormatCustom2Shift = 19

Величина сдвига Mesh.ArrayCustomFormat для индекса пользовательского канала 2.

FormatCustom3 = 512

Mesh массив содержит заказный индекс канала 3.

FormatCustom3Shift = 22

Величина сдвига Mesh.ArrayCustomFormat для индекса пользовательского канала 3.

FormatCustomBase = 13

Сдвиг первого пользовательского канала.

FormatCustomBits = 3

Количество бит формата на пользовательский канал. См. Mesh.ArrayCustomFormat.

FormatCustomMask = 7

Маска битов пользовательского формата для каждого пользовательского канала. Должна быть сдвинута на одну из констант SHIFT. См. Mesh.ArrayCustomFormat.

FormatIndex = 4096

Mesh в массиве используются индексы.

FormatNormal = 2

Mesh массив содержит нормальные данные.

FormatTangent = 4

Mesh массив содержит касательные.

FormatTexUV = 16

Mesh массив содержит УФ.

FormatTexUV2 = 32

Mesh массив содержит второе УФ-излучение.

FormatVertex = 1

Mesh В массиве есть вершины. Все решетки требуют вершинного массива, так что это всегда должно присутствовать.

FormatWeights = 2048

Mesh решетка содержит костные грузы.

Mesh.ArrayType

ЗначениеОписание
Bones = 10

float[] или int[] индексов костей. Содержит 4 или 8 чисел на вершину в зависимости от наличия флага Mesh.ArrayFormat.FlagUse8BoneWeights.

Color = 3

Color[] цветов вершин.

Custom0 = 6

Содержит пользовательский цветовой канал 0. byte[], если (format >> Mesh.ARRAY_FORMAT_CUSTOM0_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK равен Mesh.ArrayCustomFormat.Rgba8Unorm, Mesh.ArrayCustomFormat.Rgba8Snorm, Mesh.ArrayCustomFormat.RgHalf или Mesh.ArrayCustomFormat.RgbaHalf. float[] в противном случае.

Custom1 = 7

Содержит пользовательский цветовой канал 1. byte[], если (format >> Mesh.ARRAY_FORMAT_CUSTOM1_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK равен Mesh.ArrayCustomFormat.Rgba8Unorm, Mesh.ArrayCustomFormat.Rgba8Snorm, Mesh.ArrayCustomFormat.RgHalf или Mesh.ArrayCustomFormat.RgbaHalf. float[] в противном случае.

Custom2 = 8

Содержит пользовательский цветовой канал 2. byte[], если (format >> Mesh.ARRAY_FORMAT_CUSTOM2_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK равен Mesh.ArrayCustomFormat.Rgba8Unorm, Mesh.ArrayCustomFormat.Rgba8Snorm, Mesh.ArrayCustomFormat.RgHalf или Mesh.ArrayCustomFormat.RgbaHalf. float[] в противном случае.

Custom3 = 9

Содержит пользовательский цветовой канал 3. byte[], если (format >> Mesh.ARRAY_FORMAT_CUSTOM3_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK равен Mesh.ArrayCustomFormat.Rgba8Unorm, Mesh.ArrayCustomFormat.Rgba8Snorm, Mesh.ArrayCustomFormat.RgHalf или Mesh.ArrayCustomFormat.RgbaHalf. float[] в противном случае.

Index = 12

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

Max = 13

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

Normal = 1

Vector3[] нормалей вершин. Примечание: Массив должен состоять из векторов нормалей, в противном случае они будут нормализованы движком, что может привести к визуальным расхождениям.

Tangent = 2

float[] касательных вершин. Каждый элемент в группах по 4 плавающих элемента, первые 3 плавающих элемента определяют касательную, а последний — направление бинормали как -1 или 1.

TexUV = 4

Vector2[] для UV-координат.

TexUV2 = 5

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

Vertex = 0

Vector3[], Vector2[] или Reckfell.Collections.Array позиций вершин.

Weights = 11

float[] или double[] весов костей в диапазоне от 0.0 до 1.0 (включительно). Содержит 4 или 8 чисел на вершину в зависимости от наличия флага Mesh.ArrayFormat.FlagUse8BoneWeights.

Mesh.BlendShapeMode

ЗначениеОписание
Normalized = 0

Формы смешивания нормализованы.

Relative = 1

Формы смешивания определяются относительно базового веса.

Mesh.PrimitiveType

ЗначениеОписание
LineStrip = 2

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

Lines = 1

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

Points = 0

Отобразить массив в виде точек (одна вершина равна одной точке).

TriangleStrip = 4

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

Triangles = 3

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

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.