Ретопология стилизованного персонажа

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

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

Прошлые статьи из цикла:
ААА-пайплайн разработки стилизованных персонажей
9 полезных инструментов ZBrush
Скульпт от первого лица


Что тебя ждёт сегодня

План статьи:

  1. Что такое ретопология, зачем она нужна?
  2. Экспорт скульпта из ZBrush.
  3. Создание lowpoly модели в Maya.
  4. Нюансы ретопологии.
  5. Чек-лист.
  6. Особенности ретопа стилизованных персонажей.
  7. Технические моменты при ретопе персонажей.
  8. Что делать после ретопологии?

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


#1 Что такое ретопология, зачем нужна?

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


1.jpg

Скульпт нашего персонажа

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

Проблема в том, что у нашего скульпта 7 миллионов полигонов:


2.jpg

У нашего скульпта более 7 миллионов полигонов

Разумеется, такую модель никак не засунуть в игровой движок.
Для этого нам нужно сделать lowpoly модель — то есть упрощённую модель с минимальным количеством полигонов. И уложиться в лимит в 20 000 - 80 000 полигонов на всего персонажа.

Затем мы перенесём детализацию с нашего скульпта на lowpoly модель через Normal Map, используя технологию запечки.

Чтобы ты понял, как работает эта технология, мы написали огромную теоретическую статью про сетку. Обязательно прочитай её, если хочешь понять как работает комбинация: Lowpoly + Normal Map.

3.jpg

Как это работает, ты узнаешь в этой статье.

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

Этот процесс начинается с того, что нужно подготовить наш скульпт в ZBrush к ретопологии.


#2 Экспорт скульпта из ZBrush

Открываем наш скульпт в программе Zbrush:

4.jpg

Наш скульпт в ZBrush

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


5.jpg

Этот шлем сегодня будем ретопить

Начало работы

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

Сейчас нам нужно проверить всю геометрию и слегка оптимизировать.

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

6.jpg


Чтобы не создавать лишних полигонов, по возможности, желательно прижать ремешок к поверхности:

1.gif

Прижимаем геометрию, чтобы не было зазора

Раз мы внесли изменения в наш скульпт, не забываем сохранить изменения, чтобы в дальнейшем, скульпт и lowpoly модель были идентичной формы.

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


#Шаг 1: Красим модель для ID Map

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

На этом этапе мы не запекаем карту, а просто красим модель в разные цвета.

Это не текстуры и не цвета будущей модели, нужно визуально разделить разные объекты, чтобы при текстурировании можно было выбирать их по отдельности.

Потому что когда будем ретопить, вся сетка будет единой. И выбрать, например, только рога на шлеме уже не получится. Для этого разделяем объекты, красим в разные цвета в Zbrush. Все похожие детали = одинаковый цвет.

Цвета могут быть любыми, главное чтобы они были контрастными и отличались друг от друга.

Для этого:
— Берём кисть Move, жмём кнопку Y, чтобы переключиться на линейку.
— Жмём CTRL + Shift.
— Ведём курсор к границе с другим объектом.
— Так выберется тот объект, на который мы кликали.

2.gif

Выбираем только шлем, без рогов и тряпки через кисть Move

Так мы выбрали только середину шлема.

Потом назначаем ей любой цвет во вкладке Color:


Красим выбранную область.

Всё хорошо, только покрасилось наоборот. Поэтому в нашем случае маску необходимо инвертировать.

Для этого жмём CTRL и жмём на пустое пространство:

4.gif

Инвертируем маску

Таким же образом красим все элементы в разные цвета:

5.gif

Красим объекты в разные цвета для ID Map

#Шаг 2: Сохраняем хайполи

Сохраняем то, что мы только что покрасили. Это и есть хайполи нашей модели.
Сохраняем его в отдельный файл в формате .obj.
С него мы будем запекать все необходимые карты на этапе пайплайна под названием «запечка».


Готовим модель к ретопологии

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

В тот момент, когда мы в Maya будем создавать новую сетку, желательно на этапе скульпта объединить все элементы в одну топологию. Так будет проще работать в дальнейшем.

