Полигональное моделирование
В 3D-компьютерной графике полигональное моделирование — это подход к моделированию объектов путем представления или аппроксимации их поверхностей с помощью полигональных сеток . Полигональное моделирование хорошо подходит для рендеринга строк развертки и поэтому является предпочтительным методом для компьютерной графики в реальном времени . Альтернативные методы представления 3D-объектов включают поверхности NURBS , поверхности подразделения и представления на основе уравнений (неявная поверхность), используемые в трассировщиках лучей .
Геометрическая теория и многоугольники
[ редактировать ]Основным объектом, используемым при моделировании сетки, является вершина , точка в трехмерном пространстве. Две вершины, соединенные прямой линией, становятся ребром . Три вершины, соединенные друг с другом тремя ребрами, определяют треугольник , который является простейшим многоугольником в евклидовом пространстве . Более сложные многоугольники можно создавать из нескольких треугольников или как один объект с более чем тремя вершинами. Четырехсторонние многоугольники (обычно называемые четырехугольниками) [1] [2] а треугольники — наиболее распространенные формы, используемые в полигональном моделировании. Группа многоугольников, соединенных друг с другом общими вершинами, обычно называется элементом . Каждый из полигонов, составляющих элемент, называется гранью .
В евклидовой геометрии любые три неколлинеарные точки определяют плоскость . По этой причине треугольники всегда обитают в одной плоскости. Однако это не обязательно верно для более сложных полигонов. Плоская природа треугольников упрощает определение нормали к их поверхности — трехмерного вектора, перпендикулярного поверхности треугольника. Нормали поверхности полезны для определения переноса света при трассировке лучей и являются ключевым компонентом популярной модели затенения Фонга . Некоторые системы рендеринга используют нормали вершин вместо нормалей граней, чтобы создать более красивую систему освещения за счет дополнительной обработки. Обратите внимание, что у каждого треугольника есть две нормали граней, которые указывают в противоположные стороны друг от друга. Во многих системах только одна из этих нормалей считается допустимой — другая сторона многоугольника называется обратной стороной и может быть сделана видимой или невидимой в зависимости от желания программиста.
Многие программы моделирования не строго соблюдают геометрическую теорию; например, две вершины могут иметь два разных соединяющих их ребра, занимающих одно и то же пространственное положение. Также возможно, что две вершины могут находиться в одних и тех же пространственных координатах или две грани могут находиться в одном и том же месте. Подобные ситуации обычно нежелательны, и многие пакеты поддерживают функцию автоматической очистки. Однако если автоматическая очистка отсутствует, их необходимо удалить вручную.
Группа многоугольников, соединенных общими вершинами, называется сеткой . Чтобы сетка выглядела привлекательно при рендеринге , желательно, чтобы она не была самопересекающейся , то есть ни одно ребро не проходило через многоугольник. Другой взгляд на это заключается в том, что сетка не может пробить сама себя. Также желательно, чтобы сетка не содержала ошибок, таких как удвоение вершин, ребер или граней. Для некоторых целей важно, чтобы сетка была многообразием , то есть чтобы она не содержала дыр или сингулярностей (мест, где две отдельные части сетки соединяются одной вершиной).
Построение полигональных сеток
[ редактировать ]Хотя можно построить сетку, указав вершины и грани вручную, гораздо чаще сетки создаются с использованием различных инструментов. широкий выбор пакетов программного обеспечения для 3D-графики Для построения полигональных сеток доступен .
Одним из наиболее популярных методов построения сеток является блочное моделирование , при котором используются два простых инструмента:
- Инструмент разделения разбивает грани и ребра на более мелкие части, добавляя новые вершины. Например, квадрат можно разделить, добавив одну вершину в центре и по одной на каждом краю, создав четыре меньших квадрата.
- Инструмент выдавливания применяется к грани или группе граней. Он создает новую грань того же размера и формы, которая соединяется с каждым из существующих ребер гранью. Таким образом, выполнение операции выдавливания на квадратной грани приведет к созданию куба, соединенного с поверхностью в том месте, где находится грань.
Второй распространенный метод моделирования иногда называют инфляционным моделированием или моделированием экструзии . В этом методе пользователь создает 2D-фигуру, которая повторяет контур объекта по фотографии или рисунку. [3] Затем пользователь использует второе изображение объекта под другим углом и вытягивает 2D-форму в 3D, снова следуя контуру формы. Этот метод особенно распространен для создания лиц и голов. В общем, художник моделирует половину головы, затем дублирует вершины, инвертирует их расположение относительно некоторой плоскости и соединяет две части вместе. Это гарантирует, что модель будет симметричной.
Другой распространенный метод создания полигональной сетки — это соединение различных примитивов , которые представляют собой заранее определенные полигональные сетки, созданные средой моделирования. Общие примитивы включают в себя:
- Кубики
- Пирамиды
- Цилиндры
- 2D-примитивы, такие как квадраты, треугольники и диски.
- Специализированные или эзотерические примитивы, такие как Чайник Юты или Сюзанна, Блендера . талисман обезьяны
- Сферы. Сферы обычно представляются одним из двух способов:
- Икосферы — это икосаэдры , которые имеют достаточное количество треугольников, чтобы напоминать сферу.
- УФ-сферы состоят из четырехугольников и напоминают сетку, которую можно увидеть на некоторых глобусах: четырехугольники больше возле «экватора» сферы и меньше возле «полюсов», в конечном итоге заканчиваясь одной вершиной.
Наконец, существуют некоторые специализированные методы построения сеток с высокой или низкой детализацией. Моделирование на основе эскизов — это удобный интерфейс для быстрого создания моделей с низкой детализацией, а 3D-сканеры можно использовать для создания сеток с высокой детализацией на основе существующих объектов реального мира почти автоматическим способом. Эти устройства очень дороги и обычно используются только исследователями и профессионалами отрасли, но могут генерировать высокоточные субмиллиметровые цифровые изображения.
Операции
[ редактировать ]Существует очень большое количество операций, которые можно выполнять с полигональными сетками. Некоторые из них примерно соответствуют реальным манипуляциям с 3D-объектами, а другие нет. Операции с полигональной сеткой включают в себя:
- Создание — создание новой геометрии из другого математического объекта.
- Лофт — создание сетки путем создания формы вдоль двух или более кривых профиля.
- Выдавливание — создает поверхность путем сдвига кривой профиля или поверхности многоугольника вдоль прямой или линейной линии.
- Вращение — создание сетки путем вращения (вращения) фигуры вокруг оси.
- Марширующие кубы — алгоритм построения сетки из неявной функции.
- Двоичные создания — создайте новую сетку из бинарной операции двух других сеток.
- Add — логическое добавление двух или более сеток.
- Subtract — логическое вычитание двух или более сеток.
- Intersect — логическое пересечение
- Union — логическое объединение двух или более сеток.
- Attach - Прикрепить одну сетку к другой (удалив внутренние поверхности)
- Фаска — создание скошенной поверхности, которая плавно соединяет две поверхности.
- Деформации — перемещайте только вершины сетки.
- Деформировать — Систематически перемещать вершины (в соответствии с определёнными функциями или правилами).
- Взвешенная деформация — перемещение вершин на основе локализованного веса каждой вершины.
- Морфинг — плавное перемещение вершин между исходной и целевой сеткой.
- Bend — переместите вершины, чтобы «согнуть» объект.
- Twist — перемещайте вершины, чтобы «повернуть» объект.
- Манипуляции — изменяйте геометрию сетки, но не обязательно топологию.
- Displace — введение дополнительной геометрии на основе «карты смещения» от поверхности.
- Упростить — систематически удалять и усреднять вершины.
- Subdivide — вводите в сетку новые вершины, разделяя каждую грань. В случае, например, Catmull-Clark подразделение также может оказывать сглаживающий эффект на сетки, к которым оно применяется.
- Выпуклая оболочка — создание выпуклой сетки, минимально охватывающей заданную сетку.
- Вырезать — создать отверстие в поверхности сетки.
- Стежок — закрытие отверстия на сетчатой поверхности.
- Измерения – вычисление некоторого значения сетки.
- Объем — вычисление трехмерного объема сетки (дискретный объемный интеграл).
- Площадь поверхности — вычисление площади поверхности сетки (дискретный интеграл поверхности).
- Обнаружение столкновений. Определите, столкнулись ли две сложные сетки в движении.
- Подгонка. Постройте параметрическую поверхность (NURBS, бикубический сплайн), подобрав ее к заданной сетке.
- Расстояние между точкой и поверхностью — вычисление расстояния от точки до сетки.
- Расстояние между линией и поверхностью — вычисление расстояния от линии до сетки.
- Пересечение линии и поверхности — вычисление пересечения линии и сетки.
- Поперечное сечение — расчет кривых, созданных поперечным сечением плоскости через сетку.
- Центроид — вычисление центроида, геометрического центра сетки.
- Центр масс — вычисление центра масс и точки баланса сетки.
- Центр окружности — вычисление центра круга или сферы, охватывающей элемент сетки.
- Incenter — вычисление центра круга или сферы, заключенной в элемент сетки.
Расширения
[ редактировать ]После того, как полигональная сетка построена, необходимо предпринять дальнейшие шаги, прежде чем она будет полезна для игр, анимации и т. д. На модель должна быть нанесена текстура для добавления цветов и текстуры к поверхности, а также ей должен быть предоставлен скелет для анимации. Сети также могут быть назначены веса и центры тяжести для использования в физическом моделировании .
Чтобы отобразить модель на экране компьютера вне среды моделирования, необходимо сохранить эту модель в одном из форматов файлов , перечисленных ниже, а затем использовать или написать программу, способную загружаться из этого формата. Двумя основными методами отображения трехмерных полигональных моделей являются OpenGL и Direct3D . Оба эти метода можно использовать как с графической картой с 3D-ускорением, так и без нее .
Преимущества и недостатки
[ редактировать ]Представление объекта с помощью многоугольников имеет множество недостатков. Многоугольники неспособны точно отображать изогнутые поверхности, поэтому необходимо использовать большое их количество для аппроксимации кривых визуально привлекательным способом. Использование сложных моделей приводит к снижению скорости. При преобразовании строк развертки каждый многоугольник должен быть преобразован и отображен независимо от его размера, и в любой момент времени на экране часто присутствует большое количество моделей. Часто программистам приходится использовать несколько моделей с разным уровнем детализации для представления одного и того же объекта, чтобы сократить количество визуализируемых полигонов.
Основное преимущество полигонов заключается в том, что они работают быстрее, чем другие представления. В то время как современная видеокарта может отображать высокодетализированную сцену с частотой кадров 60 кадров в секунду или выше, средства моделирования поверхностей , основной способ отображения неполигональных моделей, не способны достичь интерактивной частоты кадров (10 кадров/с или более). выше) с таким же количеством деталей. При использовании спрайтов , еще одной альтернативы полигонам, каждая необходимая поза должна создаваться индивидуально, в то время как одна полигональная модель может выполнять любое движение, если применяются соответствующие данные движения, и ее можно просматривать под любым углом. [4]
Форматы файлов
[ редактировать ]Для хранения данных трехмерных полигонов доступны различные форматы. Наиболее популярными являются:
- .3ds, .max, связанный с 3D Studio Max.
- .blend, который связан с Blender
- .c4d, связанный с Cinema 4D
- .dae ( КОЛЛАДА )
- . dxf , .dwg, .dwf, связанные с AutoCAD
- .fbx (формы Autodesk. Kaydara Filmbox)
- .jt, первоначально разработанный Siemens Digital Industries Software ; теперь стандарт ISO .
- .lwo, который связан с Lightwave
- .lxo, который связан с MODO
- .mb и .ma, которые связаны с Maya.
- .md2 , .md3 , связанные с Quake . серией игр
- .mdl используется с Valve. от Source Engine
- .nif ( NetImmerse / gamebryo )
- .obj («Продвинутый визуализатор» Wavefront)
- .ply используется для хранения данных 3D-сканеров.
- .rwx (программное обеспечение рендеринга)
- .stl используется при быстром прототипировании
- .u3d ( Universal 3D )
- .wrl (VRML 2.0)
См. также
[ редактировать ]- Метод конечных элементов
- Генерация сетки
- Полигон (компьютерная графика)
- Полигональная сетка
- Векторная графика
- Обработка геометрии
- 3D modeling
Ссылки
[ редактировать ]- ^ «Примитив — OpenGL Wiki» . www.opengl.org .
- ^ «Использование базового эффекта с текстурированием» . msdn.microsoft.com .
- ^ «Метод полигонального моделирования» . Проверено 19 апреля 2022 г.
- ^ Рыбицки, Джо (декабрь 1996 г.). «Создание NBA Live 97». Ежемесячник электронных игр . № 89. Зифф Дэвис . п. 301.
Библиография
[ редактировать ]- OpenGL SuperBible (3-е изд.), Ричард С. Райт и Бенджамин Липчак ISBN 0-672-32601-9
- Руководство по программированию OpenGL: Официальное руководство по изучению OpenGL, версия 1.4, четвертое издание, Совет по обзору архитектуры OpenGL ISBN 0-321-17348-1
- Справочное руководство OpenGL(R): Официальный справочный документ по OpenGL, версия 1.4 (4-е издание), подготовленный Советом по обзору архитектуры OpenGL. ISBN 0-321-17383-X
- Документация по Blender: https://web.archive.org/web/20051212074804/http://blender.org/cms/Documentation.628.0.html.
- Документация Maya: в комплекте с Alias Maya, http://www.alias.com/eng/index.shtml.