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

редактировать

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

Содержание
  • 1 Геометрическая теория и многоугольники
  • 2 Построение полигональных сеток
  • 3 Операции
  • 4 Расширения
  • 5 Преимущества и недостатки
  • 6 Форматы файлов
  • 7 См. Также
  • 8 Ссылки
Геометрическая теория и многоугольники

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

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

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

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

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

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

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

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

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

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

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

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

Операции

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

  • Создание - создание новой геометрии из какого-либо другого математического объекта
    • Loft - создание сетки путем создания формы по двум или более кривым профиля
    • Extrude - создает поверхность протягивая профильную кривую или поверхность многоугольника вдоль прямой или линейной линии
    • Вращать - генерировать сетку путем вращения (вращения) фигуры вокруг оси
    • Марширующие кубы - алгоритм построения сетки из неявная функция
  • Создание двоичных файлов - создание новой сетки из двоичной операции двух других сеток
    • Добавить - логическое сложение двух или более сеток
    • Вычитание - логическое вычитание две или более сетки
    • Intersect - логическое пересечение
    • Union - логическое объединение двух или более сеток
    • Attach - прикрепить одну сетку к другой (удаление внутренних поверхностей)
    • Фаска - создание скошенной поверхности, которая плавно соединяет две поверхности
  • Деформации - перемещение только вершин сетки
    • Деформация - систематическое перемещение пять вершин (в соответствии с определенными функциями или правилами)
    • Weighted Deform - перемещение вершин на основе локализованных весов на вершину
    • Morph - плавное перемещение вершин между исходной и целевой сетками
    • Bend - переместить вершины, чтобы «согнуть» объект
    • Twist - переместить вершины, чтобы «скрутить» объект
  • Манипуляции - Изменить геометрию меша, но не обязательно топологию
    • Displace - ввести дополнительную геометрию на основе «карты смещения» от поверхности
    • Упростить - систематически удалять и усреднять вершины
    • Подразделить - сгладить курсовую сетку путем разделения сетки (Катмулл-Кларк и т. д.)
    • Convex Hull - создать другую сетку, которая минимально охватывает данную сетку (например, термоусадочная пленка)
    • Cut - создать отверстие в поверхности сетки
    • Stitch - закрыть отверстие на поверхности сетки
  • Измерения - Вычислить какое-то значение сетки
    • Объем - вычислить трехмерный объем сетки (дискретный объемный интеграл)
    • Площадь поверхности - вычислить площадь поверхности сетка (интеграл дискретной поверхности)
    • Обнаружение столкновений - определение столкновения двух движущихся сложных сеток
    • Подгонка - построение параметрической поверхности (NURBS, бикубический сплайн) путем подгонки ее к заданной сетке
    • Расстояние от точки до поверхности - вычислить расстояние от точки до сетки
    • Расстояние от линии до поверхности - вычислить расстояние от линии до сетки
    • Пересечение линии с поверхностью - вычислить пересечение линии и сетки
    • Поперечное сечение - вычисление кривых, образованных поперечным сечением плоскости через сетку
    • Центроид - вычисление центроида, геометрического центра сетки
    • Центр масс - вычисление центра масс, точки баланса сетки
    • Circumcenter - вычисление центра круга или сферы, охватывающей элемент сетки
    • Incenter - вычисление центра круга или сферы, заключенной в элемент сетки
Расширения

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

Для отображения модели на экране компьютера вне среды моделирования необходимо сохранить эту модель в одном из файлов . форматы, перечисленные ниже, а затем используйте или напишите программу, способную загружаться из этого формата. Двумя основными методами отображения трехмерных полигональных моделей являются 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
Последняя правка сделана 2021-06-02 10:30:55
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте