Gamedev
XYZ School
9043

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

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

В закладки

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

Прошлые статьи из цикла:

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

План статьи:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для этого:

— Берём кисть Move, жмём кнопку Y, чтобы переключиться на линейку.

— Жмём CTRL + Shift.

— Ведём курсор к границе с другим объектом.

— Так выберется тот объект, на который мы кликали.

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

Так мы выбрали только середину шлема.Потом назначаем ей любой цвет во вкладке Color:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вкладка Zplugin -> Decimation Master позволяет пересчитать сетку и убрать очень много лишних полигонов.

Первым делом нужно просто нажать функцию Pre-process Current:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Слева — модель после функции 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:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Мышцы

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

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

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

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

Лицо

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

— 3Ds Max

— Blender

— 3D Coat

— Topogun

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

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

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

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

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

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

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

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

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

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

{ "author_name": "XYZ School", "author_type": "self", "tags": ["\u0448\u0430\u0433","8","7","6","5","4","3","2","1"], "comments": 21, "likes": 82, "favorites": 368, "is_advertisement": false, "subsite_label": "gamedev", "id": 91446, "is_wide": false, "is_ugc": true, "date": "Mon, 06 Jan 2020 15:02:38 +0300", "is_special": false }
0
21 комментарий
Популярные
По порядку
Написать комментарий...
6

Отличная статья! Респект школе XYZ!

Ответить
0

Благодарим!)

Ответить
3

Верните Луцая!

Ответить
0

Товарищ полицейский, ловите его. Он украл человека.

Ответить
2

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

Все так говорят, но никто еще нигде не объяснил - почему. ) Что такого страшного произойдет при неравномерной сетке? ;)
>Слишком вытянутые и кривые полигоны, разного размера — плохая практика. Игровые движки не очень хорошо их воспринимают.

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

Ответить

Замкнутый Орзэмэс

Severomor
2

Комментарий удален по просьбе пользователя

Ответить
0

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

Ответить
0

А также для SubDiv'a. Чтобы сглаживание было равномерное. Странно что никто про это не сказал. Конечно в геймдеве он юзается меньше, именно на стадии рендеринга, но иметь равномерную сетку - всегда хорошо. Меньше проблем. 

Ответить

Замкнутый Орзэмэс

0

Комментарий удален по просьбе пользователя

Ответить
0

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

Ответить
0

https://youtu.be/MapL3OQQn_g я ретоплю в блендере, но видел этот урок по ускорению. Там что то с настройками майки связано

Ответить
0

Это то о чем я писал выше про кэш видеокарты, но оно не решает именно именно эту проблему.

Ответить
0

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

Ответить
0

Вполне возможно. Хотя по ощущению там и так по умолчанию стоит всего операций 20-25 отмены, куда ж еще меньше.

Ответить
0

Я к стати запекаю в мармосете, там есть карта object id, тогда не надо каждый сабтул красить

Ответить
0

аццкий труд, это ваше моделирование :)

Ответить
0

А если я делаю например фату, она должна быть полупрозрачная, т.е. под ней должна  быть видна голова) то фату с головой не надо объединять в браше? И как быть с внутренней стенкой/изнанкой? Ретопить получается с двух сторон отдельно фату от головы? А толщину надо в таком случае делать ткани? 

Ответить
0

Фату делать отдельно, но ретоп также с одной стороны. Если она конечно не будет выворачиваться наизнанку. Геометрия должна быть только с той стороны, которая будет видна в камере. А прозрачной любого объекта уже настроишь в движке через соответствующий шейдер.

Ответить
0

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

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

Ответить
0

почему не используется ремешер?

Ответить

Комментарии

{ "jsPath": "/static/build/dtf.ru/specials/DeliveryCheats/js/all.min.js?v=05.02.2020", "cssPath": "/static/build/dtf.ru/specials/DeliveryCheats/styles/all.min.css?v=05.02.2020", "fontsPath": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700,700i&subset=cyrillic" }