(UV) Развёртка стилизованного персонажа

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

Развёртка (UV) — третий этап ААА-пайплайна. На прошлом этапе мы сделали ретопологию, на позапрошлом — скульпт, а сейчас будем разворачивать нашу модель на плоскость для дальнейшего текстурирования.

1.jpg


План статьи

  1. Что такое развёртка.
  2. Инструменты для работы и авторазвёртка.
  3. Как делать разрезы на UV.
  4. Работа с чекером и исправление потягов.
  5. Оптимизация UV шеллов.
  6. Как поместить шеллы в первый квадрат UV.
  7. Чек-лист по развёртке.
  8. Развёртка других элементов стилизованного персонажа.


Подписывайся на нас, чтобы не пропустить следующий выпуск!
Мы в VK, Facebook, Instagram и Youtube.


В этой статье будет больше про кнопки и особенности стилизованных персонажей, так как
про теорию UV мы уже писали в этой статье.


Что такое развёртка, зачем она нужна

3D модель, по определению, сделана из объемных форм.
На любой объект в редакторе можно положить материал, выбрать его цвет и настроить блик.

Но положить текстуры на 3D объекты нельзя до тех пор, пока ты не сделаешь развёртку. Программа просто не знает как накладывать плоскую текстуру на геометрию.

Отсюда возникает отдельный этап пайплайна — UV развёртка.

Развёртка переносит объёмные формы на плоскость для того, чтобы на них можно было положить текстуры.

Развёртка всегда создаётся из лоуполи модели, которую мы сделали на прошлом этапе — ретопологии.

2.jpg

Так выглядит готовая развёртка нашего стилизованного персонажа. Сейчас ты узнаешь, как её сделать.


Инструменты для работы

Нам удобнее работать в Maya, но принцип работы универсален для всех аналогичных программ. Везде есть автомапинг, разрезы и чекер.
Нам понадобится вкладка UV Editor и UV Toolkit.

3.jpg

UV Editor и UV Toolkit в Maya понадобятся для работы с развёрткой

Делаем авторазвёртку

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

Если тебе не знакомы термины, которые мы используем, обязательно прочитай другую нашу статью про UV, там они ВСЕ расписаны максимально доступным языком.

4.jpg

Делаем Camera-Based развёртку

После этой функции получился такой результат:

5.jpg

Camera-Based развёртка

Пока что это совсем не похоже на развёртку, ведь модель всё ещё не разложена на плоскость. Для этого нужно добавить швы (разрезы на UV).
Мы сделаем все этапы развёртки на примере шлема нашего персонажа, а в конце статьи разберём особенности развёртки других элементов.


Добавляем разрезы на UV

Создаются разрезы следующим образом:
Выделяем Edge, открываем UV Toolkit -> Cut and Sew -> Нажимаем Cut

6.jpg

Кнопка Cut

Есть 3 правила, где нужно делать разрезы (швы).

1. Разрезы делаются по возможности в незаметных местах модели.
2. Везде, где есть Hard Edge — добавляй разрез.
3. На стыке между двумя разными материалами — делай разрез.

Давай разберём эти моменты:


#1 Швы в незаметных местах

В принципе, ты можешь разрезать модель в любом месте.
Но уже на следующем этапе пайплайне (запечке) начнутся проблемы.
На местах разрезов на UV могут появится некрасивые полоски на карте нормалей, а так же, в игровых движках, при компрессии текстур.

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

Вот пример, где не надо делать швы:

7.jpg

Не делай швы посередине модели, в самых заметных местах. На этом скриншоте плохой пример.

Не забывай, мы моделим персонажа для компьютерной игры, поэтому по возможности прячь швы в местах, которые игрок не увидит:

8.jpg

Прячем швы на UV

Есть проблема: форма рога основана на цилиндре.

Так или иначе нам нужно добавить хотя бы один разрез, чтобы его разложить на плоскость.

Поэтому этот разрез мы сделали именно снизу, вот здесь:

9.jpg


Почему? Потому что в игре по большей части игрок будет видеть персонажа или спереди, или сзади.

И в этом месте разрез на роге почти не видно:

10.jpg


Именно поэтому мы сказали, что шов вот в этом месте — плохая практика:

11.jpg

Повторимся ещё раз — не делай швы в самых заметных местах

#2 Швы в местах, где есть Hard Edge

Везде, где есть хард — добавляй шов.
Так ты будет меньше проблем при запечке.

12.jpg

Добавляем швы на Hard Edge

#3 Швы на стыке двух разных материалов

В нашем примере, на рогах есть тряпка. В процессе текстурирования мы хотим её покрасить другим материалом.

13.jpg

Разделяем разные материалы швом

Для этого на стыке разных материалов всегда создавай разрез.

В таком случае, в программе для текстурирования можно будет легко сделать отдельную текстуру для этой тряпки.


Раскладываем модель на основе созданных швов

