stringtranslate.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Операции

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

Расширения

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

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

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

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

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

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

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

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

Ссылки

  1. ^ "Примитив - OpenGL Wiki". www.opengl.org .
  2. ^ «Использование базового эффекта с текстурированием». msdn.microsoft.com .
  3. ^ "Метод полигонального моделирования" . Получено 2022-04-19 .
  4. ^ Рыбицки, Джо (декабрь 1996 г.). «Создание NBA Live 97». Electronic Gaming Monthly . № 89. Ziff Davis . стр. 301.

Библиография

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