# UV Развёртка Развёртка - это модель, сделаная из объемных форм. На любой объект в редакторе можно положить материал, выбрать его цвет и настроить блик. Но **положить текстуры на 3D объекты нельзя до тех пор, пока не сделана развёртка**. Программа просто не знает как накладывать плоскую текстуру на геометрию. Отсюда возникает отдельный этап пайплайна — UV развёртка. > Развёртка переносит объёмные формы на плоскость для того, чтобы на них можно было положить текстуры. Пример из реальной жизни: В оригами из плоского листа бумаги делаем объемный объект, а развёртка делает то же самое, но наоборот — из объемного делает плоское. ![](photo/uv.png) **Развёртка для видеоигр всегда делается из лоуполи модели** В мультфильмах и иногда в кино мапят хайполи с технологией **pTex**, которая позволяет текстурить модель без развертки, но это отдельная история. Если ты разрабатываешь модель для компьютерной игры, то разворачивается всегда лоуполи. **pTex** - формат, который содержит (2d-) информацию о пикселях каждой грани 3D модели. Формат был разработан студией "Disney" для 3d-рисования. Формат был с открытым исходным кодом. ___ С чего начинается работа с развёрткой? В любом 3D редакторе есть инструментарий для работы с UV. Базового функционала той же Maya хватит, чтобы сделать развёртку даже для очень сложной модели. Но для удобства и редких фишек (например, отрисовка паддинга) иногда используют отдельные программы, созданные исключительно для работы с UV. **Паддинг** - это текстурный отступ, нужен чтобы на модели не было швов, при генерации. ___ Как видно на картинке, у куба есть 8 точек и 6 квадратных полигонов. ![](photo/cube.png) Но количество точек на UV больше, чем на самой модели т.к. одна точка на модели может иметь несколько точек на UV. ![](photo/uvdote.png) В общем, каждая точка будет принадлежать полигону, который с ней связан. Главное сейчас — **каждый полигон имеет своё место на UV** как плоский объект, чтобы программа знала как класть текстуру на геометрию. ___ Два вида мапинга Без теории не обойтись.Когда ты разворачиваешь объекты на UV, есть 2 пути: 1) Сделать **уникальный мапинг**. 2) Сделать **тайловый мапинг**. ![](photo/mapping.png) На квадрат на UV, который находится от 0 до 1 важнее. Именно на него накладывается текстура, а на всех остальных квадратах текстура просто повторяется. ![](photo/cubeuv.png) Если разворачивается модель на UV так, что все объекты находятся в первом квадрате и не выходят за его пределы, это называется уникальным мапингом. **Делая hard surface или персонажей для игры, тебе нужно делать именно уникальный мапинг**. А для объектов окружения, ландшафтов и зданий часто используется тайловый мапинг. **Hard surface** - твердые отражающие поверхности. ___ ### Уникальный мапинг Пример: Мы хотим замапить наш грузовичок. У него есть текстура с деревом для кузова и текстура с крашеным металлом для кабины. ![](photo/truck.png) Мы можем сделать 2 материала. Один под дерево, другой под крашеный металл. И уже мапить объекты на эти 2 материала. Но есть нюанс. Каждый новый материал — это лишний вызов отрисовки (draw call), который нагружает игровой движок. А мы моделим грузовичок для игры. Нам крайне важно использовать минимальное количество ресурсов. Поэтому, вместо этого мы делаем всего один материал. Сначала мы разворачиваем все объекты на UV, потом кидаем в фотошоп или Substance Painter и красим эти элементы по отдельности. > На важные объекты для больших современных игр можно добавлять по 3-5 материалов. На выходе мы получаем одну единственную квадратную текстуру, сделанную специально для нашей модели. ![](photo/uvtex.png) Это и называется **уникальным мапингом**. Это технология, которая заключается в следующем: — Мы мапим все объекты на UV только в первый его квадрат. Ни один из шеллов не выходит за его пределы, и шеллы не пересекаются. — Объекты покрашены по-разному (кузов деревянный, кабина из крашеного металла). Причём это не повторяющиеся, а уникальные текстуры. — Но на выходе мы имеем одну единственную текстуру и один материал, тем самым экономим ресурсы игрового движка. ___ ### Тайловый мапинг Как уже известно, **квадраты на UV бесконечны**. Это значит, что текстура, которая положена в первый квадрат будет повторяться бесконечное количество раз. **Это бесконечное повторение текстур называется тайлом.** Тайловый маппинг очень часто используется **для развёртки зданий, предметов окружения и ландшафтов.** Мы хотим сделать развёртку этого дома и для этого: ![](photo/building.png) Сначала мы создадим материалы с бесшовными текстурами. Потом кладём их на геометрию с помощью авторазвёртки (box maping). И так делаем для каждого из объектов. Для стены дома — один материал с кирпичной кладкой. Для прилавка — другой материал с текстурой дерева. И так далее. ![](photo/materials.png) Ещё один момент — при тайловом мапинге сами UV шеллы могут выходить за пределы первого квадрата UV. Это нормально. Зачем это нужно? Представь, что у вас есть бесшовная текстура с кирпичом. Если развёртка всех стен будет в первом квадрате, то кирпичи будут слишком крупными. Так как текстура с первого квадрата бесконечно повторяется, а у текстуры нет швов — мы просто меняем размер шеллов на UV и подбираем подходящий для нас размер. В автомапинге не так важно как выглядит UV развёртка. В отличие от уникального мапинга, нет смысла умещать все шеллы внутри первого квадрата и экономить пространство на UV. Главное, чтобы текстуры выглядели аккуратно и без потягов. Надеюсь, что сейчас ты понял разницу между уникальным мапингом и тайловым. Вот так выглядит наш дом после развёртки и текстур. ![](photo/afterbuilding.png) Говоря про тайловый мапинг, есть один важный момент насчёт текстур. Если не нужны швы при повторении текстуры нужно использовать **тайловые текстуры**, то есть текстуры без швов. И есть целый ряд библиотек с тайловыми текстурами. Вот несколько полезных сайтов: > textures.com texturehaven.com poliigon.com >quixel.com/megascans/library ![](photo/tile.png) Тайловая текстура, т.е. текстура, которая повторяется без швов.Но есть нюансы. У нас в сцене есть несколько разных фруктов. ![](photo/fruits.png) Кусок сцены с фруктами. Как ты знаешь, каждый из материалов — это отдельный вызов отрисовки в игровом движке. Чтобы сэкономить ресурсы и не создавать под каждый из фруктов отдельный материал, мы нарисуем одну текстуру и замапили на неё все фрукты. В игре мы почти все не тайловые текстуры засунули бы в один атлас, сделали бы его плотнее и аккуратнее. ![](photo/map.png) Одна текстура — и сразу несколько покрашенных объектов. Это простейший атлас.​ Атласы — это один из приёмов, которые часто используются в видео играх. Раз речь зашла о текстурах, есть ещё один момент, который нужно знать.**Лучше всего работать с квадратными текстурами.** Оверлапы сэкономят пространство на UV Если на модели есть одинаковые элементы, например, болты на обшивке, то на UV их можно размапить на один и тот же UV shell.