Методы оптимизации высокополигональных 3D моделей

Статья подготовлена специально для конференции Innotech - http://conference.msa.pstu.ru/

Авторы: Бояршинов Александр и Ромин Евгений.

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

Целью настоящей статьи является обзор нескольких методов оптимизации высоко детализированных 3D моделей и применение их на практике, в рамках работы над студенческим проектом WitchCraft.

Алгоритмы удаления невидимых граней и линий. Выделяют три класса таких алгоритмов [1]:

  • Алгоритмы, работающие в пространстве экрана. Они основаны на расчете попадания граней в зону видимости наблюдателя из определённой точки.
  • Алгоритмы, работающие непосредственно в пространстве объектов (сцены). Зачастую в моделях существуют грани, которые располагаются внутри объекта, или на обратной стороне скрытой от наблюдателя. Для вычисления видимых поверхностей используется сравнение и расчет расположения всех объектов находящихся в сцене и удаление всех невидимых граней.
  • Алгоритмы, со списком приоритетов. Являются гибридной модификацией первых двух и работают используя оба алгоритма попеременно. 

01 hl2

Рис. 1 Пример использования алгоритмов удаления граней невидимых для пользователя в обычном режиме

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

Алгоритмы редукции полигонов (Polygon Reduction). Редукция - процесс упрощения 3D модели путем уменьшения количества полигонов. Принцип работы метода заключается в замещении группы полигонов одним, наиболее близким к исходной группе по расположению вершин. Большинство 3D редакторов имеют возможность задавать интенсивность редукции, что позволяет выбрать нужное соотношение между уровнем проработки модели и экономией вычислительной мощности.

02 witch

Рис. 2 Метод редукции полигонов на примере персонажа и выбор оптимальной конфигурации.

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

Алгоритмы ручного создания низкополигональных моделей. Низкополигональные (low-poly) модели используются когда не требуется высокая детализация, если приемлемое качество изображения можно получить, с помощью проработанных текстур, карт нормалей и других визуальных эффектов. Чаще всего такие модели используются для экономии вычислительных ресурсов в 3D приложениях, где есть необходимость отображения моделей и анимации в режиме реального времени [2].

При создании низкополигональных моделей следует стремится за минимально возможное количество вершин и ребер создать модель объекта достаточно похожую на реальный прототип. Существует несколько способов создания визуального представления трехмерного объекта с минимальными потерями качества [3]:

  • Задание оптимального количества полигонов (достаточное для сохранения формы объекта, но не излишнее). Следует учитывать область применения модели и доступные ресурсы вычислительной техники.

    03 cilinder

    Рис. 3 Примеры задания примитива различными количествами полигонов.

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

    04 skruglenie

    Рис. 4 Примеры использования методов «Слияния вершин» и «Закругления».

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

05 sphere

Рис. 5 Демонстрация различия сфер из треугольных и четырехугольных полигонов

К достоинствам ручного создания низкополигональных моделей относят очень высокое финальное качество и минимальное количество полигонов. Ключевыми недостатками является высокая трудоемкость и очень низкая скорость моделирования.

06 cups

Рис. 6 Сравнение высокополигональной модели кружки (246 граней) и низкополигональной (50 граней).

Для того чтобы оценить эффективность оптимизации высоко детализированных 3D моделей была создана сцена из разных типов объектов, к которым были применены описанные выше методы и алгоритмы.

07 test

Рис.7 Оптимизированная сцена для запуска на устройствах с низким количеством вычислительных ресурсов.

К примеру, к зданиям был применен алгоритм удаления невидимых граней и линий, для оптимизации персонажей использовался алгоритм редукции полигонов, а предметы интерьера были заново смоделированы с использованием техник создания низкополигональных объектов. Таким образом удалось добиться значительного уменьшения количества полигонов в сцене, что наглядно показано в таблице №1.

08 table

Тесты и оценки производительности проводились на базе Unity 3D – мультиплатформенном инструменте для разработки двух- и трехмерных приложений. В конечном итоге сокращение числа полигонов с 21292 до 6050 дало значительный прирост производительности и уменьшении нагрузки на центральный и графический процессор устройства.
09 result

Рис. 8 График нагрузки на центральный и графический процессор до и после оптимизации

Заключение

В результате использования методов оптимизации описанных в статье высокополигональная сцена была преобразована в низко детализированную. Конечным результатом манипуляций стало уменьшение нагрузки центрального и графического процессора на 28% и 42% соответственно. Это дало возможность запуска сцены на мобильному устройстве с ограниченными вычислительными ресурсами, что показывает эффективность данных методов и перспективы развития направления в целом.

Список Литературы
  1. «Алгоритмы удаления невидимых линий и поверхностей» http://www.astro.tsu.ru/KGaG/text/5_6.html
  2. «Low-poly models / Понятие низко-полигональных моделей» http://www.gamedev.ru/art/terms/lowpoly
  3. «Low Poly Tricks, Tips & Techniques» http://www.loonygames.com/content/1.6/totb/index5.php
Яндекс.Метрика