Полигональное моделирование

Полигональное моделирование – это метод создания трёхмерных моделей объектов с использованием полигональных сеток (Polygonal meshes) – множества многоугольников (полигонов), чаще всего треугольников и четырёхугольников. Этот подход является одним из самых распространённых методов 3D-моделирования благодаря своей гибкости и универсальности.

Достоинства полигональных сеток следующие:

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

Недостатки полигонального моделирования:

  • Сложность управления детализацией: Чем больше деталей требуется добавить в модель, тем больше нужно использовать полигонов, что может привести к увеличению размера файла и снижению производительности.
  • Ограничения на органические формы: Хотя полигональные модели могут имитировать сложные объекты, создание гладких органических форм требует использования большого числа полигонов и специальных техник сглаживания.

Основные понятия полигональной модели

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

Рёбра (edges) – линии, соединяющие вершины.

Грани (faces или polygons) – поверхности, образованные рёбрами и вершинами. Чаще всего используются треугольники и четырехугольники.

Нормаль к полигону - вектор нормали задает направление перпендикуляра к плоскости грани. При рисовании объекта эта информация используется для определения того, сколько света рассеивается на данной грани, а также позволяет определять видимость грани наблюдателем.

Нормали в вершинах - использование нормалей к грани плохо подходит для визуализации гладких поверхностей, например, сферы (см. Рис.1). Удобнее связывать вектор нормали с каждой вершиной грани. Такой способ упрощает процесс отсечения и процесс закрашивания гладких криволинейных форм. Обычно для нахождения вектора нормали в вершине используют нормированную взвешенную сумму векторов нормали граней, которым эта вершина принадлежит.


Рис.1. Освещение сферы с использованием нормалей к граням и нормалей к вершинам.

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

Текстурные координаты (UV-координаты) – параметры, определяющие, как текстура будет наложена на поверхность модели.

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

Для работы большинства алгоритмов недостаточно иметь представление о сетке только как о наборе полигонов. Единственное, что можно сделать с такой сеткой, — это нарисовать ее и посчитать площадь. Для всего остального нужна некая топологическая структура, которая и является фундаментом в полигональном моделировании.

Эта структура содержит две основные составляющие. Во-первых, это топология сетки, которая описывает связи между вершинами, ребрами и полигонами. Она должна поддерживать не только треугольники, но и полигоны с произвольным числом сторон, или фасеты. И во вторых — обеспечение ряда базовых элементарных операций над ними, например такие, как упорядоченный обход фасетов соседних с выбранным, упорядоченный обход веера вершины, вставка вершины, перенос ребра и др.

Полигональные сетки позволяют задавать объекты двух типов:

  • Монолитные (solid) объекты - полигональные грани плотно примыкают друг к другу и ограничивают некоторое пространство. Примеры: куб, сфера.
  • Тонкие оболочки - полигональные грани примыкают друг к другу без ограничения пространства, представляя собой поверхность бесконечно малой толщины. Пример: график функции z=f(x,y).

Монолитный объект (или твёрдотельный объект) представляет собой замкнутую трёхмерную фигуру, у которой есть объём внутри. Это означает, что такая модель имеет не только внешнюю оболочку, но и внутреннюю структуру, заполняющую весь объем фигуры.

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

  • Монолитные объекты подходят для задач, требующих точного воспроизведения физических свойств объекта, например, в инженерных расчётах или симуляциях.
  • Тонкие оболочки предпочтительны там, где важнее внешний вид и производительность, например, в игровых движках или кинематографической графике.

Этапы работы над полигональной моделью

Создание полигональных 3D моделей включает несколько ключевых этапов:

Моделирование: На этом этапе создаётся геометрическая форма объекта.

  1. Создание базовой геометрии: Начальная стадия, когда создаётся грубая форма объекта с минимальным количеством полигонов.
  2. Ретопология: Процесс оптимизации топологии модели для улучшения её структуры и подготовки к дальнейшей детализации.
  3. Детализация: Добавление новых полигонов для увеличения уровня детализации модели.

Текстурирование: После создания модели на нее накладываются текстуры, которые определяют внешний вид поверхности объекта. Текстуры могут включать в себя цвета, узоры и другие визуальные элементы. Текстурирование может быть выполнено с использованием различных методов, таких как UV-развёртка, которая позволяет "разворачивать" поверхность модели на плоскость для наложения текстур.

Освещение: На этом этапе добавляются источники света, которые определяют, как объект будет освещён в сцене. Освещение играет важную роль в создании реалистичных изображений. Существуют различные типы источников света, такие как точечные источники, направленные источники и окружное освещение. Каждый тип источника света имеет свои особенности и может быть использован для создания различных эффектов.

Рендеринг: Это процесс преобразования 3D модели в двухмерное изображение или анимацию. Рендеринг может быть выполнен с использованием различных алгоритмов, таких как трассировка лучей или растеризация. Трассировка лучей позволяет создавать реалистичные изображения с учётом отражений, преломлений и теней, в то время как растеризация более быстрая, но менее точная.

Дополнительный материал: https://videouroki.net/razrabotki/polighonal-noie-modielirovaniie.html