В 3D компьютерной графике, полигональное моделирование - это подход к моделированию объектов путем представления или аппроксимировать их поверхности с помощью полигональных сеток. Полигональное моделирование хорошо подходит для рендеринга строк и, следовательно, является методом выбора для компьютерной графики в реальном времени. Альтернативные методы представления 3D-объектов включают NURBS поверхности, поверхности разделения и представления на основе уравнений, используемые в трассировщиках лучей.
Базовым объектом, используемым при моделировании сетки, является вершина, точка в трехмерном пространстве. Две вершины, соединенные прямой линией, становятся ребром . Три вершины, соединенные между собой тремя ребрами, образуют треугольник, который является простейшим многоугольником в евклидовом пространстве. Более сложные многоугольники могут быть созданы из нескольких треугольников или как один объект с более чем 3 вершинами. Четырехсторонние многоугольники (обычно называемые четырехугольниками) и треугольники являются наиболее распространенными формами, используемыми в многоугольном моделировании. Группа многоугольников, соединенных друг с другом общими вершинами, обычно называется элементом . Каждый из многоугольников, составляющих элемент, называется гранью .
. В евклидовой геометрии любые три неколлинеарные точки определяют плоскость. По этой причине треугольники всегда находятся в одной плоскости. Однако это не обязательно верно для более сложных полигонов. Плоский характер треугольников упрощает определение их нормали к поверхности, трехмерного вектора, перпендикулярного поверхности треугольника. Нормали поверхности полезны для определения переноса света при трассировке лучей и являются ключевым компонентом популярной модели затенения Фонга. Некоторые системы рендеринга используют нормали вершин вместо нормалей граней, чтобы создать более красивую систему освещения за счет дополнительной обработки. Обратите внимание, что каждый треугольник имеет две нормали граней, которые указывают в противоположных направлениях друг от друга. Во многих системах только одна из этих нормалей считается действительной - другая сторона многоугольника называется задней поверхностью и может быть сделана видимой или невидимой в зависимости от желания программиста.
Многие программы моделирования не строго придерживаются геометрической теории; например, две вершины могут иметь два разных ребра, соединяющих их, занимающих точно такое же пространственное положение. Также возможно, чтобы две вершины существовали в одних и тех же пространственных координатах, или две грани существовали в одном месте. Подобные ситуации обычно нежелательны, и многие пакеты поддерживают функцию автоматической очистки. Однако, если автоматическая очистка отсутствует, их необходимо удалить вручную.
Группа полигонов, соединенных общими вершинами, называется сеткой . Чтобы сетка выглядела привлекательной при визуализации, желательно, чтобы она была несамопересекающейся, что означает, что никакая грань не проходит через многоугольник. С другой стороны, сетка не может пробить сама себя. Также желательно, чтобы сетка не содержала ошибок, таких как удвоение вершин, ребер или граней. Для некоторых целей важно, чтобы сетка была многообразием, т. Е. Чтобы она не содержала дыр или сингулярностей (мест, где два различных участка сетки соединены одной вершиной).
Хотя можно построить сетку, задав вручную вершины и грани, гораздо чаще строить сетки с использованием различных инструментов. Для построения полигональных сеток доступно большое количество пакетов программного обеспечения для трехмерной графики.
Одним из наиболее популярных методов построения сеток является блочное моделирование, в котором используются два простых инструмента:
Второй распространенный метод моделирования иногда называют моделированием раздувания или моделирование экструзии . В этом методе пользователь создает 2D-форму, которая отслеживает контур объекта на фотографии или чертеже. Затем пользователь использует второе изображение объекта под другим углом и выдавливает двухмерную фигуру в трехмерную, снова следуя ее контуру. Этот метод особенно распространен для создания лиц и голов. В общем, художник моделирует половину головы, а затем дублирует вершины, инвертирует их положение относительно некоторой плоскости и соединяет две части вместе. Это гарантирует, что модель будет симметричной.
Другой распространенный метод создания полигональной сетки - это соединение вместе различных примитивов, которые представляют собой предварительно определенные полигональные сетки, созданные средой моделирования. Общие примитивы включают:
Наконец, существуют некоторые специализированные методы построения сеток с высокой или низкой детализацией. Моделирование на основе эскизов - это удобный интерфейс для быстрого построения моделей с низкой детализацией, а 3D-сканеры можно использовать для создания высокодетализированных сеток на основе существующих реальных объектов практически автоматически. путь. Эти устройства очень дороги и обычно используются только исследователями и профессионалами отрасли, но могут генерировать субмиллиметровые цифровые изображения высокой точности.
Существует очень большое количество операций, которые можно выполнять с полигональными сетками. Некоторые из них примерно соответствуют реальным манипуляциям с 3D-объектами, а другие нет. К операциям с полигональной сеткой относятся:
После того, как многоугольная сетка построена, необходимо предпринять дальнейшие шаги, прежде чем она будет полезна для g. изображения, анимация и т. д. Модель должна иметь отображение текстуры, чтобы добавить цвета и текстуру к поверхности, и ей должен быть задан скелет для анимации. Сеткам также могут быть назначены веса и центры тяжести для использования в физическом моделировании.
Для отображения модели на экране компьютера вне среды моделирования необходимо сохранить эту модель в одном из файлов . форматы, перечисленные ниже, а затем используйте или напишите программу, способную загружаться из этого формата. Двумя основными методами отображения трехмерных полигональных моделей являются OpenGL и Direct3D. Оба эти метода можно использовать с графической картой с 3D-ускорением или без нее..
Представление объекта с помощью многоугольников имеет много недостатков. Многоугольники не могут точно отображать изогнутые поверхности, поэтому необходимо использовать большое их количество для аппроксимации кривых в визуально привлекательной манере. Использование сложных моделей требует снижения скорости. В преобразовании строки развертки каждый многоугольник должен быть преобразован и отображен независимо от размера, и часто на экране в любой момент времени отображается большое количество моделей. Часто программисты должны использовать несколько моделей с разными уровнями детализации для представления одного и того же объекта, чтобы сократить количество отображаемых полигонов.
Главное преимущество полигонов в том, что они быстрее других представлений. В то время как современная видеокарта может отображать высокодетализированную сцену с частотой кадров 60 кадров в секунду или выше, разработчики моделей поверхности, основной способ отображения неполигональных моделей, не могут достижения интерактивной частоты кадров (10 кадров / с или выше) с аналогичным количеством деталей. В спрайтах, другой альтернативе многоугольникам, каждая требуемая поза должна создаваться индивидуально, в то время как отдельная многоугольная модель может выполнять любое движение, если применяются соответствующие данные движения, и ее можно просматривать под любым углом.
Для хранения данных трехмерных полигонов доступны различные форматы. Наиболее популярными являются: