Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

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

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

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

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

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

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

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

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

  • Кубики
  • Пирамиды
  • Цилиндров
  • 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]

Форматы файлов [ править ]

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

  • .3ds, .max, связанный с 3D Studio Max.
  • .blend, связанный с Blender.
  • .c4d, связанный с Cinema 4D
  • .dae ( КОЛЛАДА )
  • . dxf , .dwg, .dwf, связанные с AutoCAD
  • .fbx (ранее Autodesk. Kaydara Filmbox)
  • .jt изначально разработан Siemens PLM Software ; теперь стандарт ISO .
  • .lwo, связанный с Lightwave
  • .lxo, связанный с MODO
  • .mb и .ma, которые связаны с Maya
  • .md2 , .md3 , связанные с серией игр Quake
  • .MDL используется с Valve «s Source Engine
  • .nif ( NetImmerse / gamebryo )
  • .obj (Расширенный визуализатор Wavefront)
  • .ply используется для хранения данных с 3D-сканеров
  • .rwx (Renderware).
  • .stl используется в быстром прототипировании
  • .u3d ( универсальный 3D )
  • .wrl (VRML 2.0)

См. Также [ править ]

  • Метод конечных элементов
  • Генерация сетки
  • Полигон (компьютерная графика)
  • Многоугольная сетка
  • Векторная графика
  • Обработка геометрии
  • 3D моделирование

Ссылки [ править ]

  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