Когда скиннинг решает: как не превратить работу в День сурка

Меня зовут Наталия Величко, я Animation Artist в Plarium Kharkiv. В этой статье я расскажу о нюансах скиннинга для RPG с 400+ персонажами.

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

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

В проекте Raid: Shadow Legends мы столкнулись с подобной задачей. Сейчас в игру добавлено 400+ персонажей, и с каждым новым апдейтом их становится всё больше. В таких ситуациях требуется особый подход к скиннингу.

Какие моменты нужно учесть при работе с большим количеством героев?

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

Ниже приведены примеры некоторых существующих ригов.

1RigTemplates.jpg

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

Также важно сверить полученный результат скина с концептом героя и проверить:

  • пропорции,
  • положение оружия,
  • расположение щита,
  • внешний вид обмундирования и текстуры,
  • соответствие силуэта видению художника.

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

Влияние правильной настройки скина на анимацию и визуализацию персонажа в проекте

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

2Untitled.gif

3Untitled.gif

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

Когда персонажей много, а анимация одна

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

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

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

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

Скиннинг персонажей с уникальной геометрией

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

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

4Untitled-1.jpg

Одним из нестандартных персонажей был Криск – в риге данного типа не предусмотрены кости для панциря и обвесов на ногах. Перед нами стояли две противоречивые задачи:

  1. руки, хвост и тело не должны проникать в панцирь при анимациях;
  2. панцирь должен держать свою естественную форму и не сильно поддаваться сгибанию.

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

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

Оптимизация процессов для экономии времени

Наш проект развивается, сложность поставленных задач растет, а количество времени на разработку одного персонажа уменьшается с каждым апдейтом игры. Чтобы сэкономить время, при помощи Mirror Skin Weights мы отзеркаливаем вес готовой половины меша на еще не заскинненую. Но что, если персонаж не симметричен и скин копируется не корректно? Или у каждого второго персонажа есть длинная юбка, и мы теряем время, настраивая скин для каждой? В таких случаях мы используем пропсы – это низкополигональная геометрия, которая повторяет форму той части персонажа, на которую будет копироваться скин. На нашем проекте уже создана библиотека пропсов для юбки, крыльев, волос, плаща, хвоста и прочих элементов, которые команда может использовать для ускорения процесса скиннинга.

Как работать с пропсами?

  1. Создайте низкополигональную геометрию на основе модели персонажа. Для примера будем использовать плащ.
  2. Привяжите модель к скелету и распределите вес на вертексы пропса.
  3. Перенесите веса с пропса на нужные нам вертексы или на всю геометрию через Copy Skin Weights.

Проверим результаты на анимации персонажей:

6Untitled-3.gif

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

7reuse.gif

Значительно упростить и ускорить процесс скиннинга могут различные скрипты. Например, вы можете использовать Deformation Learning Solver: работает с Maya 2014 и выше, но в Maya 2018 может работать нестабильно. Он пригодится, когда у модели сложная геометрия и плотная сетка. Минус этого скрипта – нужно тщательно проверять распределение веса и количество костей, которые влияют на вертекс. Иначе на теле будет влияние волос или плаща, а на ногах – юбки.

Этапы работы со скриптом:

  1. Чтобы скрипт работал корректно, во время настройки скина персонажа каждому вертексу нужно дать вес только одной кости. Скрипт может автоматически распределить вес, но лучше этим не пользоваться – может пострадать качество.
  2. Открываем Deformation Learning Solver, выбираем геометрию и переходим во вкладку Tool → Apply Delta Mush.
  3. В Inputs выбираем поле deltaMush и указываем нужную степень сглаживания Smoothing Iterations. По умолчанию стоит максимальное значение 20.
  4. Смотрим на анимации степень сглаживания: Deformation Learning Solver → Sampling → Run.
  5. Выбираем геометрию, переходим во вкладку Learning → Solve.
  6. Чистим влияние, удаляем лишний вес с вертексов.
  7. Проверяем результат.


9test.gif

За два года работы над этим проектом у нас было много сложных и необычных задач, но мы всегда находили новые способы, как обойти риг и сделать качественный скин и анимацию персонажа. Гибкость и поиск новых способов оптимизации рабочих процессов – один из важнейших принципов нашей работы. Мы всегда рады поделиться находками – ищите наши новые фишки для создания анимации в следующих статьях!
751 0 850 7
7
2019-12-24
Имхо, на некоторых персах скиннинг очень спорный, возможно это косяк был допущен уже в юнити где стоит в настройках влияние на вертекс только одной кости а не 4, но когда элементы брони типо наплечников (конкретно для примера герой Разен на самом деле их много с косяками и их можно сделать нормально) начинают ломаться выглядит не очень хорошо... но учитывая объем работы возможно просто не хватало времени на таке вещи.
2019-12-24
Есть статья, как в анриале работать с кастомизацией персонажа? Удалять и менять предметы одежды.Общие правила и особенности.
2019-12-25
И так. Из за того что мой коментарий удаляется скажу кратко. Статья не решает представленной проблемы. Это тупо реклама проекта, которая лезет из всех щелей.
2019-12-25
Не заметил ни одной навязчивой рекламы, не то что из всех щелей
2019-12-25
0 пользы - максимум упоменаний игры, и одной из ее особенностей. В этой статье не сказано НИЧЕГО конкретного. Никаких правил или пайплайна создания нового скелета из старого без потери анимаций например. Когда я пишу статью, например, то не упоминаю свою игру, группу в вк или ютуб канал. Просто пишу по делу. А единственное что можно принять за рекламу - то что статья написана в моей группе в ВК... и все. Тут же все наоборот.
2020-01-02
Иван МельниковИмхо, на некоторых персах скиннинг очень спорный, возможно это косяк был допущен уже в юнити где стоит в настройках влияние на вертекс только одной кости а не 4, но когда элементы брони типо наплечников (конкретно для примера герой Разен на самом деле их много с косяками и их можно сделать нормально) начинают ломаться выглядит не очень хорошо... но учитывая объем работы возможно просто не хватало времени на таке вещи.
В некоторых случаях могут возникнуть подобные ситуации из-за сборки в Unity и большого количества персонажей. По мере развития проекта мы возвращаемся к первым персонажам и дорабатываем их. Также часто выбирается компромиссный вариант, который бы хорошо выглядел на большинстве анимаций и не искажал задуманный силуэт.
2020-01-02
Ян КушнирЕсть статья, как в анриале работать с кастомизацией персонажа? Удалять и менять предметы одежды.Общие правила и особенности.
Такой статьи нет. Мы не работаем с движком Unreal Engine.
RENDER.RU