В BlackVR перед нами постоянно стоят задачи по улучшению качества графики. В данном посте мы расскажем от чего зависит качество текстур и как на это влияет грамотная UV развертка.
UV развертка - это своего рода схема кройки 3d модели, по которой потом мы будем рисовать текстуры.
Может показаться странным, но создание текстурных карт начинается уже в тот момент, когда вы размещаете в сцене первый свой куб/цилиндр или любой другой элемент, который в будущем станет готовой моделью.
Всё это от того и потому что в зависимости от пропорций, размеров объекта в сцене будет зависеть и его UV развертка, которая напрямую влияет на качество финальных текстур.
Так почему от неё зависит качество текстур и почему, начиная с первого объекта в сцене, мы уже должны думать о развертке и текстурах?
Дело в том, что у UV есть такой параметр как texel density. Он показывает какое количество пикселей приходится на один юнит.
Юнит - это единица измерения, выбранная в качестве основной для текущего проекта.
В большинстве случаев за юнит принимается один квадратный метр.
На данный момент, в индустрии есть определенные стандарты количества пикселей на один юнит для получения качественных текстур.
Если брать в качестве единицы измерения метры, то у нас должны выходить следующие показатели texel density:
- Шутеры с видом от первого лица - от 1200 px/unit
- Игры с видом от третьего лица - от 650-800 px/umit
- Стратегии и игры с видом сверху - от 450 px/unit.
Итак, имея данные параметры, очень важно понимать, что уже на этапе блокинга новой модели, необходимо вести работу, соблюдая реальные размеры объекта.
Частые ошибки, которые возникают на этом этапе:
1) Создание больших объектов в сцене, без учета их реальных размеров.
2) Создание различных объектов в одной сцене для одного проекта, без учета соотношения их размеров друг к другу.
3) Разный texel density у различных частей одной модели (если это не является необходимым для улучшения детализации определенных элементов)
Но у Texel Density есть свои нюансы.
Например, если необходимо, чтобы логотипы, названия, либо какие-то мелкие детали читались на текстуре хорошо, то будет полезным значительно увеличить параметр TD у данных элементов. Также верно и обратное. У тех частей модели, которые будут не видны пользователю, TD можно и нужно значительно уменьшать, чтобы сэкономить место для более важных элементов.
Кроме Texel Density очень важным параметром у текстурных карт является Padding между элементами развертки.
Данный параметр указывает на то, какое количество пикселей расположено между эджами (они же ребра - те самые линии, которые можно видеть на модели, когда включаем режим отображения сетки) соседних элементов.
Существуют специальные формулы для расчета паддинга, но на практике практически всегда padding делается на глаз, а потому важно запомнить несколько важных моментов:
1. Делать так, чтобы границы между элементами развертки были видны и не казалось, что это один элемент.
2. Учитывать возможное уменьшение размера текстуры.
Второй пункт очень важен, если текстурные карты для игры будут уменьшаться, например из 2048 до 512.
Важно понимать, чем меньше текстура, тем больше должен быть padding между соседними элементами. Если же пренебречь данным параметром, то при запечке карт появятся неприятные артефакты, которые практически невозможно устранить вручную, либо на это у вас уйдет очень много времени.
Но при этом стоит помнить, что пространство UV необходимо использовать максимально и не оставлять совсем пустых мест.
Также существуют множество техник оптимизации UV и повышения качества картинки в целом.
- Оверлапы
- Симметрия
- Тримы
- Тайлы
- Атласы