Методы оптимизации высокополигональных 3D моделей
Статья подготовлена специально для конференции Innotech - http://conference.msa.pstu.ru/
Авторы: Бояршинов Александр и Ромин Евгений.
На современном этапе развития 3D редакторов и средств моделирования стало достаточно легко создавать детализированные 3D модели для использования в различных приложениях работающих с трехмерной графикой. Особенно активно высоко детализированные модели используются в производстве спецэффектов для кинофильмов или в играх. Однако при попытке использовать эти модели в интерактивных приложениях для мобильных устройств, симуляторах и ГИС возникают проблемы. Основные препятствия заключаются в необходимости выделения большого объёма вычислительных ресурсов, сложности обработки объектов. Также наличие большого числа полигонов в сцене или в модели ограничивает возможность запуска приложения на устройствах с низкой вычислительной мощностью. Таким образом существует проблема требующая оптимизации уже готовых трехмерных детализированных моделей для использования в приложениях на устройствах с низкой вычислительной мощностью.
Целью настоящей статьи является обзор нескольких методов оптимизации высоко детализированных 3D моделей и применение их на практике, в рамках работы над студенческим проектом WitchCraft.
Алгоритмы удаления невидимых граней и линий. Выделяют три класса таких алгоритмов [1]:
- Алгоритмы, работающие в пространстве экрана. Они основаны на расчете попадания граней в зону видимости наблюдателя из определённой точки.
- Алгоритмы, работающие непосредственно в пространстве объектов (сцены). Зачастую в моделях существуют грани, которые располагаются внутри объекта, или на обратной стороне скрытой от наблюдателя. Для вычисления видимых поверхностей используется сравнение и расчет расположения всех объектов находящихся в сцене и удаление всех невидимых граней.
- Алгоритмы, со списком приоритетов. Являются гибридной модификацией первых двух и работают используя оба алгоритма попеременно.
Рис. 1 Пример использования алгоритмов удаления граней невидимых для пользователя в обычном режиме
К достоинствам алгоритмов удаления невидимых граней и линий можно отнести высокой уровень оптимизации и отсутствие потерь качества видимого для наблюдателя. Недостатками же является низкая скорость обработки, высокое потребление вычислительных ресурсов и отсутствие возможности обработки в реальном времени на большинстве устройств.
Алгоритмы редукции полигонов (Polygon Reduction). Редукция - процесс упрощения 3D модели путем уменьшения количества полигонов. Принцип работы метода заключается в замещении группы полигонов одним, наиболее близким к исходной группе по расположению вершин. Большинство 3D редакторов имеют возможность задавать интенсивность редукции, что позволяет выбрать нужное соотношение между уровнем проработки модели и экономией вычислительной мощности.
Рис. 2 Метод редукции полигонов на примере персонажа и выбор оптимальной конфигурации.
К достоинствам относят легкость использования и высокую скорость обработки. Однако недостатками является искажение модели при сильном или неправильном применении метода и необходимость перерисовки текстур, если на первичную модель уже была наложена текстура.
Алгоритмы ручного создания низкополигональных моделей. Низкополигональные (low-poly) модели используются когда не требуется высокая детализация, если приемлемое качество изображения можно получить, с помощью проработанных текстур, карт нормалей и других визуальных эффектов. Чаще всего такие модели используются для экономии вычислительных ресурсов в 3D приложениях, где есть необходимость отображения моделей и анимации в режиме реального времени [2].
При создании низкополигональных моделей следует стремится за минимально возможное количество вершин и ребер создать модель объекта достаточно похожую на реальный прототип. Существует несколько способов создания визуального представления трехмерного объекта с минимальными потерями качества [3]:
-
Задание оптимального количества полигонов (достаточное для сохранения формы объекта, но не излишнее). Следует учитывать область применения модели и доступные ресурсы вычислительной техники.
Рис. 3 Примеры задания примитива различными количествами полигонов.
- Слияние соседних близких вершин. В ряде случаев модель может иметь несколько вершин сосредоточенных на малом расстоянии друг от друга или находящихся на одной прямой. Самым оптимальным решением в данном случае будет объединение всех вершин в одну, что уменьшит количество нефункциональных полигонов.
-
“Закругление” путем снижения количества граней на сторонах цилиндрических объектов. Некоторые сцены с использованием таких объектов не подразумевают необходимости высокой детализации самой поверхности цилиндра. Именно в таких случаях следует применять скругление так как визуальное восприятие цилиндра слабо зависит от его граней.
Рис. 4 Примеры использования методов «Слияния вершин» и «Закругления».
- Использование треугольных полигонов для моделирования сфер. Несмотря на более сложное расположение полигонов в сравнении со сферой из четырехугольных полигонов, сфера из треугольников позволяет обойтись меньшим числом полигонов при меньшей степени аппроксимации.
Рис. 5 Демонстрация различия сфер из треугольных и четырехугольных полигонов
К достоинствам ручного создания низкополигональных моделей относят очень высокое финальное качество и минимальное количество полигонов. Ключевыми недостатками является высокая трудоемкость и очень низкая скорость моделирования.
Рис. 6 Сравнение высокополигональной модели кружки (246 граней) и низкополигональной (50 граней).
Для того чтобы оценить эффективность оптимизации высоко детализированных 3D моделей была создана сцена из разных типов объектов, к которым были применены описанные выше методы и алгоритмы.
Рис.7 Оптимизированная сцена для запуска на устройствах с низким количеством вычислительных ресурсов.
К примеру, к зданиям был применен алгоритм удаления невидимых граней и линий, для оптимизации персонажей использовался алгоритм редукции полигонов, а предметы интерьера были заново смоделированы с использованием техник создания низкополигональных объектов. Таким образом удалось добиться значительного уменьшения количества полигонов в сцене, что наглядно показано в таблице №1.
Рис. 8 График нагрузки на центральный и графический процессор до и после оптимизации
Заключение
Список Литературы
- «Алгоритмы удаления невидимых линий и поверхностей» http://www.astro.tsu.ru/KGaG/text/5_6.html
- «Low-poly models / Понятие низко-полигональных моделей» http://www.gamedev.ru/art/terms/lowpoly
- «Low Poly Tricks, Tips & Techniques» http://www.loonygames.com/content/1.6/totb/index5.php