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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Операции

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

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

Расширения

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

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

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

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

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

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

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

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

Рекомендации

  1. ^ «Примитивный - OpenGL Wiki». www.opengl.org.
  2. ^ «Использование базового эффекта с текстурированием». msdn.microsoft.com.
  3. ^ Рыбицки, Джо (декабрь 1996). «Создание NBA Live 97». Ежемесячный отчет об электронных играх. №89. Зифф Дэвис. п. 301.
  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