Бывают ситуации, когда требуется уменьшить количество вершин у высокополигональной модели с сохранением геометрии. В этой статье будут рассмотрены некоторые способы решения данной задачи, с помощью специальных инструментов программы Autodesk 3Ds Max: стандартных модификаторов «MultiRes», «Optimize», «ProOptimize» и специального плагина «Polygon Cruncher».
Сразу необходимо сделать одно важное замечание. Если требуется уменьшать полигональную сетку у 3D модели, которая состоит из нескольких миллионов полигонов (а то и десятков миллионов), то для этого нужен мощный компьютер с большим объемом оперативной памяти. Если же ресурсов «железа» не достаточно, то целесообразно 3D модель разделить на несколько частей путем поочередного удаления некоторых групп полигонов и экспорта/импорта по частям.
Так же отметим, что 3D модели, состоящие из нескольких миллионов полигонов, хорошо открываются через Autodesk 3Ds Max. Многие 3D программы при аналогичных характеристиках компьютера обычно зависают, например, Blender, MODO, Sculptris.
Поэтому, данный обзор способов уменьшения полигонов 3D модели рассчитан на такое соотношение характеристик компьютера и модели, при котором ресурсов компьютера хватит не только, чтобы открыть высокополигональную 3D модель, но и применить к ней модификатор изменения полигональной сетки. В противном случае, как было отмечено выше, целесообразно разделить модель на несколько частей и работать с ними поочередно через рассмотренные в данной статье способы.
В качестве примера была взята стандартная модель из бесплатного 3D редактора Blender голова обезьяны «Сюзанна», которая состоит из 507 вершин, 1005 ребер и 500 граней.
К данной модели сделана развертка, а также наложена текстура для более наглядного результата изменения полигональной сетки. После этого был применен модификатор «Subdivision Surface», с количеством итераций равным 3. В итоге получили высокополигональную модель с 31 658 вершинами, 63 144 ребрами и 31 488 гранями.
Итак, импортируем высокополигональную модель в Autodesk 3Ds Max. Правой кнопкой мыши через опцию «Convert To» переведем её из «Edit Mesh» в «Edit Poly». Отметим, что при этом количество вершин немного увеличится, в данном случае, с 31 488 до 31 658.
Для уменьшения количества полигонов в Autodesk 3Ds Max есть несколько как стандартных модификаторов, так и специальных плагинов. Рассмотрим некоторые их.
Модификатор «MultiRes» (Множественное разрешение) относится к стандартным модификаторам 3Ds Max и находится во вкладке «Modify» (Модификаторы) в списке Modifier List (Список модификаторов). Он является наиболее эффективным для оптимизации полигональной сетки в этой программе, поэтому рассмотрим его более подробно.
Применяем модификатор «MultiRes» к модели и в самом низу нажимаем кнопку «Generate» (Генерировать). После этого станет активным раздел «Resolution» (Разрешение) со следующими задаваемыми параметрами:
Для примера, уменьшим количество вершин до того значения, которое было у низкополигональной модели, то есть до 507, что составит 1,6% от имеющихся сейчас.
Как видим, модель, более-менее сохранила форму, но текстура у левого виска лежит не так как нужно.
Это исправляется путем увеличения количества вершин, например до 2%. Либо можно пойти другим путем, через закрепление координат выбранных вершин, которые при оптимизации сетки модификатор трогать не будет. Для этого предназначен параметр «Maintain Base Vertex» в разделе «Generation Parameters» (Задать Параметры).
Активируем его галочкой. Увеличиваем количество вершин до той геометрии, при которой текстура на модели ляжет как надо, например до 2%.
После этого нажимаем на «+» у модификатора «MultiRes» и выбираем «Vertex» (Вершины). Теперь мышью при зажатой клавише «Ctrl» нужно указать те вершины, расположение которых необходимо сохранить. В данном случае выбраны 5 вершин. Затем, нажимаем кнопку «Generate».
После этого устанавливаем нужное количество вершин в «Vert Count», в данном случае 507. Таким образом, рисунок текстуры на модели будет расположен как нужно при прежнем количестве вершин.
Рассмотрим другие важные параметры этого раздела данного модификатора.
«Vertex Merging» (Слияние Вершин) – предназначен для соединения разных элементов одного объекта при оптимизации полигональной сетки. Например, в данном случае, Сюзанна состоит из трех элементов: головы и двух глаз. Оптимизация сетки у этих элементов происходит отдельно друг от друга. Вершины глаз находятся на различном расстоянии от вершин головы. Если диапазон этого расстояния указать в данном параметре, то они соединятся. Например, при значении 0,5 сантиметров, это будет выглядеть следующим образом.
Как видим, вершины глаз, находящиеся на расстоянии до 0,5 сантиметров, соединились с вершинами головы.
Рассмотри другие важные параметры:
Изучим следующий модификатор. «Optimize» (оптимизация) – также является стандартным модификатором уменьшения граней объекта при сохранении её исходной формы.
Он более ранний, чем модификатор «MultiRes», поэтому он не такой функциональный. В частности, у него отсутствует такая полезная функция, как закрепление вершин, которая позволяет корректировать нужное отображение текстуры на объекте.
Некоторые специалисты по 3D моделированию вообще против его использования, так как, по их мнению, он очень сильно портит полигональную сетку. Но, все-таки списывать со счетов данный модификатор рано, так как, если «MultiRes» больше подходит для работы с вершинами 3D объекта, то модификатор «Optimize» больше рассчитан на работу с ребрами и гранями.
Поэтому, кратко рассмотрим его основные параметры, которые расположены в разделе «Optimize» (Оптимизация) во вкладке «Parameters» (Параметры):
«Face Thresh» (Разбиение Граней) – разбивает грани по заданному значению, чем оно больше, тем меньше полигонов:
«Edge Thresh» (Разбиение Ребер) – разбивает ребра по заданному значению, чем оно больше, тем меньше полигонов:
«Bias» (Срез) – отвечает за количество ребер и фасок, чем оно выше, тем больше полигонов:
«Max Edge Len» (Максимальная Длина Ребра) – устанавливает максимальную длину ребёр объекта, чем больше это значение, тем меньше полигонов:
Уменьшить количество полигонов 3D модели с сохранением её геометрии можно ещё одним стандартным модификатором «ProOptimize» (Профессиональная Оптимизация).
При применении данного модификатора, необходимо нажать на кнопку «Calculate» (Посчитать) во вкладке «Optimization Lever» (Уровень Оптимизации), тем самым произойдет подсчет вершин 3D объекта.
Аналогично модификатору «MultiRes», можно установить либо нужное количество вершин, либо их процентное соотношение. Установим значение равное 507.
Как видим, исчезла текстура. Чтобы её вернуть, необходимо во вкладке «Optimization Options» (Параметры Оптимизации) в разделе «Materials and UVs» (Материалы и Развертки) активировать опцию «Keep Textures» (Сохранить Текстуры), а после снова пересчитать вершины кнопкой «Calculate».
Теперь сравним полученный результат оптимизации полигональной сетки этого модификатора с результатом модификатора «MultiRes»:
Как видим, он не очень хорошо сохраняет расположение текстуры на объекте.
В данном модификаторе есть возможность оптимизировать сетку объекта симметрично по выбранным осям. Это делается через вкладку «Symmetry Options» (Опции Симметрии).
Бывает, что при просчете сетки модели, появляется облако вершин, представляющее собой лишь точки без ребер и граней. Чтобы это исправить, необходимо перед просчетом, во вкладке «Optimization Options» в разделе «Merge Tool» (Инструмент Соединения) активировать опцию «Merge Vertices» (Соединение Вершин).
Помимо стандартных модификаторов Autodesk 3Ds Max для оптимизации полигональной сетки можно использовать специальный плагин «Polygon Cruncher» (Полигональное Сжатие). Он платный, но бесплатно его можно использовать в течение трех дней.
Модель загружается стандартно через вкладку «File» => «Open». Отображение текстуры включается активацией опции «Keep UV Textures» (Сохранить Текстуры).
После нажатия внизу на кнопку «Compute Optimization» (Вычисление Оптимизации) откроется дополнительное меню, в котором можно указать количество нужных вершин или граней. Ниже автоматически будет показана информация оптимизации в процентном соотношении. Установим количество вершин равное 507.
Для сравнения полученную модель экспортируем в формат .OBJ и импортируем в 3Ds Max.
Результат получился, почти такой же, как и при использовании стандартного модификатора «MultiRes» с той же самой проблемой исчезновения части текстуры.
Конечно, здесь рассмотрены не все возможности данного плагина и их описание займет немало времени, но некоторые все-таки следует отметить. Плагин поддерживает множество самых популярных 3D форматов, обладает возможностью проигрывания анимации модели, что позволяет оценить насколько оптимизированная полигональная сетка подходит для созданной анимации, экспорт 3D модели осуществляется при помощи достаточно гибких настроек.
В заключении можно сделать следующий вывод, что главным преимуществом модификатора «MultiRes», которому он обязан своей популярностью, является уменьшение количества полигонов сетки не только с сохранением её первоначальной формы, но и с возможностью корректного отображения текстуры на объекте путем выделения и закрепления нужных вершин.
Напомним, что на сайте постоянно обновляются уроки по 3D-графике для новичков и профессионалов. Например, вы можете почитать урок по моделированию спичечного коробка в программе 3ds Max.
Перепечатка и использования данного материала без прямой обратной ссылки категорически запрещена!