Что такое полигон модели
Полигональное моделирование
На сегодняшний момент разработано множество компьютерных программ, позволяющих работать с 3D графикой. Люди разных профессий: дизайнеры, конструкторы, визуализаторы, применяют их в проектировании. Самый первый метод, используемый в конструировании 3D объектов – полигональное моделирование, оно же самое распространённое при проектировании интерьеров, зданий, среды обитания человека.
Программы полигонального моделирования часто используется в архитектуре, проектировании предметов интерьера, в дизайне среды и конструировании малых объёмных форм.
Что собой представляет эта технология?
Специфика метода заключается в построении 3D объектов, с помощью специальных плоскостей (полигонов). С его помощью в 3D Max, можно создавать ряд объектов, без которых любой интерьер был бы пустым. В 3D Max полигональное моделирование, выполняет основную функцию, без этого способа построение объектов становится не возможным.
Любые полигональные фигуры, состоят из граней плоскостей (полигонов), объединённых в один элемент с помощью вершин:
Все объёмные тела имеют свой каркас, который составляет основу модели: с его помощью можно редактировать изделие, менять форму, вытягивать, передвигать и т. п.
В проектировании архитектурных сооружений, дизайне малых форм и т. п, там, где требуется передать точное сходство с прототипом, часто применяется метод полигонального моделирования.
В зависимости от поставленных задач, 3D объекты могут иметь различное количество полигонов.
На начальном этапе конструирования, создаются низкополигональные модели, что даёт возможность сократить время на обработку данных. При этом уровень детализации будет невысоким.
Что бы создать модель с более проработанной детализацией, необходимо увеличить число полигонов, такое изделие будет называться высокополигональным. Метод применяется, когда необходимо создать точную копию объекта.
Конструирование происходит в несколько уровней, по стандартной схеме, путём постепенного увеличения полигонов.
Несмотря на то, что полигональное моделирование считается самым распространённым способом построения 3D объектов, но это не единственный метод, используемый в создании трёхмерных изображений. Так, например: при проектировании объектов животного мира или растений, лучше всего использовать сплайновое моделирование.
Сплайновое и полигональное моделирование, основные отличия
Сплайновое моделирование – создание объёмных фигур, с применением специального лекала (сплайнов). Сплайнами могут быть кривые, имеющие любую геометрическую форму: дуги, окружности, прямоугольники и т.п. Каркас, служит основой для создания огибающей поверхности. Метод позволяет создавать модели, с высокой степенью детализации, при этом, поверхность становится боле гладкой. В отличие от полигонов, сплайновое моделирование не требует больших затрат энергии, необходимой для обработки информации. Поэтому, этот способ, часто используют при создании, сложных объектов. Всегда есть возможность вернуться к исходному состоянию.
Нередко, эти виды сравнивают с векторной и растровой графикой. В первом случае, фигуры создаются из точек и направляющих, такое изображение получается плоским, но зато при изменении масштаба, качество картинки не изменяется. Графика на основе растров кажется объёмной, но при увеличении масштаба, качество картинки ухудшается, детали становятся размытыми.
То же самое можно сказать и о моделировании с помощью лекал. Точно так же, как и векторная графика, сплайны способны передавать точность объекта, так как форма создаётся с помощью кривых, неоднократно описывающих экватор. Для точной проработки деталей, поверхность увеличивают в масштабе.
Объекты, созданные на основе полигонов, имеют разную степень детализации.
Чтобы добиться максимального сходства с прототипом, изделие должно иметь как можно больше полигонов, к примеру: объект, состоящий из 250 полигонов, будет иметь степень детализации в 35 градусов, кода аналогичный образец, но уже с 1500 полигонами, 10 градусов.
Хоть расстояние между гранями будет небольшим, и поверхность объекта будет казаться сглаженной, при увеличении масштаба на плоскости появятся шероховатости.
Методики построения полигональных моделей
В 3D Max полигональное моделирование – применяется при проектировании трёхмерных изображений. Способ позволяет создавать реалистичные модели с высокой степенью детализации, что даёт преимущество перед другими редакторами.
Создать полигональную модель можно разными способами:
Полигональное моделирование так же предусматривает и другие способы построения объектов.
Редактирование полигональных моделей осуществляется в окне одного меню Polygons Edit, с помощью этих окон, можно осуществлять другие команды. Они составляют основу любого 3D редактора. Кроме базовых окон, существуют дополнительные панели, без которых получить качественную модель невозможно, к ним относятся:
Для достижения удачного процесса моделирования следует помнить основное правило построения:
Приемы моделирования объектов
Конструирование с помощью вершин
Основу сетки составляют прямоугольные ячейки, каждая имеет свои вершины, с их помощью происходит редактирование. Что бы создать другой объект, необходимо произвести манипуляции с точками вершин.
В качестве наглядного примера, используется куб, затем, активировав F9, не снимая выделения, переходят в режим редактирования вершин. Задействовав инструмент Move Tool, верхние точки перемещаются, так, что бы примитив принял другую форму. При необходимости сохранить симметрию, удобней всего воспользоваться инструментом Scale Tool. Воспользовавшись различными инструментами можно добиться совершенно уникальных результатов, например, при вращении, вершинах приобретут спиралевидную форму.
Кроме всего прочего, для вершин существует уникальный метод стёсывания, позволяющий создавать множество граней из одной.
Использование рёбер в проектировании
Этот метод схож с предыдущим, редактирование рёбер осуществляется по тому же принципу, что и с вершинами. На практике это работает следующим образом: в качестве базового элемента создаётся куб, при нажатии клавиш F10 активизируется редактор рёбер. Далее, в качестве примера вытягивается одна и противоположных граней ребра. После чего, появится дополнительная плоскость, такую же операцию можно повторить и с соседними рёбрами.
Проектирование моделей с помощью полигонов
Сразу стоит отметить, это наиболее распространённый метод создания сложных объёмных конструкций. В этом случае работа проводится с полигонами, производя различные манипуляции можно менять форму, размер, создавать более сложные объекты. Как и в предыдущих примерах, редактирование происходит по аналогичному сценарию. Активизировав клавишу F11, запускается редактирование полигонов, предварительно выделив один из примитивов, можно работать с гранями, меняя их положение.
Дополнительно доступно множество приёмов по преобразованию граней.
При разбивании грани на две части, создаётся ещё одно ребро. После активации команды правка, курсор мыши изменится, после этого стоит выделить вершины нового ребра и выйти из режима правки, кликнув на пустом поле. После этого можно совершать любые действия относительно новых рёбер.
Применение полигонального моделирования
Область применения полигонального моделирования весьма обширная, от проектирования фигур человека, растений, животных, до создания сложных архитектурных форм, хотя могут применяться и сплайны, в зависимости от конкретных целей.
Недостатки метода
Несмотря на массу положительных качеств метода, недостатки всё же присутствуют.

