Создаем плащ в Maya
Гайд по симуляции ткани для новичков
Если вы уже знакомы с 3D анимацией, то знаете, что ткань крайне редко анимируют вручную: очень долго, очень сложно, а результат далек от реализма. Вместо этого создается симуляция - и если у вас, как и у меня, уже чешутся руки проверить возможности nCloth в деле, то давайте начнем.
Приобщаться к тайным знаниям я буду вместе с Роки - персонажем AnimationSchool. Его мощная фигура явно нуждается в супергеройском плаще, так что долго думать над объектом для экспериментов не придется.
Для начала нужно сделать сам плащ. Создаем plane и увеличиваем количество полигонов, чтобы деформация ткани была максимально естественной:
Не буду углубляться в сложные дизайнерские решения и просто сделаю плащ более узким в месте крепления к телу. Для этого нужно перейти в режим редактирования компонентов (F8), выделить крайний ряд точек и активировать мягкое выделение с помощью клавиши B. Чтобы отрегулировать радиус выделения, достаточно зажать B и перемещать мышку влево-вправо, зажав при этом колесико. Я захватываю весь плащ, после чего остается только придать ему нужную форму с помощью скейла.
Теперь самое интересное. Выделяем plane, заходим в FX, выбираем nCloth - Create nCloth, и… ткань готова. Просто, не так ли?
Правда, пока что визуально ничего не поменялось. Вы поймете, что магия сработала, если выставите, допустим, 200 кадров на таймлайне и запустите анимацию. Ваш плащ будет медленно опускаться вниз. Правда, на ткань это пока не похоже, но мы это быстро исправим.
Для начала можно зайти в Attribute Editor, выбрать nClothShape и полюбоваться на внушительное количество ползунков и настроек, отвечающих за толщину, вес, летучесть свежеиспеченного плаща, его склонность к деформации и растягиванию. Это уже продвинутый уровень, потому здесь я трогать ничего не буду. К счастью для новичков, в Maya есть набор заготовок для тканей разного типа. Я выбираю шелк - непрактично, зато эффектно - и жму Presets - Silk - Replace.
Визуально никакой разницы: плащ все еще падает ровно вниз, причем весь. А ведь узкий край у нас по идее крепится к персонажу и должен оставаться на месте. Исправляем: выделяем точки, которые должны быть неподвижными, и выбираем nConstraint - Transform Constraint.
Внимание - выделенные точки закрепились в пространстве и никак не зависят от Роки. Связь с персонажем рассмотрим чуть позже. А сейчас запускаем анимацию - и вуаля, шелковый плащ изящно опускается на спину персонажа. Круто, но мне бы хотелось, чтобы ткань развевалась на ветру.
Для этого нужно снова зайти в Attribute Editor и выбрать ноду nucleus. Именно здесь можно настроить силу и направление ветра. Направление определяется по осям (X,Y,Z) и по умолчанию ветер движется по оси X слева направо (1,0,0). Меня интересует движение по Z справа налево, а потому я выставляю (0,0,-1). Возможно, звучит не слишком понятно, а потому легче всего ориентироваться в этот системе методом перебора.
Готово! Осталось только добавить текстуру для плаща и выставить свет в сцене. Гайд по визуализации вы найдете здесь, а текстуру я добавлю через Hypershade. Выбираю 2D Textures - File и подгружаю заранее скачанную картинку. Можно было поискать что-нибудь посимпатичнее, но для первого раза сойдет. Выбираю полученную текстуру в окне Textures, зажимаю колесико мыши и перетаскиваю ее на плащ.
Осталось только записать плейбласт. Роки выглядит вполне довольным обновкой, так что первая часть знакомства с nCloth успешно завершена.
Если вам интересно, как связать ткань с персонажем в движении, то двигаемся дальше ;)
Теперь моя подопытная - шагающая Алиса. Начало работы точно такое же: создаем plane, редактируем форму и применяем nCloth. Выбираем те точки плаща, которые должны крепиться к плечам, зажимаем shift и выделяем геометрию персонажа. Теперь констрейним: nConstraint - Point to Surface.
Отлично, плащ послушно тянется за идущим персонажем. Почти победа, только вот ткань, падая, проникает в Алису. Чтобы это исправить, выделяем геометрию персонажа и выбираем nCloth - Create Passive Collider.
Чтобы функция сработала корректно, в первом кадре не должно быть никаких пересечений ткани с геометрией персонажа. Можно также назначить Passive Collider на все предметы, взаимодействующие с плащом, например, на пол.
Если вы все настроили, а плащ ведет себя нелогично - например, летит по воздуху, не желая опускаться - есть смысл проверить показатель Space Scale ноды nucleus. По умолчанию там стоит единица - это верно, если ваша сцена измеряется в метрах. Если в настройках сцены выставлены сантиметры, то и Space Scale нужно уменьшить до 0,01. Иначе ткань длиной в метр будет обрабатываться так, словно это стометровое полотно.
Ну и, наконец, если вы не удержались и подергали ползунки, меняя настройки ткани, то есть смысл закэшировать изменения, иначе вы можете не увидеть результатов своего творчества. Это также поможет, если анимация ткани не желает проигрываться в реальном времени. Делается это тремя щелчками: nCache - Create New Cache - nObject.
Остается только записать плейбласт и насладиться результатом.