Урок по анимации в 3Ds Max (дробление анимированного персонажа на фрагменты-частицы по средством PFlow Toolbox#2)
Всем привет. Предлагаю вашему вниманию урок по созданию анимационного спецэффекта в программе 3Ds Max. Для начала я коротко объясню что будем делать для понимания надо оно вам или нет. А будем мы создавать анимированного персонажа при помощи костей CAT, делать по ним сетку и привязывать ее к ним, далее дробить сетку на фрагменты создавать по ним частицы при помощи оператора Birth group и привязывать их к исходной геометрии. На выходе получим анимированный объект состоящий из фрагментов-частиц привязанных к костям CAT. Сразу скажу что у данного способа есть два ограничения-недостатка, работа над которыми пока открыта. Первое ето то что наш персонаж должен состоять из недеформируемых частей, потом объясню почему. И второе то что конечный объект состоит из частиц с наложенной формой а не геометрии что может привести к трудностям с дальнейшей работой над ним (например с ретаймом анимации). Как бы то нибыло - продолжим. Урок расчитан на среднего пользователя 3Ds Max то что должно быть понятно и так - объяснять не буду.
В уроке будут применены такие разделы:
немного Softimage CAT-для создания и анимации перса
немного модификатор Skin для привязки сетки к костям
немного плагин RayFire для фрагментации
немного PFlow ToolBox#2 для создания и привязки частиц
Итак начнем. Идем в панель инструментов Create\Helpers\Cat Objects\Cat Parent и выбираем из списка любой риг. Можно и свой. Для незнакомых с CATом просто берем Base Human Rig
На скелете выбираем ладони, идем в Modify и добавляем пальцы Num Digits 5.
Для ступней добавляем по одному пальцу Num digits 1.
Я еще немного кости изменил и получился вот такой болван. Далее создаем анимацию нашего персонажа.
В принципе анимация на данном этапе не нужна, но мы будем использовать ее для тестовых целей по этому вперед. Для новичков в CATе скажу что для создания анимации нужно просто добавить анимационный слой CATMotion. Для этого выбираем наш риг, идем в панель инструментов/Motion/Layer Manager.
Под списком слева от крестика кнопка с выпадающей сменой. Выбираем бегущего человечка.
При этом в список добавится наш слой. Теперь нужно нажать кнопку перехода от режима правки в режим анимации над списком слева от человечка. Поза перса изменится и при пуске анимации на таймлайне он пусть и кривехонько но всетаки пойдет. Конкретнее на CATе останавливаться не будем так как суть урока не в нем просто для наглядности я возьму свою ранее сделанную анимацию.
Теперь создаем сетку по нашим костям. Отключаем плеймод в коте, выбираем все кости идем в главное меню то что сверху Tools и создаем Snapshot в мех.
Выбираем все кости и скрываем, выбираем сетку головы Modify/Edit Geometry- Attach list.
Убираем из списка все скрытые объекты костей оставляя только нашу геометрию и присоединяем ее всю.
Выбираем, именуем и проверяем элементы все ли на месте
Сетка готова, теперь будем ее привязывать к костям. Выбираем ее и навешиваем Skin. Идем в Parameters/Add bones.
И выбираем все кости в списке,предворительно их показав.
Нам необходимо чтоб элементы сетки четко соответствовали объектам костей при анимации, по этому будем жестко привязывать каждый элемент к соответствующей ему кости и только. Для этого идем в нашу сетку /Element и выбираем голову, затем главное меню /Edit/Select invert, затем снова Element/Selection-Hide.
Остается только голова. Это сделано для упрощенного выбора вершин при расстановки весов.
Теперь снова заходим в Skin/Parameters включаем Edit envelopers.
Ставим галочку Select vertices. Идем нижеWeight properties/Weight Tool это который ключик.
Откроется окно инструментов. Выбираем все вершины, их будет 8 по соответствию с открытым элементом, что отразится в таблице. Так-же мы видим кости присвоенные к вершинам. Нам нужна кость головы, ее и выбираем. Я назвал тело болваном, у вас могут быть свои названия, главное не в них а главное в соответствии выбранной геометрии и кости. Это надо понимать для выбора костей в двльнейшем, но тут я думаю понятно свой элемент-своя кость. Далее на против кнопки Set Weight ставим 1,0 и жмем саму кнопку. Увидим сброс в таблице весов других костей на 0 и это правильно.
Можно включить для теста анимацию только не забывайте отключать ее (в CATе) перед дальнейшей расстановкой весов, иначе собъется расположение костей, а это не допустимо. Далее нужно тчательно повторить аналогичные действия для всех элементов геометрии. В принципе делается это в несколько кликов и не так уж и долго, главное чтоб осознанно и без ошобок. Тоесть идем опять в сетку. На предупреждение отвечаем Yes. Открываем все элементы, выбираем следующий за головой тот что соответствует верхней шейной кости, скрываем остальные и далее по схеме не забывая включать Edit Envelopes. Для конечностей можно сделать для одной слева или справа а за тем отразить, используя Mirror Mode в скине.
Только нужно правильно задать Mirror Plane в зависимости от положения перса. В моем случае это Z. Если задано правильно то будут видны синяя и зеленая стороны ну а далее копирование с одной на другую соответствующими кнопками. После завершения можно проверить Weight Table.
Там должны быть одни нули и единицы ну и включить анимацию. Движения сетки дложны совпадать с движениями костей. Если это так значит все ок - идем далее.
Теперь мы имеем CAT Rig и жестко привязанную к нему сетку. В принципе почти все готово для разбивания, однако надо оформить еще один важный момент. Дело в том, что мы будем делить на фрагменты нашу сетку и привязывать их к ней. Вместах пересечения элементов сетки произойдет сбой привязки, Что вызовет нарушение геометрии при анимации. Что я предлагаю сделать, чтоб это избежать. Я предлагаю разделить сетку на части, состоящие из непересекающихся элементов. Как это сделать? Если посмотреть на скелет CAT то становится видно что пересекаются в основном смежные кости, по этому будем просто выбирать элементы через один. Идем опять в нашу сетку. Копируем и удаляем модификатор Skin. Правой кнопкой на нем в стеке модификаторов Copy иDelete. Идем в Element и выбираем элементы через один тупо начиная опять с головы. Посторайтесь захватить как можно больше элементов но особо не парьтесь, остальные войдут в другие части, коих у меня получилось три. Далее в Edit Geometry-Detach. Именуем и отделяем.Можно сразу навесить наш скопированный Skin. Правой кнопкой на сетке и Paste Instanced.
Возвращаемся к оставшимся элементам. Также выделяем через один, отделяем и именуем и также добавляем наш Skin. Элемент соответствующий позвоночной кости, той что внутри груди, я вообще никуда не включал, мешает только - нафиг его. В итоге должно получиться три сетки с непересекающимися элементами и нашей привязкой к костям. Далее работать будем с ними. Собственно переходим к фрагментации. Включаем анимацию перса в CATе. Это нужно чтоб положение рождения частиц совпало с началом анимации. Берем первую сетку и снова делаем SnapShot в Mesh. Делить будем его. Я для этого пользуюсь плагином RayFire. Вы можете использовать свой способ или другой фрагментер. Если же установлен RayFire то бить будем через его меню. Сразу скажу что модификатором RayFire Fragmenter я не пользуюсь не нравится - глючит. Итак выбираем вновь созданный мех, который без скина, идем в панель инструментовCreate/Geometry/RayFire и открываем окно инстументов RayFire.
Первое подменю Objects. Если в списке что-то есть то нажимаемClear, если ничего нет то Add. В список добавится наше тело.
Далее открываем подменю Fragmentation. Способ фрагментации и ее степень можете выбрать свои. Я оставил как есть. Можно еще поставить галочку Do not store original objects в Advanced options.
Далее жмем Fragment Impact Objects.
Тело разобьется на куски. Выделяем их все и группируем. Группу лучше сразу переименовать. Теперь проделываем тоже самое с остальными двумя сетками, не забыв предворительно делать SnapShotы. В итоге мы имеем три группы фрагментов и три анимированные сетки им соответствующие. Все готово для создания частиц, к чему и приступаем.
Открываем редактор частиц нажав кнопку 6. Добавляем операторы Empty Flow и Birth Group и соединяем их. Выбираем PF Source 001там где лампочка, Emission и выставляем Viewport 100%. Это вид частиц в окнах.
Далее идем в оператор Event 001/Birth Group 001.Выбираем первую группу обломков и жмем Selected под списком.
Галочки Group Members и Acquire Shapes должны быть включены, если нет включаем и Update Particles From Objects. В списке появятся фрагменты а в видовых окнах крестики на местах частиц.
ЖмемHide чтоб скрыть исходную геометрию
и идем к следующему оператору Event 001/Display 001 где выбираем тип отображения частицGeometry.
Крестики превратятся в наши фрагменты. Если это так значит все хорошо - частицы рождены и подготовлены. Теперь их надо привязать к исходным анимированным сеткам.
Для этого добавляем оператор Lock/Bond. Данный оператор контролирует только трансформации перемещения и поворота, по этому наш анимируемый объект должен состоять из недеформируемых элементов. В списке объектов кликаем By List и выбираем нашу первую анимированную сетку. Ставим метку Lock To Surfase и Animated Surface.
Теперь если все хорошо то при включении плей на таймлайне частицы-фрагменты будут двигаться аналогично нашему персонажу.
Осталось только создать частицы из двух других оставшихся групп фрагментов. Все делаем по той-же схеме, то-есть заносим еще два оператора Birth Group, вставляем в их списки соответствующие группы обломков и добавляем соответствующие Lock/Bondы. На выходе получаем целого персонажа, состоящего из фрагментов-частиц, привязанных к исходным костям.
В пинципе для дальнейшей анимации можно юзать CAT, или брать другой объект, состоящий из недеформируемых частей. Только надо не забывать про синхронизацию начального положения анимации и рождения частиц ну и конечно про вкусности Particle Flow, такие как Physx, который применен для создания титульного ролика. Его схему привожу в конце урока