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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Операции

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

  • Creations - Создание новой геометрии из другого математического объекта.
    • Лофт - создание сетки путем создания формы по двум или более кривым профиля.
    • Выдавливание - создание поверхности путем протягивания кривой профиля или поверхности многоугольника вдоль прямой или линейной линии.
    • Вращение - создание сетки путем вращения (вращения) фигуры вокруг оси.
    • Марширующие кубы - алгоритм построения сетки из неявной функции
  • Двоичное создание - создание новой сетки на основе двоичной операции двух других сеток.
    • Добавить - логическое добавление двух или более сеток.
    • Вычитание - логическое вычитание двух или более сеток.
    • Intersect - логическое пересечение
    • Union - логическое объединение двух или более сеток
    • Прикрепить - прикрепить одну сетку к другой (удалив внутренние поверхности).
    • Фаска - создание скошенной поверхности, которая плавно соединяет две поверхности.
  • Деформации - перемещайте только вершины сетки.
    • Деформировать - систематически перемещать вершины (согласно определенным функциям или правилам)
    • Взвешенная деформация - перемещение вершин на основе локализованных весов на вершину
    • Морфинг - плавное перемещение вершин между исходной и целевой сетками
    • Bend - переместите вершины, чтобы «согнуть» объект.
    • Twist - Переместите вершины, чтобы "скрутить" объект.
  • Манипуляции - изменение геометрии сетки, но не обязательно топологии.
    • Смещение - введение дополнительной геометрии на основе «карты смещения» от поверхности.
    • Упростить - систематически удалять и усреднять вершины
    • Subdivide - вводить новые вершины в сетку, разделяя каждую грань. В случае, например, Catmull-Clark , подразделение также может иметь эффект сглаживания для сеток, к которым оно применяется.
    • Выпуклая оболочка - создание выпуклой сетки, которая минимально охватывает данную сетку.
    • Вырезать - создать отверстие в поверхности сетки.
    • Вышивка - закрытие дыры в поверхности сетки.
  • Измерения - вычислить некоторое значение сетки
    • Объем - вычисление трехмерного объема сетки (дискретный объемный интеграл)
    • Площадь поверхности - вычисление площади поверхности сетки (дискретный интеграл поверхности)
    • Обнаружение столкновений - определите, столкнулись ли две сложные движущиеся сетки
    • Подгонка - создание параметрической поверхности (NURBS, бикубический сплайн) путем подгонки ее к заданной сетке.
    • Расстояние между точкой и поверхностью - вычислить расстояние от точки до сетки.
    • Расстояние от линии до поверхности - вычислить расстояние от линии до сетки.
    • Пересечение линии и поверхности - вычисление пересечения линии и сетки
    • Поперечное сечение - вычисление кривых, созданных поперечным сечением плоскости через сетку.
    • Центроид - вычисление центроида, геометрического центра сетки.
    • Center-of-Mass - вычисление центра масс, точки баланса сетки.
    • Circumcenter - вычислить центр круга или сферы, охватывающей элемент сетки.
    • Incenter - вычисление центра круга или сферы, заключенной в элемент сетки.

Расширения

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

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

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

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

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

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

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

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

использованная литература

  1. OpenGL SuperBible (3-е изд.) Ричарда С. Райта и Бенджамина Липчака ISBN  0-672-32601-9
  2. Руководство по программированию OpenGL: официальное руководство по изучению OpenGL, версия 1.4, четвертое издание, выпущенное Советом по обзору архитектуры OpenGL ISBN  0-321-17348-1
  3. Справочное руководство OpenGL (R): официальный справочный документ по OpenGL, версия 1.4 (4-е издание) от Совета по обзору архитектуры OpenGL 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