Итак, авторазвёртку мы сделали, швы создали. Пришло время разложить нашу модель на плоскость.

Функция Unfold разделит нашу модель на несколько отдельных UV шеллов
в местах, где мы расставили швы.

14.jpg

Что делает функция Unfold

Далее полученные UV шеллы нужно поставить на расстоянии друг от друга:

15.jpg

Перемещаем UV шеллы в сторону

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


Добавляем чекер

Чекер — это текстура с шахмотной доской, которая поможет тебе проверить развёртку на ошибки.

Если всё хорошо, то квадраты чекера будут ровного размера.
А если ты видишь, что квадраты вытянуты или изогнуты — при текстурировании то же самое произойдёт с твоей текстурой. Она начнёт некрасиво тянуться. Отсюда и появился термин «потяги».

Сейчас мы добавим чекер, увидим есть ли потяги, а затем будем их исправлять.
В большинстве случаев проблема с потягами решается за счёт добавления дополнительных швов на развёртке.

1.gif

Добавляем чекер, меняем размер его квадратов, чтобы было видно потяги

Но у нас появилась новая проблема — квадраты чекера разного размера.
Это значит, что разрешение текстур на финальной модели тоже будет меняться. Там где квадраты чекера маленькие — будет очень высокое качество текстур, а где квадраты большие — низкое.

Кстати, про связь между разрешением текстур и развёрткой, тексель и чекер мы писали здесь.

16.jpg

Квадраты чекера разного размера, это нужно исправить

Делать квадраты разного размера — хорошая практика, но делать это нужно осознанно и пока что нужно просто их выровнять.


Как сделать квадраты чекера одного размера?

Есть 2 способа:

#1. Автоматический способ

Maya может сделать разрешение текстур равномерным для всей модели, соответственно, квадраты чекера будут одинаковыми.

Нажимаем клавишу Shift и жмём на кнопку Layout,
Всплывёт окошко с настройками, выбираем Preserve 3D Ratios,
Нажимаем Apply.

17.jpg

Автоматически выравниваем размер чекера

Результат:

18.jpg

Квадраты стали одного размера

#2. Альтернативный способ

Мы можем выбрать любой из элементов нашего шлема, воспользоваться функцией Texel Density, и тогда все остальные элементы модели будут иметь чекер такого же размера, как у выбранного объекта.

Для этого:
1. Выбираем элемент с нужным размером квадратов чекера, нажимаем UV Toolkit → Tools → Texel Density → Get.
2. Выбираем все остальные элементы модели, нажимаем в том же месте кнопку Set.

2.gif

Функция Texel Density → Get, затем Texel Density → Set

Итак, квадраты теперь одного размера, но в некоторых местах они искажены, значит на развёртке есть потяги.

19.jpg

Пример потягов на UV

Как исправить потяги?

Первым делом, нужно слегка повернуть UV шеллы, чтобы выровнять чекер:

3.gif


Затем добавляем дополнительные швы, а после этого только у этого элемента жмём Unfold. Одного прохода было недостаточно, поэтому мы добавили разрезы в трёх разных местах шлема:

4.gif

Первый шов

5.gif

Второй

6.gif

Третий

Теперь после создания дополнительных швов все квадраты ровные, значит потягов больше нет! Можно идти дальше.

20.jpg

Развёртка теперь без потягов

Переходим к следующему шагу: нужно оптимизировать наши UV шеллы.


Оптимизируем UV шеллы

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

#1. Мапим длинные шеллы в прямую линию

На рогах у нас есть тряпка. Она примерно прямоугольной формы, но программа автоматически развернула её вот так:

21.jpg


Если на ткани будут складки или фактура — текстура исказится и криво ляжет на нашу модель.

Хорошая практика в подобных случаях — мапить подобные шеллы в прямоугольники.

Для этого выбираем крайний вертекс в UV редакторе, зажимаем клавишу B, выбираем соседние элементы и опускаем вниз:

7.gif

Мапим выбранный шел в прямоугольник

Затем нам нужно выпрямить эти шеллы.Выбираем их и включаем функцию UV Toolkit → Unfold → Straighten UVs:

8.gif


В этом примере мы выделили не весь шел, а его часть, потому что функция Straighten UVs не любит треугольники — они сильно искажаются.

9.gif

Функция Straighten UVs искажает треугольные шелы.

Треугольники так мапить нельзя, поэтому мы выпрямляем этот шел по частям, не трогая треугольник.

10.gif


Проверяем этот кусок на потяги, видим, что квадраты чекера после этой процедуры стали неровными:

22.jpg


Чтобы это исправить, немного смещаем эджи на UV:

11.gif


Так мапятся все аналогичные элементы нашей модели:

23.jpg

Этот шел ждёт та же участь — будем его выпрямлять

#2. Шеллы не должны пересекаться

Вот такого быть не должно:

24.jpg

Шеллы не должны пересекаться

Если шеллы пересекаются — появятся артефакты на текстурах.