Шаг 1: Объединяем все элементы в одну сетку

Для этого нам понадобится уже знакомая тебе функция:
Tool -> Geometry -> Dynamesh

6.gif

Dynamesh объединил геометрию, но потерял детализацию из-за низкого разрешения

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

7.gif

Внешне ничего не изменилось, зато теперь геометрия единая

Геометрия объединилась, детализация сохранилась и работа в Maya стала немного проще.

Но, как ты помнишь, сетка в Zbrush супер плотная, сейчас только у шлема более 800 000 точек. А у всего персонажа их всё ещё более 7 миллионов, Maya скорее всего не сможет открыть такой файл.

Шаг 2: Убираем лишние полигоны

Вкладка Zplugin -> Decimation Master позволяет пересчитать сетку и убрать очень много лишних полигонов.
Первым делом нужно просто нажать функцию Pre-process Current:

7.jpg

Функция Decimation Master -> Pre-process Current

После этого, мы можем сказать программе, какой процент от текущего количества полигоном мы хотим оставить:

8.gif

Оставляем 5% от текущего количества полигонов

Таким образом у нас осталось всего 43 000 полигонов, а формы сохранились.
На этом этапе нас это количество устраивает. А после ретопа в Maya останется ещё меньше.

Жмём Tool -> Export и сохраняем в формате .obj
Подготовка модели к ретопологии в Zbrush на этом этапе заканчивается.


#3 Ретопология в Maya

Если модель при импорте расположена как-то странно, это легко исправить.

8.jpg

Модель лежит не той оси

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

Заходим в настройки: Preferences -> Settings -> World Coordinate System = 'Y'

9.jpg

Теперь модель расположена нормально

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

10.jpg

Жмём на магнитик, чтобы запретить редактирование модели

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

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

Нам понадобится окно Modeling Toolkit.
Внутри него нас интересуют 4 кнопки в разделе Tools:

11.jpg

4 инструмента, которые нужны для ретопологии

Теперь, когда модель заблокирована, если мы нажмём во вкладке Modeling Toolkit -> Quad Draw, то все созданные вертексы будут лежать на поверхности нашей модели, как мы и хотели:

9.gif


Кстати, если развернуть вкладку Modeling Toolkig -> Keyboard/Mouse Shortcuts, то мы увидим список всех горячих клавиш, которые нам пригодятся для работы:

12.jpg

Список горячих клавиш для ретопологии

Итак, у нас уже есть наша модель.


Наша задача - создать абсолютно новую сетку поверх текущей,
с минимальным количеством полигонов.


Особенности функции Quad Draw и горячие клавиши

Как только мы создали первые точки через функцию Quad Draw, если зажать Shift и навести на область между ними, то программа подсветит область между ними. Это значит, что из этих точек можно создать новый полигон. Жмём левой кнопкой мыши, чтобы его создать:

10.gif

Ставим 4 точки, наводим мышку и создаём новый полигон, используя клавишу Shift

Разумеется, при нажатии на сам вертекс, можно изменить его положение:

11.gif

Изменяем положение вертекса

А если выделить конкретный Edge (линию) и зажать D, то можно создать новый полигон, который одна из сторон которого будет прилегать к текущему полигону. Эта функция называется Extend.

12.gif

Создаём новый полигон, прилегающий к уже существующему, используя Extend (клавиша D)

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

Ещё парочка полезных горячих клавиш.

Если навести на полигон и зажать CTRL, можно создать внутри полигона новый эдж:

13.gif

Клавиша CTRL создаёт новые эджи внутри выбранного полигона

Если нажать CTRL + Shift, то при нажатии на Edge он удалится:

14.gif

Удаляем эдж, используя CTRL + Shift

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

Их очень мало и они достаточно просты для понимания.


Находим симметрию

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

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

13.jpg

Находим симметрию у модели, если она есть

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


#4 Нюансы ретопологии

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

Равномерность сетки

Следи за плотностью сетки, она должна быть равномерной.

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

