Создаем анимацию реконструкции объекта в Blender-е

Данный туториал навеян вчерашним материалом и призван более детально описать этапы создания такого рода анимации в Blender-е для новичков. Хочу сразу оговорить, что я хоть и много работал в Blender-е (помню его еще с версии 1.8), но не считаю себя экспертом в этой программе. По профессии я программист, но в свободное время мне интересно поковырять Unity и UE. И соответственно Blender я использую для создания простеньких (или нет) моделей для своих поделок.

Для начала определимся с объектом, который будем "восстанавливать". Я думаю куб - это слишком просто (в плане эффекта). Чтобы получить немного более интересный результат возьмем более комплексную модель - голову обезьянки. Это стандартный объект блендера, на подобии чайника в 3ds Max.

1. Создание обезьянки

Итак в новой сцене удаляем стандартный куб (X) и в меню создания нового объекта (Shift+A) выбираем Mesh -> Monkey. Далее немного переместим ее вверх (G и Z), чтобы дать ей немного пространства для падения.

Этап 1. Создаем голову обезьянки

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

2. Исправление меша

Для этого сначала в меню выбора отображения объектов (Z) выберем пункт Wireframe (отображение сетки), чтобы легче было увидеть точки в меше. Далее переходим в режим редактирования меша (Tab). Все точки меша выделены. Чтобы убрать выделение нажимаем Alt+A. Теперь можно увидеть, что глаза у обезьянки сделаны в виде отдельного незакрытого меша. Давайте удалим их. Выделите по точке в каждом глазе, а затем нажмите Ctrl+L. Эта команда выделит все связанные вершины. Удалите меши глаз (X). Теперь нам нужно закрыть образовавшиеся дыры в глазах. Для это перейдите в режим выбора ребер (вторая кнопка слева вверху) и при зажатой клавише Alt щелкните по ребру глаза. Выделиться весь круг незакрытого глаза. Чтобы его закрыть, нажмите F (создастся новая грань). Повторите для второго глаза. Теперь через меню выбора отображения объектов (Z) вернитесь в режим Solid.

3. Установка аддона

Для дробления меша нам нужен аддон Cell Fracture. По умолчанию в Blender-е он выключен. Для его включения заходим в настройки (Edit -> Preferences) и переходи на вкладку Add-ons. Далее в поле поиска вводим нужное название и включаем аддон.

Этап 3. Устанавливаем аддон

4. Дробление меша

Теперь пришло время раздробить наш меш. Для этого выделяем нашу обезьянку и применяем эффект (Object -> Quick Effects -> Cell Fracture). В этом диалоге выставляем нужные нам параметры и нажимаем ОК. В этом диалоге много параметров, но можно ничего не трогать и все оставить как есть (обычно достаточно значений по умолчанию). После дробления меша в окне просмотра иерархии сцены (справа вверху) выбираем наш оригинальный меш и перемещаем в сторону, чтобы сравнить результаты (либо можете удалить - он нам больше не понадобится).

Этап 4. Создание частиц

5. Применение физики

Этап 5. Задаем физику твердых тел

6. Создание поверхности земли

В качестве поверхности земли можно использовать плоскость, но это не надежный способ - если частичка маленькая, а скорость ее передвижения относительно большая, то она может пролететь сквозь плоскость (если в одном кадре физической симуляции она была над плоскостью, а в следующем из-за своей скорости и размерам она оказалась полностью под плоскостью, то физический движок может пропустить ее дальше, не посчитав физики столкновений). Поэтому для надежности возьмем куб. Для этого создадим куб (Shift+A -> Mesh -> Cube), разместим его так, чтобы его верхняя грань была в нуле и растянем его по горизонтали (по X и по Y) в 10 раз (S, X, 10, Enter, S, Y, 10, Enter). После этого перейдем на панель физических свойств и активируем для него, как и для частиц меша, физику твердых тел (Rigid Body). Но теперь уже зададим параметр Type в Passive - чтобы наша "земля" не двигалась.

Этап 6. Создаем "землю"

7. Запекание физики

Теперь можно запустить симуляцию физики. Для это просто нажмите пробел. Просмотрите симуляцию и определитесь сколько кадров анимации вам нужно. После этого симуляцию можно запечь. Для этого выделите все частицы и перейдите в меню Object -> Rigid Body -> Bake to Keyframes. В окне запекания укажите номера первого и последнего кадра для запекания симуляции в анимацию, а также периодичность выставления ключевых кадров. После нажатия кнопки ОК Blender создаст нужную вам анимацию.

8. Инвертирование анимации

Анимацию мы можем инвертировать и в Unity, но в Blender-е это сделать проще. Также это будет удобно, если вы используете не Unity, а какой-то другой движок, который не предоставляет возможности инвертирования анимации.

Итак переместите курсор на временную шкалу (нижняя панель), выделите все кадры (если они у вас еще не выделены), перейдите в начало вашей анимации и нажимаем S, затем -1 и Enter. Все кадры инвертируются в левую сторону относительно текущего кадра. Далее просто с помощью клавиши G сместите ключевые кадры обратно вправо, чтобы они стали на свои места.

Все, теперь у вас есть анимация собирания объекта из раздробленных кусочков.

Этап 8. Инвертируем анимацию

9. Экспорт

Итак анимация у нас есть, теперь нужно ее экспортировать. Экспортировать будем в формат Collada, потому что с экспортом множества анимаций в FBX через стандартный экспортер Blender-а есть некоторые проблемы. Для этого сначала выделяем все наши частички и идем в главное меню: File -> Export -> Collada (Default) (.dae). Выбираем папку (я выбрал сразу папку проекта на Unity) куда экспортировать и задаем настройки. В принципе значений настроек по умолчанию достаточно, единственное, что выберем параметр Selection Only, чтобы не экспортировать всю сцену, а только наши выделенные частицы. Зададим название Suzanne.dae и нажмем Export COLLADA.

Этап 9. Экспортирование анимации

10. Unity

В Unity переходим в настройки экспортированной модели, удостоверяемся, что анимация импортировалась и перетаскиваем модель на сцену. После этого добавляем нашей модели на сцене нашу анимацию из импортированной модели. Это автоматически создаст объект AnimatorController (с именем Suzanne, как и наша модель), добавит к объекту на сцене компонент Animator, назначит ему созданный AnimatorController и вставит нашу анимацию в качестве стартовой анимации.

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

189189
36 комментариев

Я настолько умный, что по описанию заголовка уже прикинул общий процесс, открываю, а там и в правду он, прям точь в точь! Хороший тутор!

10
Ответить

Я бы просчет массы добавил. Занимает 10 сек, зато мелкий камушек и тот, что в 50 раз больше не будут весить одинаково по 1 кг, и засимулируется куда реалистичнее

1
Ответить

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

4
Ответить

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

1
Ответить

Вот, посмотрите здесь:
https://www.youtube.com/watch?v=ozORH67v_WU

1
Ответить

Текстурировать для чего? Игра?
Можно просто кинуть тайловую текстуру слома с трещинами и порами на те грани, которые сколы. Размапить автоматично.

Ответить

Опечатка
"Для этого сначала в меню выбора отображения объектов (Z) выберем пункт Fireframe"
Wireframe

1
Ответить