Как работает инструмент для процедурной генерации LOD-ов от Frostbite

Эштон Мэйсон (Ashton Mason), старший инженер-программист Electronic Arts, рассказал на GDC 2020, как команда Frostbite избавила художников от необходимости делать несколько версий 3D модели, создав инструмент для автоматической генерации LOD-ов, не использующий триангуляцию. Сегодня его применяют для упрощения сетки персонажей и неорганики во всех студиях EA.

Embedded Image

У готовых инструментов, представленных на рынке, были существенные недостатки — они использовали триангуляцию и не учитывали то, на каких участках сетки важно сохранить правильную топологию. На персонаже на картинке ниже видны артефакты на лице и коленях, «сломались» рёбра (edges), которые нужны для деформации сетки при анимации. В результате 3D-художникам EA приходилось править сгенерированные LOD-ы вручную, или даже делать заново.

Желая разгрузить художников и ускорить процесс моделирования, BioWare решила создать свой инструмент и выдвинула программистам такие требования:

инструмент должен как можно точнее повторять топологию самого первого LOD-а;

у художников должна быть возможность вручную «окрасить» кистью наиболее приоритетные места сетки (прямо в Maya), которые меньше всего подвергнутся упрощению;

симметрия, где она изначально есть, должна сохраняться.

У команды разработчиков Frostbite уже был опыт создания инструмента упрощения сетки с использованием триангуляции.

Алгоритм работал так: выбирал наименее полезное ребро (удаление которого меньше всего испортит форму модели), сливал две вершины на концах ребра в одну, а потом позиционировал новую вершину так, чтобы сохранить силуэт модели. Более подробно об этом методе можно почитать в этой статье его авторов Майкла Гарланда и Пола Хэкберта.

Команда Frostbite взяла за основу алгоритм упрощения четырёхугольной сетки Quadrilateral Mesh Simplification, который уменьшал полигонаж с учётом топологии: «упрощалось» не одно ребро, а сразу кольцо. Следом обновлялись координаты UV и нормали.

Но у такого метода был недостаток — он не учитывал, что «ленты» полигонов (поликорды, polychords) могут иметь сложную форму и пересекаться друг с другом (см. ниже). Как заметил Мейсон, такая топология встречается достаточно часто — даже неорганические предметы могут быть опоясаны длинными непрерывными цепочками полигонов. Все вершины на пересечении поликордов сливались в одну, а значит результат упрощения такой сетки был непредсказуем.

Один из способов распутать такую сетку — сливать не все вершины на пересечении поликордов, а только противоположные. Однако, команда Frostbite позже отказалась от этого метода, начав делить поликорд на части.

Результат упрощения поликордов на тестовой модели:

Недостаток работы с длинными поликордами был в том, что алгоритм упрощал весь найденный поликорд, «залезая» в области с высокой детализацией, которые упрощать не нужно (например, лицо и уши). Разработчики пришли к тому, что удобнее делить поликорды на саб-поликорды. Как именно делить и какие саб-поликорды упрощать, подсказало второе требование компании — прямо на сетке кистью стали рисовать приоритеты.

Однако, у деления сетки на приоритетные и неприоритетные области нашёлся минус — на стыках упрощённых и неупрощённых саб-поликордов появлялись треугольники.

Чтобы от них избавиться, пришлось на следующем шаге «упростить» саб-поликорды с треугольниками, сперва найдя на их ребрах оптимальное место для новых вершин.

Для поиска и упрощения саб-поликордов стали использовать «жадный поиск» (Greedy Sub-Polychord Search). Алгоритм находил маленький участок, который можно упростить с наименьшим ущербом для формы и топологии и постепенно упрощал соседние полигоны, пока не доходил до тех, чьё исчезновение испортит модель.

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

Например:

Слева — как будет выглядеть сетка без учёта пересечений поликордов — позиция новой вершины вычисляется только с учётом одного ребра. А на изображении справа алгоритм увидел, что оба поликорда в этом LOD-e будут упрощены — значит, оптимальнее вычислить позицию для новой вершины с учётом трёх ближайших рёбер.

Сетка, полученная на этом этапе, близка к топологии первого LOD-а, но у неё был существенный минус — она не повторяла симметрию оригинала.

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

Поэтому инструмент научили находить симметрично расположенные рёбра — алгоритм представлял рёбра модели как граф и искал участки с одинаковой топологией.

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

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

В результате, соответствуя всем требованиям BioWare, алгоритм даже в третьем LOD-е выдаёт результат (на картинке слева) очень похожий на сделанный 3D-художником вручную (на картинке справа):

Тестирование показало, что при отдалении камеры LOD-ы, сгенерированные алгоритмом, сменяются менее заметно, чем сделанные вручную.

Сейчас инструмент применяется в студиях Electronic Arts не только для персонажей, а даже для неорганических пропсов с треугольной сеткой. Ниже — три версии модели: первая сделана с помощью Simplygon, вторая — инструментом команды Frostbite, третья вручную.

Embedded Image

Онлайн-курс по созданию стилизованого 3D персонажа. Все этапы ААА-Пайплайна.

https://bit.ly/3cZDdBa

Приходи к нам на курс STYL! За 6 месяцев ты научишься создавать персонажей так, как это делают в больших игровых студиях. Учить тебя будут лидеры индустрии, которые работали с Blizzard, Sony, ID Software. Твой дипломный персонаж станет украшением портфолио и весомым аргументом для будущих работодателей или заказчиков.

Комментарии: 0