Процедурная геометрия: выбрать API
ArrayMesh, SurfaceTool, MeshDataTool, ImmediateMesh, MultiMesh и серверные RID по реальным задачам.
Выбрать по данным и частоте изменений
| Задача | API | Когда подходит |
|---|---|---|
| Уже есть массивы позиций, нормалей, UV и индексов | ArrayMesh | Прямое создание поверхностей |
| Удобнее выдавать вершины по одной и вычислить нормали/tangents | SurfaceTool | Подготовка меша с атрибутами |
| Нужны связи вершин, рёбер и граней существующей поверхности | MeshDataTool | Анализ и изменение топологии треугольников |
| Немного часто меняющихся линий или треугольников | ImmediateMesh | Небольшая диагностическая геометрия |
| Много экземпляров одного меша | MultiMeshInstance3D | Общая геометрия, разные преобразования/цвета |
| Нужен собственный учёт отображаемых экземпляров без MeshInstance3D | RenderingServer | Явное владение RID и работа со сценарием рендеринга |
Mesh — ресурс геометрии. MeshInstance3D — Entity, которая его показывает. MultiMesh — ресурс множества экземпляров, MultiMeshInstance3D — показывающая его Entity. Создание одного ресурса само по себе ничего не добавляет в видимый мир и не создаёт коллайдер.
Поверхность и вершина
Меш содержит поверхности; каждая имеет свой набор атрибутов, тип примитивов и материал. Вершина включает не только позицию, но и её нормаль, UV, цвет и другие включённые данные. На UV-шве или жёстком ребре одинаковая позиция может требовать нескольких вершин. Индекс относится к полному набору атрибутов, а не к единственной геометрической точке.
Для Triangles каждая тройка индексов задаёт треугольник. В примерах четыре вершины и шесть индексов образуют квадрат. Порядок обхода определяет лицевую сторону; нормали определяют освещение. Отключение отсечения обратных граней не исправляет ошибочные индексы или нормали.
Общая подготовка примеров
Используйте C#-проект Reckfell 1.0.0, отдельный уровень с корнем Entity3D и базовый viewport 640×420. В каждой статье перечислены все нужные файлы. GeometryStage3D создаёт только камеру, свет, пол и подпись; основной компонент строит изучаемую геометрию. После сборки запускайте уровень F6.
Массивы можно вычислять отдельно от отображения. Изменения Mesh, дерева Entity и серверных экземпляров в этих примерах выполняются в главном потоке. Дорогие чтения данных обратно из renderer и полная пересборка меша каждый кадр требуют измерений. Эти примеры проверяют правильность на Windows/OpenGL, а не обещанное ускорение или готовность к экспорту на все платформы.