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

Метод моделирования объектов
Полигональная сетка дельфина

В 3D компьютерной графике полигональное моделирование — это подход к моделированию объектов путем представления или аппроксимации их поверхностей с помощью полигональных сеток . Полигональное моделирование хорошо подходит для рендеринга растровых линий и поэтому является методом выбора для компьютерной графики в реальном времени . Альтернативные методы представления 3D-объектов включают поверхности NURBS , поверхности подразделения и представления на основе уравнений (неявные поверхности), используемые в трассировщиках лучей .

Геометрическая теория и многоугольники

Базовым объектом, используемым в моделировании сетки, является вершина , точка в трехмерном пространстве. Две вершины, соединенные прямой линией, становятся ребром . Три вершины, соединенные друг с другом тремя ребрами, определяют треугольник , который является простейшим многоугольником в евклидовом пространстве . Более сложные многоугольники могут быть созданы из нескольких треугольников или как один объект с более чем 3 вершинами. Четырехсторонние многоугольники (обычно называемые квадратами) [1] [2] и треугольники являются наиболее распространенными формами, используемыми в полигональном моделировании. Группа многоугольников, соединенных друг с другом общими вершинами, обычно называется элементом . Каждый из многоугольников, составляющих элемент, называется гранью .

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

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

Группа полигонов, соединенных общими вершинами, называется сеткой . Для того чтобы сетка выглядела привлекательно при рендеринге , желательно, чтобы она не была самопересекающейся , то есть чтобы ни одно ребро не проходило через полигон. Другой способ взглянуть на это — сетка не может пронзить сама себя. Также желательно, чтобы сетка не содержала никаких ошибок, таких как удвоенные вершины, ребра или грани. Для некоторых целей важно, чтобы сетка была многообразием , то есть не содержала дыр или сингулярностей (мест, где два отдельных участка сетки соединены одной вершиной).

Построение полигональных сеток

Хотя можно построить сетку, вручную указав вершины и грани, гораздо чаще сетки строят с помощью различных инструментов. Для построения полигональных сеток доступно большое количество пакетов программного обеспечения для 3D-графики .

Одним из наиболее популярных методов построения сеток является блочное моделирование , которое использует два простых инструмента:

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

Второй распространенный метод моделирования иногда называют моделированием инфляции или моделированием выдавливания . В этом методе пользователь создает 2D-форму, которая обрисовывает контур объекта с фотографии или рисунка. [3] Затем пользователь использует второе изображение объекта с другого ракурса и выдавливает 2D-форму в 3D, снова следуя контуру формы. Этот метод особенно распространен для создания лиц и голов. В общем, художник моделирует половину головы, а затем дублирует вершины, инвертирует их расположение относительно некоторой плоскости и соединяет две части вместе. Это гарантирует, что модель будет симметричной.

Другой распространенный метод создания полигональной сетки — это соединение различных примитивов , которые являются предопределенными полигональными сетками, созданными средой моделирования. Распространенные примитивы включают:

  • Кубики
  • Пирамиды
  • Цилиндры
  • 2D-примитивы, такие как квадраты, треугольники и диски
  • Специализированные или эзотерические примитивы, такие как чайник из Юты или Сюзанна, обезьянка-талисман Blender .
  • Сферы. Сферы обычно представляются одним из двух способов:
    • Икосферы — это икосаэдры , которые имеют достаточное количество треугольников, чтобы напоминать сферу.
    • Ультрафиолетовые сферы состоят из квадратов и напоминают сетку, которую можно увидеть на некоторых глобусах: квадраты больше вблизи «экватора» сферы и меньше вблизи «полюсов», в конечном итоге заканчиваясь одной вершиной.

Наконец, существуют некоторые специализированные методы построения высоко- или низкодетализированных сеток. Моделирование на основе эскизов — это удобный интерфейс для быстрого построения низкодетализированных моделей, в то время как 3D-сканеры могут использоваться для создания высокодетализированных сеток на основе существующих реальных объектов практически автоматически. Эти устройства очень дороги и, как правило, используются только исследователями и профессионалами отрасли, но могут генерировать высокоточные субмиллиметровые цифровые представления.

Операции