Итак, начинаем:

15.gif


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

14.jpg

Пример квадов

Вот пример, как делать не стоит:

15.jpg

Плохой пример: полигоны кривые, разного размера

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

Вот ещё один плохой пример:

16.jpg

Не делай так, пожалуйста

Мелкие детали

Если ты видишь, что на некоторых важных деталях нужны мелкие полигоны - смело создавай их, чтобы не потерять форму. Как, например, у нас в деталях на шлеме:

17.jpg


Дальше мы просто создаём всё больше полигонов, используя по большей части функции Quad Draw и Multicut:

16.gif


Разбиваем на треугольники

В подобных местах, разбивай полигон на треугольники:

18.jpg

Плохой пример

Делается это вот так:

19.jpg

Хороший пример

Выравниваем сетку

Полигоны должны повторять форму исходной геометрии. Если видишь, что линия неровная, жми Shift эта функция поможет выровнять сетку:

17.gif

Выравниваем сетку через Shift

Сложные места разбиваем на более мелкие полигоны:

18.gif

При необходимости можно создавать мелкие полигоны

Работа с острыми углами

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

20.jpg


Про то, как работать с хард эджами, мы уже писали вот здесь.


Избегаем проблем с запечкой

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

21.jpg


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

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

19.gif


Завершение ретопологии шлема

Итак, ретопологию шлема мы закончили, сетка выглядит вот так:

22.jpg


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

Если ты помнишь нашего «бугая», его лоуполи выглядит вот так:

23.jpg

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

Слева — модель после функции Decimation в ZBrush.

Справа — лоуполи модель, сделанная в Maya.


#5 Чек-лист по ретопологии

Подведём итоги. Сохрани чек-лист, чтобы не потерять!


Этап 1: Подготовка в ZBrush

— Прижимаем геометрию
— Красим модель в разные цвета для ID Map
— Сохраняем модель в формате .obj
— Объединяем геометрию через Dynamesh
— Убираем лишние полигоны через Decimation Master
— Сохраняем версию модели после Decimation в формате .obj
— При ретопологии используем именно эту версию модели (после Decimation)


Этап 2: Создание lowpoly модели

— Жмём на «магнит», чтобы заблокировать модель
— Создаём новую сетку поверх текущей, используя Modeling Toolkit → Tools
— Сохраняем лоуполи модель


Вся теоретическая часть

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


#6 Особенности ретопа стилизованных персонажей

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

Анимация

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

Вот 2 прямоугольника, один состоит из 2 частей, другой — из 4:

24.jpg


Анимация деформирует твою геометрию. Давай согнём оба прямоугольника посередине:

20.gif


А теперь давай посмотрим, что получилось:

25.jpg


Приглядись и увидишь, что геометрия, где было меньше полигонов, деформировалась сильнее.

Давай посмотрим, как эта особенность анимации влияет на ретопологию нашего персонажа.

Складки, шмотки

Присмотрись к этой ретопологии ткани:

26.jpg

Скульптим складки

Момент 1: Складки сделали треугольниками.

Чтобы они лучше повторяли форму исходной геометрии.

Момент 2: Сетка состоит примерно из одного количества лупов на складках, что и на ногах

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

27.jpg


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

Пальцы, кости

Всегда учитывай то, что эти места будут анимироваться.

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

Делается это следующим образом:

28.jpg

29.jpg

Сетка на местах, где находятся кости

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

Мышцы

Полигоны должны повторять форму мышцы и образовывать легко читаемую линию:

30.jpg

Ретопим мышцы груди

На этом скриншоте ты видишь, что мы добавили маленькие полигоны в нижней части мышцы (точка 1).

А в середине груди, в месте солнечного сплетения, мы сделали сетку из треугольников (точка 2). Так при анимации, например, повороте корпуса налево или направо, она точно не исказится.

Лицо

Ретопология лица — отдельная, большая тема, достойная отдельной статьи.

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

Мы нашли очень классную статью на PolyCount Wiki. Прочитав её, ты поймёшь, что ретопология лица персонажа, особенно с высокой степенью реализма — отдельная наука.