Применяемые программы
На сегодняшний день, существует множество зd редакторов, трудно найти более популярный, чем Autodesk 3D Max. Программа подходит для создания трёхмерной графики, с её помощью были созданы спецэффекты ко многим фильмам. Сюда же можно добавить не менее известную программу Autodesk Maya, Autodesk Softimage и множество похожих редакторов.
3ds Max. Часть 4. Основы полигонального моделирования
Без знания основ полигонального моделирования невозможно спроектировать чуть более сложные объекты, чем примитивы. Разбираемся с вертексами и рёбрами.
Перед тем как начать моделирование такого сложного 3D-объекта, как автомобиль, нужно понимать основные принципы полигонального моделирования и знать назначение и функциональные возможности инструментов.
Что такое полигон
Полигон — плоскость, состоящая из нескольких точек в пространстве, соединённых рёбрами.
Автор статей по дизайну. В веб-дизайн пришел в 2013 году, осознанно начал заниматься с 2015 года. Параллельно освоил верстку. Время от времени публикую переводы на хабре.
Что такое полигональное моделирование (polygonal modeling)
Полигональное моделирование — это один из видов трёхмерного моделирования, позволяющий моделировать любой объект (ну или почти любой) и за счёт соединения полигонов создавать из них группы и формировать нужный облик модели. Например так:
Разбираемся с полигональным моделированием на примере
Давайте создадим примитив box, конвертируем его в Editable Poly (редактируемые полигоны) и на этом примере детально рассмотрим, что такое полигон и из чего он состоит. В этом уроке вы можете посмотреть, как создать примитив.
Чтобы конвертировать объект в редактируемые полигоны, нажмите правой кнопкой мыши в активном окне проекции и в контекстном меню выберите Convert To — Convert to Editable Poly.
Итак, вы создали примитив box и перевели его в Editable Poly. Далее рассмотрим, из каких подобъектов состоит Editable Poly.
Уровень подобъектов Editable Poly
Нажмите стрелку на командной панели во вкладке Modify перед названием Editable Poly, чтобы перейти на уровень подобъектов. Их мы и будем сейчас разбирать.
Vertex (вершины)
Чтобы работать с этим уровнем подобъектов, нажмите клавишу 1 на клавиатуре. Вершина — это одномерный объект (точка) в пространстве. Если соединить, например, две вершины, получится ребро.
Edge (рёбра)
Нажмите на клавишу 2 на клавиатуре, чтобы работать с этим уровнем подобъектов. Ребро — это двумерный объект, который определяется двумя вершинами и представляет собой линию. Три ребра и более образуют многоугольник.
Border (граница)
Нажмите на клавишу 3 на клавиатуре, чтобы работать с этим уровнем подобъектов.
В том виде, в котором сейчас представлен наш объект, Border выделить не получится. Border — это граница, где что-то должно заканчиваться, а у нас объект замкнутый.
Перейдите на подобъект, выделите любой видимый полигон и удалите его по нажатию на Del на клавиатуре. Теперь края удалённого полигона и будут тем самым бордером.
Polygon (полигон)
Polygon вызывается по клавише 4 на клавиатуре. Состоит из трёх и более рёбер.
Element (элемент)
Element вызывается по клавише 5 на клавиатуре. Этот подобъект необходим в случае, когда нужно выделить целиком весь объект.
В свитке Selection иконками представлены все подобъекты Editable Poly. Когда вы выбираете один из подобъектов, там активируется нужная иконка, и наоборот: когда вы нажимаете на какую-либо из иконок, у вас будет выделяться один из подобъектов в списке.
3D в играх: Полигоны
3D в играх. Часть 2
Как мы выяснили в прошлой части, современные трехмерные компьютерные игры строятся на основе полигонов. Но, что же это за зверь такой?
Полигон (Polygon) – это плоскость в евклидовом пространстве. Пространство имеет размерность три, соответственно, имеются три координаты: X, Y, Z. Условно их можно обозвать как длина, высота и глубина. В программном обеспечении для 3D нет единого стандарта относительно, так сказать, ориентации данных координат, хотя, как правило, координата X параллельна условном горизонту, т.е. это длина, а вот условной высотой может быть как Y так и Z. Соответственно, условной глубиной может быть как Z, так и Y. Но нам это не столь суть важно, примем для последующего материала представление, показанное ниже.
У полигона есть вершины, минимум три, максимум, теоретически, бесконечность. Практически максимум – много. Но в играх используются треугольные полигоны, т.е. полигон имеет три вершины. Почему именно три? Через три точки в пространстве можно провести только одну плоскость, что упрощает расчеты и позволяет избежать искажений (артефактов) на итоговой картинке связанных с тем, что вершины полигона могут лежать не в одной плоскости.
Однако в программах трехмерного моделирования принято пользоваться 4-х угольными полигонами, а вот 5-ти и больше, как правило, под запретом. Поэтому при моделировании приходится следить за тем, чтобы все 4 вершины полигона были в одной или почти одной плоскости. А как же игры? спросите вы. Полигон с 4-мя вершинами математически очень просто превратить в два треугольных с двумя общими вершинами, что и делается автоматически при экспорте в игровой движок.
На рисунке ниже показаны треугольный полигон и четырехугольный, условно разделенный на два треугольных. На изображении это прямоугольный треугольник и прямоугольный параллелограмм, но по факту полигон может иметь различные длины сторон, соответственно, и различные углы между ними. Хотя стараются, по возможности, все стороны делать приблизительно одинаковыми, это называется равномерная полигональная сетка.
Почему сетка? Из полигонов создаются трехмерные объекты для игр (и не только), и если рассматривать все эти полигоны издалека включив отображение сторон полигона, они же ребра, то все это похоже на сетку.
Вообще, полигон – это то, чего на самом деле не существует, это всего лишь математика. У него нулевая толщина. Это координаты трех (для игр, далее будем говорить только о треугольных полигонах, если не будет указано иное) точек в трехмерном пространстве. И то, как отображать эти несуществующие полигоны, — зависит исключительно от той или иной компьютерной программы. Как правило, существуют три основных вида отображения: каркасная сетка, полигональная сетка, «чисто» полигональное представление. На рисунке ниже даны все три вида.
При моделировании, тестировании и т.п. для закрашивания плоскости между вершинами полигона используется произвольный цвет, но зачастую это так называемый сермат, RGB 128,128,128. На нем удобно тестировать, в частности, освещение. Да и однородная заливка, в отличии от полновесных текстур, использует не так много ресурсов компьютера.
Приведенный выше рисунок показывает как, на самом деле, с помощью плоских поверхностей создаются объекты практически любой формы. Правило тут простое: чем меньше каждый полигон, тем более точно можно передать форму исходного объекта. Это как с мозаикой, про которую разговор был в первой части. Но и увеличивать до бесконечности количество полигонов тоже нельзя, так как это сказывается на производительности, ведь компьютеру желательно не менее 30 раз в секунду пересчитать положение каждой, по крайней мере видимой зрителю, вершины полигона. Но и эти расчеты лишь малая часть того, что видеокарта в сотрудничестве с ЦП делают для расчета финальной картинки. Но об этом мы поговорим в следующих частях.
Кроме координат вершин есть у полигона такое свойство как нормаль. Это вектор, перпендикулярный одной из сторон плоскости полигона. Так как это вектор, то у него есть направление. Это направление указывает лицевую сторону полигона, вернее его начало находится у лицевой стороны полигона. Нужна нормаль для наложения текстур и расчета освещенности. Так же хочу заметить, что математически полигон не имеет никакого отношения к тому, как он выглядит, т.е. к текстурам. Полигон отдельно, текстуры – отдельно.
Так вот, та сторона, из которой «выходит» вектор нормали — и определяет лицевую сторону полигона, поэтому с противоположной стороны полигон прозрачен при визуализации, вернее обратной стороны просто не существует. Именно поэтому когда игровой персонаж из-за некорректных коллизий проваливается сквозь текстуры, то почти все сверху кажется полупрозрачным – текстур, вернее обратной стороны у полигона не существует.
Ниже скриншот из игры Batman Arkham Knight.
То же можно наблюдать, если попасть туда, куда игровой персонаж попадать не должен по задумке разработчиков: за уступы скал, в закрытые помещения и т.п. И это не баг игрового движка, это его особенность, ну, и недосмотр при тестировании (или разработчики не отреагировали должным образом на отчет тестировщиков). Необходима такая особенность для оптимизации расчетов итоговой картинки, или, по-другому, рендеринга. Ведь совсем незачем тратить вычислительные ресурсы на то, что никто никогда увидеть не должен.
Внимательный читатель может спросить: а как же быть в том случае, если игровой персонаж должен зайти в помещение? Тогда необходимо, как и в реальном здании, придавать стенам (потолку, крыше, дверям и т.д.) толщину с помощью двух полигонов у которых нормали смотрят в противоположные стороны.
Ниже показан фрагмент модели здания со стеной, имеющей реальную толщину. Синим показано направление нормали у полигонов.
Для совсем тонких предметов, таких как лист бумаги, применяется другой подход и зависит он от конкретного игрового движка. Например, может применяться специальный двухсторонний материал или отключаться параметр Backface culling, и в этом случае объект будет выглядеть одинаково с обеих сторон. (Подробнее про Backface culling можно почитать тут: Полигоны, свободная камера и MGS 5)
Теперь поговорим о том, какие бывают трехмерные полигональные модели.
3D модели принято делить на низкополигональные (low poly) и высокополигональные (high poly). Как несложно догадаться – разница в количестве полигонов, причем разница не абсолютная, а, как и все в нашем мире, относительная.
Высокополигональной можно назвать модель с самодостаточной геометрией, т.е. когда даже мелкие детали (в разумных, конечно, пределах) смоделированы с помощью полигонов и при этом модель выглядит достаточно правдоподобно даже без текстур. Непосредственно в играх high poly модели, как правило, не применяются, однако они необходимы в процессе разработки 3D игры, о чем будет рассказано ниже.
Высокополигональные модели применяются для статического рендеринга, например интерьерной визуализации или предметной, когда необходимо фотореалистичное качество и большие разрешения итоговой картинки. Для получения такого изображения используются специальные программы рендеринга и просчет одного кадра может занимать несколько десятков часов, поэтому в играх это неприменимо.
Низкополигональные модели применяются в основном в играх или для анимации, когда визуальный реализм не имеет первостепенного значения. Есть два основных способа получения низкополигональной модели: непосредственное моделирование с прицелом на малое количество полигонов или упрощение высокополигональной модели. То же справедливо и для high poly моделей (если не брать в расчет 3D сканирование): их получают путем усложнения и добавления полигонов низкополигональной модели, либо моделируют сразу из расчета максимально необходимого количества полигонов. Какой подход применятся в том или ином случае зависит от многих факторов, как то: геометрии самой модели, применяемого программного обеспечения, наличия похожих моделей, принятого в студии-разработчике порядка разработки, предпочтений 3D-художника и т.п.
Хочу особо обратить внимание на то, что разделение на high poly и low poly очень и очень относительно. Зависит от многих факторов, и одна и та же модель может быть как низкополигональной, так и высокополигональной. Например, для игры для ПК была разработана высокополигональная модель персонажа, затем из нее получили низкополигональную, условно, уменьшив количество полигонов в два раза. А позже решили портировать игру на мобильные устройства. И количество полигонов, опять же, условно, для этого сократили в четыре раза по сравнению с изначальной моделью, или в два раза по сравнению с моделью для ПК-версии игры. Ведь мобильные устройства мало того, что не такие мощные, как ПК, так еще и размер экрана не позволяет различить мелкие детали, поэтому такая высокая детализация, как для полноразмерного монитора, там попросту не нужна.
Ниже показаны сферы одинакового диаметра с различным количеством полигонов.
Да и с каждым новым процессором, каждой новой видеокарточкой мощность компьютерного железа растет, соответственно, и в играх получается отображать в кадре все больше и больше полигонов без ущерба производительности.
Ниже представлена эволюция полигональной Лары Крофт.
Как же получают 3D модели? Традиционно для этого используется полигональное моделирование в специальных программных пакетах, как то: 3ds Max, Maya, Cinema 4D и т.п. В последнее время к разработке также подключают программы для так называемой трехмерной лепки, к примеру ZBrush и 3D-Coat. Ну, и с развитием технологии 3D сканирования, модели получают путем этого самого сканирования с последующей оптимизацией полигональной сетки.
Если используется традиционное полигональное моделирование, то 3D художнику необходимо от чего-то отталкиваться. Для этого используются так называемые референсы, или, по-другому, изображения того, что необходимо смоделировать. Это могут быть фотографии (для реальных предметов или персонажей), концепт-арты (для вымышленных), или даже существующие объекты. К примеру, необходимо смоделировать существующие кубики Lego. Самая в данном случае хорошая идея – иметь их под рукой и моделировать, непосредственно вертя в руках эти самые кубики.
Ниже изображение референса и 3D модели (без текстур).
Теперь вернемся к вопросу: а зачем при разработке 3D игры иметь в наличии сразу две модели одного и того же объекта — high poly и low poly? Высокополигональная модель непосредственно в игре использоваться не будет, но она необходима для такого важного процесса, как запекание текстур. Так называют подготовку целого ряда текстур или, как их еще называют, карт. Это обычные файлы изображений (с необычными, на первый взгляд, рисунками в них) цель которых как можно реалистичнее представить модель в игре и взять на себя, так сказать, часть геометрии. По сути – это создание 3D иллюзии там, где добиться этого полигонами сложно, неподъемно по производительности или просто нецелесообразно.
Возьмем, к примеру, старую доску. В ней может быть множество трещин и мелких сколов. В реальности это перепад высот (или глубин) материала самой доски. И, по-хорошему, полигоны также должны повторять эти перепады. Но тогда модель может оказаться настолько высокополигональной, что никакое железо не потянет это количество полигонов. Поэтому для начала моделируют как можно более подробную высокополигональную модель этой самой доски, а затем с помощью специальных программ генерируют (запекают) карты высот, затенения и т.п. для имитации этих самых трещин и сколов на низкополигональной модели.
Ниже упрощенно схематически показано как смешивание запеченных с high poly модели карт, в сочетании с текстурой дерева, в результате дает реалистичное изображение.
Ведь как мы различаем эти самые трещинки и сколы? По изменению яркости и цвета текстуры дерева благодаря тому, что свет по-разному отражается от неровностей поверхности, а кое-где и отбрасывает тень. К тому уже, в трещинах, как правило, накапливается грязь и т.п. Все это и позволяет нам отличить старую древесину от новой. Вот эти эффекты и запекаются в файлы изображений. Такой прием позволяет создавать довольно реалистичные объекты с использованием значительно меньшего количества полигонов. При отображении объекта в игре эти карты накладываются друг на друга по определенным алгоритмам, что и создает иллюзию наличия геометрии, которой на самом деле то и нет.
Правда, тут есть один недостаток: эффект лучше всего действует когда наблюдатель расположен под углом 90° относительно полигонов с такой вот имитацией дополнительной геометрии. С уменьшением или увеличением угла обзора «обман» становится виден все отчетливее и отчетливее. Но это неизбежная плата за возможность приблизить картинку к реализму, не превратив игру в неиграбельную.
Это мы забежали немного вперед, затронув тему текстур, но без этого трубно было бы объяснить необходимость на один игровой объект делать как минимум две модели.
Если уж мы говорим про 3D в играх, то следует обязательно упомянуть такую технологию, как LOD, сокращенно от Level of Detail, она же уровень детализации. Суть ее сводится к тому, что в зависимости от того, насколько тот или иной объект близко располагается от игрового персонажа, или какой процент высоты экрана занимает, то используются модели с различного рода детализацией. Опять же, все ради оптимизации. Чем ближе к виртуальной камере тот или иной объект, тем более детализированная модель подставляется. На практике часто количество таких моделей ограничивается тремя: для переднего, среднего и заднего планов. И обозначаются, как правило: LOD_0, LOD_1, LOD_2. Это все варианты низкополигональной игровой модели.
Различные варианты полигональной детализации могут создаваться как в сторонних программах, так и автоматическими игровыми движками (очевидно, не всеми). Причем автоматически в сторону упрощения геометрии, т.е. загруженный в игровой движок вариант по умолчанию воспринимается как LOD_0. Иногда в играх, особенно с большими открытыми мирами, можно заметить как изначально угловатый и неказистый объект вдруг скачкообразно «похорошел» — это произошла замена на более высокополигональный LOD.
Вот, наверно, вкратце и все про полигоны. Если остались необозначенные или нераскрытые моменты – пишите про это в комментариях.
По идее, далее необходимо продемонстрировать этот самый процесс полигонального моделирования, дабы наглядно показать, как это делается. И пример должен быть не очень простой, ради показа хотя бы нескольких приемов моделирования, но и не очень сложный, чтобы не нагонять сон на зрителя. Я думал-думал над предметом моделирования и пришел к выводу, что модель керосиновой лампы неплохо впишется в данную концепцию. Но, дабы не утомлять читателя, решил собственно процесс моделирования вынести в третью, или, если хотите, в 2,5 часть повествования, которую надеюсь опубликовать в ближайшем будущем.





























