Jump to content

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

Полигональная сетка дельфина

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Операции

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

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

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

Расширения

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

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

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

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

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

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

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

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

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

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

См. также

[ редактировать ]
  1. ^ «Примитив — OpenGL Wiki» . www.opengl.org .
  2. ^ «Использование базового эффекта с текстурированием» . msdn.microsoft.com .
  3. ^ «Метод полигонального моделирования» . Проверено 19 апреля 2022 г.
  4. ^ Рыбицки, Джо (декабрь 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.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 899aa6be79ae9e6ae35c5aaffdaf0a6c__1700140320
URL1:https://arc.ask3.ru/arc/aa/89/6c/899aa6be79ae9e6ae35c5aaffdaf0a6c.html
Заголовок, (Title) документа по адресу, URL1:
Polygonal modeling - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)