31.jpg

Материал взят отсюда: http://wiki.polycount.com/wiki/FaceTopology

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

Там каждый полигон лежит на своём месте. А ты моделишь уже всё остальное.

У нашего персонажа всё гораздо проще, потому что у него высокая степень стилизации и низкая степень реализма. Соответственно, сетка достаточно простая:

32.jpg


Тем не менее, анимируется лицо вполне нормально, даже с такой простой сеткой:

21.gif

Тестовая анимация для примера

#7 Технические моменты при ретопе персонажей

Работа с сеткой не так проста, как кажется на первый взгляд.
Давай разбираться!

Триангуляция

Работа выглядит следующим образом:

Шаг 1: Мы создаём лоуполи модель так, как мы писали в этой статье. На выходе получилась модель с квадами, в некоторых местах есть треугольники там, где они нужны. Эту версию лоуполи модели мы отправляем аниматору. С квадами ему будет проще работать.

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

Давай разберёмся, почему на шаге 1 мы создавали квады:

Как подружиться с аниматором

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

Аниматор будет привязывать к «костям» вертексы. Ему удобнее это делать в случае, когда модель состоит из квадов и есть лупы полигонов. В случае с ногой персонажа, как правило, это такие вертикальные или горизонтальные линии:

22.gif

Вертикальные и горизонтальные эджи

Давай сравним, как будет выглядеть модель квадов и треугольников:

33.jpg

Слева — только треугольники. Справа — по большей части квады, плюс пара треугольников

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

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

Это не значит, что нельзя делать треугольники или квадраты. Там где они нужны, мы их добавляем, но основной «строительный материал» lowpoly сетки у нас — это прямоугольники.

На всякий случай скажем, в этом вопросе сложно найти однозначно 100% верный ответ. Читай ТЗ, общайся с командой разработки и поймёшь, каким полигонам отдать предпочтение.

Единая геометрия или нет

В нашем случае мы объединили почти всю геометрию в одну топологию.
Но шлем, меч и другие атрибуты мы сделали отдельной топологией.

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

Может быть ты видел шапки в Team Fortress или маски в PayDay 2?
Если на проекте будут разные скины брони или всевозможных шлемов и головных уборов — в таких случаях нужно их отдельной геометрией.

Обязательно читай ТЗ проекта, иначе потом будет больно. Уже слитую геометрию нельзя так просто разделить.


Задние стенки

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

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

34.jpg

Внутреннюю часть не нужно делать, если её не видно в игре

Софт для ретопологии

Можно использовать любую удобную для тебя программу.
Мы работали Maya, но также для ретопа используют:

— 3Ds Max
— Blender
— 3D Coat
— Topogun

И другие программы. Принцип работы, который ты сегодня узнал универсален. Меняется только интерфейс и название функций.

Лимит на полигоны

Наш опыт показывает, что на большинстве проектов есть лимит в 20-80 тысяч полигонов на стилизованного персонажа. Иногда немного больше.


#8 Что делать после ретопологии

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

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

Отзывы о школе: https://headkurs.com/schools/otzyvy-xyz-school/

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

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

У нас есть бесплатный онлайн-курс, на котором ты сможешь узнать основы работы в ZBrush и создать свою первую модель за пару дней обучения
Зарегистрироваться

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

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




806 0 850 19
1
2020-01-07
Момент с разбиением хайполи по цветам ID - мне кажется в некоторых ситуациях быстрее было бы разбить всю модель на отдельные полигруппы Auto Group поправить копируемые/симметричные детали по необходимости, а затем покрасить модель так же автоматически в режимиме Polypaint => Polypaint from Polygroups, и уже затем перекрасить только соседние не контрастные. Если отдельных частей по ID больше 10 - то это будет быстрее. В остальном статья отличная в плане формулировок, годами делаешь стандартный пайплайн, а объяснить кому-то почему надо делать квады а не треугольники не можешь XD, теперь смогу объяснить новичку просто и быстро, а не нудно и долго.
RENDER.RU