Существует очень большое количество операций, которые можно выполнять с полигональными сетками. Некоторые из них примерно соответствуют реальным манипуляциям с 3D-объектами, а другие — нет. Операции с полигональными сетками включают:

  • Творения — создание новой геометрии из другого математического объекта.
    • Лофт — создание сетки путем создания формы вдоль двух или более кривых профиля.
    • Выдавливание — создает поверхность путем вытягивания кривой профиля или многоугольной поверхности вдоль прямой или линейной линии.
    • Вращение — создание сетки путем вращения (вращения) фигуры вокруг оси.
    • Марширующие кубы - Алгоритм построения сетки из неявной функции
  • Бинарные создания — создание новой сетки из бинарной операции двух других сеток.
    • Добавить — логическое сложение двух или более сеток.
    • Вычитание — логическое вычитание двух или более сеток.
    • Пересечение - Булево пересечение
    • Объединение — логическое объединение двух или более сеток.
    • Прикрепить - Прикрепить одну сетку к другой (удалив внутренние поверхности)
    • Фаска — создание скошенной поверхности, которая плавно соединяет две поверхности.
  • Деформации — перемещение только вершин сетки.
    • Деформировать — систематически перемещать вершины (согласно определенным функциям или правилам)
    • Взвешенная деформация — перемещение вершин на основе локализованных весов на вершину.
    • Морф — плавное перемещение вершин между исходной и целевой сеткой.
    • Изгиб — перемещайте вершины, чтобы «изогнуть» объект.
    • Скручивание — перемещайте вершины, чтобы «скрутить» объект.
  • Манипуляции — изменение геометрии сетки, но не обязательно топологии.
    • Displace — введение дополнительной геометрии на основе «карты смещения» с поверхности.
    • Упростить — систематически удалять и усреднять вершины
    • Subdivide - Вводит новые вершины в сетку, подразделяя каждую грань. В случае, например, Catmull-Clark , подразделение также может иметь эффект сглаживания на сетках, к которым оно применяется.
    • Выпуклая оболочка — создание выпуклой сетки, которая минимально охватывает заданную сетку.
    • Вырезать — создать отверстие в сетчатой ​​поверхности.
    • Стежок — закрытие отверстия в сетчатой ​​поверхности
  • Измерения - вычисление некоторого значения сетки
    • Объем - вычисление трехмерного объема сетки (дискретный объемный интеграл)
    • Площадь поверхности - вычислить площадь поверхности сетки (дискретный поверхностный интеграл)
    • Обнаружение столкновений — определение факта столкновения двух сложных движущихся сеток.
    • Подгонка — построение параметрической поверхности (NURBS, бикубический сплайн) путем подгонки ее к заданной сетке.
    • Расстояние от точки до поверхности — вычисление расстояния от точки до сетки.
    • Расстояние от линии до поверхности — вычисление расстояния от линии до сетки.
    • Пересечение линии и поверхности — вычисление пересечения линии и сетки.
    • Поперечное сечение — вычисление кривых, созданных поперечным сечением плоскости через сетку.
    • Центроид — вычисление центроида, геометрического центра сетки.
    • Центр масс — вычисление центра масс, точки равновесия сетки.
    • Окружность - вычисление центра окружности или сферы, охватывающей элемент сетки.
    • Incenter — вычисление центра круга или сферы, заключенной в элемент сетки.

Расширения

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

Чтобы отобразить модель на экране компьютера вне среды моделирования, необходимо сохранить эту модель в одном из перечисленных ниже форматов файлов , а затем использовать или написать программу, способную загружать из этого формата. Два основных метода отображения 3D-полигональных моделей — OpenGL и Direct3D . Оба эти метода можно использовать как с графической картой с 3D-ускорением, так и без нее .

Преимущества и недостатки

Представление объекта с помощью полигонов имеет много недостатков. Полигоны не способны точно представлять кривые поверхности, поэтому для аппроксимации кривых визуально привлекательным образом необходимо использовать большое их количество. Использование сложных моделей имеет свою цену в снижении скорости. При преобразовании в строку сканирования каждый полигон должен быть преобразован и отображен независимо от размера, и на экране часто одновременно находится большое количество моделей. Часто программистам приходится использовать несколько моделей с разным уровнем детализации для представления одного и того же объекта, чтобы сократить количество отображаемых полигонов.

Главное преимущество полигонов в том, что они быстрее других представлений. В то время как современная видеокарта может отображать высокодетализированную сцену с частотой кадров 60 кадров в секунду или выше, поверхностные моделлеры , основной способ отображения неполигональных моделей, не способны достичь интерактивной частоты кадров (10 кадров/с или выше) с аналогичным количеством деталей. Со спрайтами , другой альтернативой полигонам, каждая требуемая поза должна быть создана индивидуально, в то время как отдельная полигональная модель может выполнять любое движение, если применяются соответствующие данные о движении, и может просматриваться под любым углом. [4]

Форматы файлов

Для хранения данных 3D-полигонов доступны различные форматы. Наиболее популярными являются:

Смотрите также

Ссылки

  1. ^ "Примитив - OpenGL Wiki". www.opengl.org .
  2. ^ «Использование базового эффекта с текстурированием». msdn.microsoft.com .
  3. ^ "Метод полигонального моделирования" . Получено 2022-04-19 .
  4. ^ Рыбицки, Джо (декабрь 1996 г.). «Создание NBA Live 97». Electronic Gaming Monthly . № 89. Ziff Davis . стр. 301.

Библиография

  1. OpenGL SuperBible (3-е изд.), Ричард С. Райт и Бенджамин Липчак ISBN 0-672-32601-9 
  2. Руководство по программированию OpenGL: официальное руководство по изучению OpenGL, версия 1.4, четвертое издание, выпущенное OpenGL Architecture Review Board ISBN 0-321-17348-1 
  3. Справочное руководство OpenGL(R): официальный справочный документ по OpenGL, версия 1.4 (4-е издание) от OpenGL Architecture Review Board ISBN 0-321-17383-X 
  4. Документация Blender: https://web.archive.org/web/20051212074804/http://blender.org/cms/Documentation.628.0.html
  5. Документация Maya: входит в комплект Alias ​​Maya, http://www.alias.com/eng/index.shtml
Взято с "https://en.wikipedia.org/w/index.php?title=Полигональное_моделирование&oldid=1185415049"