Оптимизация текстур: оверлапы, реюз, декали
Оверлап (overlap или реюз) — это накладывание одинаковых UV-шеллов на UV-развертке друг на друга с целью экономии текстурного пространства.
Эту технику можно использовать на моделях со множеством повторяющихся плоскостей/элементов, для которых не важна уникальность текстуры.
Мы говорим об уникальности, потому что если два элемента лежат на одном месте в UV-пространстве и используют общую текстуру — на них будет отображаться одинаковый набор пикселей.
Это значит, что если ты нарисуешь какую-то деталь на одном из плейнов — она автоматически появится и на остальных. Поэтому оверлапы нужно использовать аккуратно.
Способы создания оверлапов
Разберем два основных способа: один из них удобен при работе с большими массивами деталей, а второй подойдет для создания точечных оверлапов.
Способ 1
Когда ты закончил оптимизацию Low poly модели и приступаешь к работе с UV — удали все элементы и полигоны, которые планируешь оверлапить, и оставь только по одному референсному элементу.
Например: у тебя есть 10 одинаковых винтов. Тебе нужно удалить 9 из них, развернуть один, который остался, а потом сделать 9 копий развернутого винтика.
Дальше можешь работать с UV как обычно. Единственное, что нужно учесть в таком случае, — когда UV будет готова, тебе предстоит раскопировать обратно все удаленные элементы.
Используя этот подход, ты можешь создавать оверлапы для множества разных элементов, и тебе не придется выискивать нужные шеллы в UV-эдиторе. Удобно, если модель простая и нет проблем с расположением копий всех элементов на последнем этапе.
Также, прямо в процессе моделирования, объекты под реюз можно копировать как инстанс. В таком случае будет достаточно сделать развертку для одного элемента, а остальные подхватят эту информацию.
Способ №2
Накладывание существующих UV шеллов друг на друга вручную. Перед этапом финального упаковывания нужные шеллы складываются друг на друга и объединяются в группы, чтобы при автоматическом упаковывании алгоритмы не разъединяли их.
Способ подходит для точечного создания оверлапов, ведь для каждого элемента нужно сделать как минимум 3-4 действия. Если тебе предстоит разворачивать большое количество геометрии под реюз — лучше используй первый вариант.
Преимущества оверлапов на примере ассета
Возьмем ящик для патронов и сделаем для него две развертки: одна без использования оверлапов, а вторая — с ними. Texel density будем держать в районе 512px/m.
В развертке с реюзом нужный тексель удалось сделать при разрешении текстуры 2048х2048. Для текселя такой же плотности без оверлапов понадобится текстура 4096х4096.
Карта Albedo на примере с реюзом весит на 11.2 Мб меньше. На всем текстурном сете можно будет сэкономить ~30 мегабайт. А теперь представь экономию в рамках проекта, когда таких сетов сотни. Десятки гигабайт.
Вывод: реюз помогает эффективнее использовать ресурсы проекта.
Теперь остается добавить уникальности текстурам: надписи, несимметричные детали и другие элементы, которые невозможно нанести оверлапами. Для это есть декали.
Декали
Декалями в геймдеве называют текстуры с нарисованными на них надписями / подтеками / элементами. Фон текстур обрезается с помощью альфа канала, а на объект они наносятся либо в самом движке, либо с помощью геометрических плейнов как часть модели.
Абстрактный пример текстуры для декалей. В реальных проектах текстурное пространство используется более рационально.
Так как декали используют свою отдельную текстуру, они никак не привязаны к объекту и их можно использовать для нанесения надписей поверх реюзнутых плоскостей.
Ошибки при использовании оверлапов
Оверлапы нужно использовать осторожно, ведь если реюзаемые плоскости находятся рядом — может возникнуть «эффект бабочки».
Лучше всего реюзать плоскости, которые находятся на разных сторонах объекта. Если же избежать этого нельзя — создавай максимально усредненную детализацию.
Чуть больше о проблемах с оверлапами можно почитать в нашей статье о проверке дополнительных карт.
На этом все. Пользуйся осознанно и старайся искать баланс между уникальностью и оптимальностью. Иногда все же лучше сделать разрешение текстур чуть выше, но сохранить интересный вид объекта. В любом случае, теперь ты еще ближе к работе с текстурами на уровне «PRO».