#3. Шеллы должны быть на расстоянии друг от друга

Нельзя мапить объекты на UV вплотную друг к другу. Они должны быть на небольшом расстоянии друг от друга — это называется паддингом.
Подробнее здесь.

Вот пример:

12.gif

Добавляем расстояние между UV шеллами (паддинг)

25.jpg

Ещё один пример паддинга

#4. Кладём шеллы в первый квадрат UV

Есть 2 вида мапинга: тайловый и уникальный.
Очень подробно мы про оба вида мапинга и особенность первого квадрата мы писали здесь.

Тайловый мапинг используется в основном для зданий и предметов окружения, а для стилизованных персонажей нужно делать уникальный мапинг.

Особенность игровых движков заключается в том, что текстура ложится только на первый квадрат UV и не выходит за его пределы. А остальные квадраты бесконечно повторяют её.
Это значит, что все UV шеллы нашего персонажа мы должны положить внутрь первого квадрата UV.

Как это сделать?
Выбираем все шеллы,
Нажимаем UV Toolkit → Arrange and Layout → Layout.

13.gif


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

26.jpg

Пустое пространство на UV — это плохо

Чем больше места занимают шеллы внутри первого квадрата, тем выше будет разрешение текстур у финальной модели.

Есть ещё одна автоматическая функция, которая исправляет грехи предыдущей. Находится она в Layout UVs Options. Нажми на скриншот, чтобы увеличить и посмотреть выбранные нами настройки:

27.jpg

Настройки функции

Но и эта функция тоже не даёт идеального результата, плюс довольно долго грузится:

28.jpg

Результат — между шеллами меньше пустого пространства

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

Не забывай, что сейчас ты видишь только развёртку шлема, а нужно сделать развёртку всего стилизованного персонажа. Поэтому уместить в первый квадрат нужно не только шлем, а также все другие элементы.

Делается это по аналогичному принципу:


Чек-лист по развёртке

  1. Включаем Camera-Based авторазвётрку
  2. Делаем разрезы на UV
  3. Добавляем чекер, выравниваем
  4. Убираем потяги
  5. Оптимизируем шеллы
  6. Раскладываем все шеллы внутрь первого квадрата

29.jpg


Развёртка других элементов стилизованного персонажа

#1. Все ремешки и тряпки мапим в прямую линию

По такому же принципу, как мы уже показали сегодня.

30.jpg


#2. Все шеллы лежат внутри первого квадрата UV

Потому что мы делаем уникальный, а не тайловый мапинг.

31.jpg


#3. Повторяющиеся элементы сделали оверлапами

Так как эти элементы идентичны, мы мапим их вместе и тем самым экономим место на UV.

32.jpg

14.gif


Подробнее про оверлапы узнаешь в этом видео:



#4. Финальная проверка развёртки

Если включить функцию UV Distortion, то наша развёртка синим цветом покажет самые сжатые полигоны, а красным — все растянутые:

33.jpg


В данном случае, нас всё устраивает.
А если развёртка горит как светофор — нужно переделывать.

#5. Все швы спрятаны

34.jpg


#6. Другие полезные функции

Есть ещё несколько полезных функций для работы с развёрткой, которые не пригодились нам для данной модели.

Сшивание

В случае, если мы сделали лишний разрез, мы можем обратно сшить выбранные шеллы — выбираем их и нажимаем Sew.

15.gif


Optimize

Эта функция автоматически оптимизирует выбранные точки на UV.

16.gif


Flip

Позволяет отразить UV шелл:

17.gif


Что делать после развёртки?

После развёртки, следующий этап пайплайна — запечка.
На этом этапе мы будем переносить детализацию с хайполи на лоуполи.

Жди продолжения!
Подписывайся на нас, если ты ещё не с нами!
Мы в ВК, Facebook, Instagram и Youtube.

-----

Отзывы о XYZ School можно прочитать здесь: https://headkurs.com/schools/otzyvy-xyz-school/

-----

А если ты хочешь пройти весь пайплайн разработки стилизованного персонажа и получить индивидуальные фидбеки — ещё не поздно записаться на наш курс, который уже скоро стартует. Читай подробности в этой статье.

Жди продолжения!


Успехов тебе!

[ Конец статьи ]


771 0 850 12
2
2020-01-16
Статья понравилась! Кратко, по существу, с подробностями. Вот бы такое лет 20 назад прочитать, сколько бы времени сэкономилось бы! :)
2020-01-22
РоманФСтатья понравилась! Кратко, по существу, с подробностями. Вот бы такое лет 20 назад прочитать, сколько бы времени сэкономилось бы! :)
Тогда инструментов не было таких )))
Все делали пободное плейнами + цилиндрами, а потом сшивали это все между собой, затем ровняли и укладывали в UV квадрат ))) Это был просто АД ))) А сейчас полное баунти, все в две кнопки )))
RENDER.RU