Главная / Практика / Как создать динамический сетап анимационного персонажа в Autodesk Maya

Как создать динамический сетап анимационного персонажа в Autodesk Maya

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

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

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

Итак, займемся динамикой одежды в программе Autodesk Maya 2014 на примере персонажа Фроси.

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

Часто персонажи имеют очень детализированную и высокополигональную одежду. Чтобы увеличить скорость просчета симуляции солвером (nucleus) программы, создают прокси-объекты (proxy). В роли прокси-объектов выступают низкополигональные копии одежды, на которых как раз и просчитывается симуляция, а на основную геометрию костюма мы только передаем деформации за счет различных деформеров (deformers). Низкополигональные копии увеличивают производительность и даже могут дать более красивый результат, чем если бы мы просчитывали всю одежду полностью.

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

Но вернемся к нашей Фросе и ее прокси-юбке. Пора назначить на нее nCloth. Но если мы это сделаем, то юбка уже не будет следовать за перемещением персонажа в сцене. То есть, если мы загрузим нашу героиню в анимационную сцену и подвинем ее за контрол (control), юбка останется в центре глобальных координат, так как солвер «ничего не знает» о том, что у нас есть персонаж, и это именно его юбка, и именно за ним она должна перемещаться. Чтобы это исправить, мы выделим скелет Фроси за рутовую (главную) кость, потом выделим прокси юбки, пойдем в меню animation и выберем команду Smooth Bind.

Теперь, если перемещать девочку за контролы, прокси юбки всегда будет следовать за ней. Не помешает также перекинуть «веса» с исходной юбки на прокси при помощи команды Copy Skin Weights.

Обычно в студиях, где используется динамика одежды в анимационных сценах, персонажей всегда выставляют в Т-позу, чтобы при начале просчета одежды, она всегда была в исходном положении, в котором ее смоделировали. Если поза будет отличаться от исходной, нам поможет копирование «весов» с исходной геометрии. Ведь на исходной одежде они уже прокрашены корректно – это учли еще на этапе создания рига персонажа.Теперь можно назначить nCloth на прокси юбки. Выделяем юбку, идем в меню nDynamics и жмем на команду Create nCloth.

После этого у нас автоматически создастся солвер (nucleus) и сформируется динамика у выделенного объекта. Теперь мы можем сделать предварительные настройки для загрузки персонажа в анимационную сцену. Первое, на что стоит обратить внимание – это нода солвера, которую мы можем увидеть в аутлайнере (outliner).

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

Кроме того, следует обращать внимание на такие основные настройки, как Substeps и Max Collision Iterations. Оба параметра позволяют повысить качество просчета вашей динамики. Substeps отвечает за то, сколько промежуточных кадров будет просчитываться в межкадровом интервале. Например, если по замыслу ваш персонаж двигается очень быстро, то Substeps нужно повысить, иначе солвер не успеет просчитывать ткань, и она будет бажить. Max Collision Iterations устанавливает, сколько раз, максимум, солвер будет обращаться к вершинам вашего объекта для определения их последующего положения в пространстве. Его также стоит повышать при быстрых и сложных симуляциях. Параметр Time Scale отвечает за скорость протекания процессов при симуляции.

Обычно, если вы правильно задали параметр Space Scale, то для настройки симуляции ткани можно выбрать один из пресетов и немного подкрутить его. Не будем сейчас углубляться в дебри всего, что там можно настраивать, – этому надо посвящать отдельный большой мануал. Выберем стандартный «майский» пресет. Для этого выделим прокси юбки, перейдем в Attribute Editor и нажмем в нем на кнопку Presets в верхнем правом углу, а из выпадающего списка выберем пресет tshirt, нажав команду Replace.

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

Если теперь мы нажмем кнопку play и запустим просчет симуляции, наша юбка будет свободно падать, пролетая сквозь персонаж. Чтобы это поправить, присоединим (приконстрейним) ее к телу и создадим объекты коллизии, от которых юбка будет отрабатывать. Для этого выберем прокси юбки, перейдем в режим выделения вертексов и обозначим их на поясе. Затем выделим тело персонажа и нажмем команду Point to Surface.

Таким образом мы «оденем» юбку. Теперь, если нажать кнопку play, юбка будет прикреплена к поясу Фроси, но будет проникать внутрь. Это происходит потому, что в данный момент Maya автоматически создала объект коллизии (Passive Collider), но не включила её, а только зафиксировала юбку на объекте. Чтобы включить коллизию, выделим тело персонажа и в Attribute Editor активизируем галку collide.

Для включения в коллизию дополнительных объектов (например, рук и головы), обозначим интересующий нас объект и выберем команду Create Passive Collider.

Это создаст объект коллизии, и при выполнении данной команды галка collide установится автоматически.

Теперь нужно сделать так, чтобы исходная ткань юбки наследовала трансформации, которые будут возникать на прокси-объекте при симуляции. Для этого мы можем  объединить нашу высокополигональную юбку и низкополигональную прокси. Для этого выберем сначала высокополигональную юбку, затем низкополигональную, перейдем в меню animation и там нажмем команду Wrap.

Теперь можно скрыть прокси-геометрию, нажать play и увидеть, как исходная геометрия юбки опустится на Фросю.

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