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