В этом уроке: симуляция тканей, динамическое рисование весов, смешивание групп вершин, ключевые формы, анимация, кривые и прочие модификаторы… И это все, чтобы надуть шарик :)
Финальный результат и видеоурок
Текстовый урок
Для начала следует создать объект, который мы планируем надувать. В нашем случае это будет наступающий год (2019).
Как вы могли заметить, надпись создана из одинаковых плоскостей проэкструдированных вверх по оси Z. Благодаря этому топология меша равномерная, что очень хорошо для симуляций (да и в целом, всегда хорошо).
Но этого нам не достаточно и поэтому мы применим модификатор Remesh. Он немного исказит нашу изначальную форму, но нам это только на руку и при этом топология все также будет равномерной. Даже если бы у вас изначально топология была плохой, модификатор сделал бы ее такой, на на изображении ниже.
После всех настроек модификатора обязательно примените его.
Чтобы получившийся меш был похож на шарик, соедините все цифры между собой, а также создайте отверстие, через которое мы в последствии будем накачивать его. Инструмент Bridge edge loops подходит для этой цели, как нельзя кстати.
На данном этапе добавьте модификатор Subdivision Surface в уровень 1, чтобы создать немного больше полигонов для симуляции и на вкладке физики активируйте симуляцию ткани для цифр. Отметьте параметр Self Collision, чтобы ткань самопересекалась как можно реже.
Также добавьте плоскость в качестве пола и отметьте для нее на вкладке физики пункт Collision, чтобы ткани было на что падать, и проиграйте анимацию (Alt + A).
Как вы уже могли догадаться, надувать шарик мы будем воспроизведением симуляции ткани в обратном направлении. Вот только если сейчас проиграть анимацию в обратном направлении, то результат будет совсем не тот, какой ожидаешь от шарика.
Для того, чтобы все было как положено, нужно придать дополнительную жесткость мешу в определенных местах и в определенное время. Идеальным решением для этого будет Dynamic Paint.
Выделите цифры и укажите их в качестве холста.
Затем добавьте в сцену объект куб, измените его масштаб так, чтобы он полностью покрывал цифры и расположите его ниже, как показано на изображении.
Этот объект куб укажите в качестве кисти.
Укажите группу вершин созданную с помощью Dynamic Paint в меню Cloth Siffness Scaling. Помимо этого измените указанные параметр ткани, для достижения большей жесткости.
Модификатор Dynamic Paint расположен в самом низу стэка модификаторов. Подымите его на самый верх списка.
Теперь при проигрывании анимации меш уже не будет полностью падать на плоскость, а по возможности будет сохранять свою жесткость (особенно в местах, определенных с помощью динамического рисования веса).
У нас теперь получается две крайности. То весь меш растекается на плоскости, то настолько хорошо сохраняет свою форму, что даже под конец симуляции не может полностью на нее упасть.
Чтобы это исправить, мы создадим вторую кисть, которая с течением времени будет удалять все те веса, которые для нас создает первая.
Продублируйте объект куб, подымите его выше и отметьте для него пункт Erase Paint. Привяжите один куб к другому и для родительского создайте анимацию, в которой он будет опускаться вниз на протяжении 50 кадров, тем самым вытирая все веса на меше за этот промежуток времени.
Благодаря этому в начале симуляции у ткани будет повышенная плотность в нижней ее части, и затем она постепенно будет сходить на нет, позволив объекту полностью упасть на плоскость.
Чтобы все не было настолько легко, постараемся сохранить максимальную жесткость для отверстия, через которое мы собираемся надувать наш шарик.
Для этого выделите эту часть в режиме редактирования и создайте для нее новую группу вершин с весом равным 1.
Теперь смешаем только что созданную группу вершин, с уже существующей (созданной с помощью Dynamic Paint). Сделать это легко с помощью модификатора Vertex Weight Mix. Его располагаем сразу, после модификатора Dynamic Paint.
С стимуляциями и физикой мы закончили и теперь нам необходимо сохранить как можно больше состояний этой симуляции в статичных мешах для последующего их объединения в ключевую форму.
Для этого продублируйте меш (Shift + D), затем выберите тот, что на земле, примените сначала модификатор Subdivision Surface, а затем модификатор симуляции ткани. Остальные модификаторы (Vertex Weight Mix и Dynamic Paint) просто удалите и перенесите получившийся меш на второй слой.
Теперь повторите эту процедуру еще 8-10 раз и каждый последующий сокращайте время симуляции.
Как итог, у вас на втором слое будет 8-10 статичных мешей вашей симуляции.
Все что находится на первом слое перенесите на 20-й, а все эти меши верните на 1-й и мы продолжим с ними работать.
Выделите все меши и последним самый верхний (сделайте его активным). После этого объедините их в ключевую форму, как показано ниже.
Теперь вы можете удалить все меши, за исключением самого верхнего. Он содержит в себе все состояния других объектов.
Кроме того, что мы конвертировали симуляцию в ключевую форму, мы также можем их теперь редактировать и добавлять новые ключевые формы.
Выделите ключевую форму Basis и скопируйте ее (New shape from mix). Расположите ее на самом верху списка и в режиме редактирования сделайте цифры более толстыми (как-будто их немного перекачали (Alt + S)).
И теперь наступает время магии… Выделив самую верхнюю ключевую форму (ту, что сами только что создали) и сняв галочку с пункта Relative мы получим доступ к параметру Evaluation Time, с помощью которого можно анимировать все ключевые формы одновременно.
Как вы могли заметить, справа от названий форм есть значения, указывающие на то, какое значение параметра Evaluation Time соответствует данной ключевой форме.
Создаем анимацию надувания шарика. Изменяем параметр Evaluation Time от большего к меньшему через каждые 20 кадров, а также немного его увеличиваем между ними, чтобы придать больше реализма процессу.
Теперь, когда основная анимация готова, осталось заняться дополнительными ее элементами. Например, указать путь, по которому должен улететь шарик, когда его перекачают.
Для этого добавим в сцену кривую Безье. Ее центр должен совпадать с центром цифр. Создав из кривой путь, по которому улетит шарик, добавьте модификатор Curve.
Перемещая цифры по оси X, мы будем перемещать их вдоль кривой. Установите ключевой кадр для цифр в начале кривой и ее конце. В моем случае это заняло 20 кадров (на скрине легкая очепятка, таймлайн в этом плане точнее будет).
Да, говорить о том, что на протяжении этих 20 кадров мы изменяем параметр Evaluation Time от 0 до 80, чтобы сдуть шарик думаю не стоит :)
Чтобы снова все не казалось слишком простым, добавим немного реализма улетающему шарику с помощью модификатора Wave.
На всем пути кривой анимируйте указанные параметры модификатора, чтобы создать волнистость движений для объекта.
Материал же нужно еще настроить… Ну, здесь полная свобода действий. Урок не о материалах, поэтому создавайте здесь что угодно.
Как вы еще могли заметить, помимо материала появился свет. Здесь все не принципиально. Делайте так, как нравится / нужно.
И последним штрихом будет создания кабеля, через который объект будет накачиваться.
Создавать его будем с помощью другой кривой Безье. Для одного из ее концов назначим пустышку-крючок (Ctrl + H) и привяжем эту самую пустышку к трем вершинам целевого объекта (Ctrl + P, предварительно перейдя в режим редактирования и выделив эти самые 3 вершины).
Итого получится, что конец кривой следует за пустышкой, а пустышка за отверстием нашего шарика.
И так как, у нас появился модификатор Hook, нам будет очень легко «отцепить» кабель от шарика, когда нам это понадобится.
В момент отрыва установите параметр силы для модификатора в 0 и установите для него ключевой кадр. В моем случае на 196 кадре сила равна 1, а к 198 становится равной 0.
Вот собственно и все! Рендерим и собираем анимашку.
Рекомендую для тех кадров, на которых шарик летит, активировать Motion Blur на вкладке рендера. Это тоже придаст реализм вашему рендеру, ведь быстродвижущиеся объекты не могут быть четкими.
Также, можно настроить глубину резкости для камеры, но это также на ваше усмотрение.
И не забудьте поделится в комментариях вашими результатами!