Adobe Premiere ▼
Maxon Cinema 4D ▼
DAZ Studio ▼
Поиск

Физическое разрушение объекта в Cinema 4D

Урок добавлен 23.04.2023

К этому уроку прилагается 3D-сцена

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

Ну а как быть, если мы с вами хотим не просто разбить предмет, но и изобразить в анимации взаимодействие осколков с окружающей обстановкой? Как заставить осколки падать на пол, подскакивать, подпрыгивать и вообще вести себя по всем законам земной физики? Ведь модификатор взрыва в Cinema 4D с физикой не дружит — он просто разносит полигоны объекта в стороны, и на этом считает свою задачу выполненной. В свою очередь, физика в Cinema 4D отлично отрабатывает задачу взаимодействия отдельных элементов между собой и с окружающими предметами, но — увы! — не умеет превращать трёхмерную модель в набор отдельных элементов. Как быть?

Реалистичный разлёт осколков

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

Когда речь идёт о наборе отдельных полигональных элементов, никакой сложности у нас с назначением им физики не возникает: объединяем элементы в группу и назначаем последней тег динамики со значениями «Apply Tag To Children» и «All» параметров «Inherit Tag» и «Individual Elements» соответственно во вкладке «Collision» — именно так мы с вами настраивали физическую модель автомобиля в предыдущем уроке.

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

Будем исходить из того, что у нас с вами уже имеется некая модель, подготовленная для разрушения — как это сделать, подробно описано в уроке по моделированию взрыва межгалактического грузовика, ссылка на который приведена выше. То есть наша с вами модель уже порезана на неровные полигональные сегменты, и ей уже присвоен модификатор взрыва «Explosion FX». Однако, в отличие от моделирования взрыва в космосе, наши действия будут построены по иному алгоритму. На сей раз задачи, которые мы с вами поручим модификатору «Explosion FX» — это, во-первых, едва заметно, чуть-чуть, в самой первой фазе разделить трёхмерную модель на осколки, с тем чтобы сразу же передать управление физической модели Cinema 4D, которая будет управлять физическим поведением осколков, и во-вторых, придать толщину стенкам исходной модели.

Подготовленная к разрушению трёхмерная модель

Приступаем. Располагаем модель в том месте, где она будет раскалываться на части, и назначаем ей модификатор «Explosion FX» со значением «0» параметра «Time» во вкладке «Object». Это сделано затем, чтобы присвоенный модели модификатор с самого начала придал поверхности нашей модели толщину (соответствующее свойство «Thickness» можно найти во вкладке «Cluster» свойств модификатора). К слову говоря — надеюсь, вам понятно, что в исходном варианте модель для разрушения должна быть «тонкостенной», не имеющей физической толщины стенки, об этой толщине, как мы с вами видим, позаботится модификатор «Explosion FX». Сам модификатор располагаем в центре разрушаемой модели.

Указываем толщину поверхности трёхмерной модели

Начинаем подготовку. Изменяем значение параметра «Time» модификатора «Explosion FX» — вместо нуля указываем какое-нибудь небольшое значение, подбирая его таким образом, чтобы на поверхности модели визуально обозначилось начало деформации поверхности и её разделения на осколки.

Подбираем значение «Time» модификатора для минимальной начальной деформации модели

Здесь непременно следует учесть один тонкий момент: подбирая значение параметра «Time», вы фактически создаёте первую фазу разлёта осколков, и в зависимости от того, насколько высокую скорость разлёта осколков вы хотите изобразить впоследствии при помощи настройки физической модели, вам необходимо правильно подобрать начальную фазу деформации модели, чтобы последующий разлёт осколков выглядел как естественное продолжение деформации её поверхности, без резкого скачка скорости.

Подобрав начальную фазу деформации поверхности модели, переходим к следующему шагу — к так называемому «спеканию» осколков, то есть трансформации деформированной модификатором «Explosion FX» модели в группу отдельных элементов. Выделяем наименование слегка деформированной модификатором «Explosion FX» модели в менеджере объектов, щёлкаем на наименовании правой клавишей мыши и в выпадающем контекстном меню выбираем пункт «Current State To Object». Обратите внимание: выделять и преобразовывать в новый объект следует именно модель, а не подчинённый ей модификатор взрыва!

Создаём копию модели — будущий набор отдельных элементов-осколков

Следующий нюанс, который также может вас смутить при выполнении этой операции: выделив наименование модели в менеджере объектов, вы увидите в рабочем окне модель без каких-либо следов деформации поверхности — это Cinema 4D показывает вам исходную модель, чтобы дать чёткое представление о первоначальной геометрии деформируемого объекта — но преобразование в новую модель создаст деформированную копию вашей модели.

Итак, у вас появилась слегка деформированная копия модели. Осталось превратить её в набор отдельных элементов. Выделяем её наименование в менеджере объектов, после чего переводим взгляд на верхнее меню Cinema 4D, в котором больше всего нас интересует пункт «Functions» — в выпадающем из этого пункта меню нам нужно найти подпункт «Explode Segments» (букв. «Взорвать сегменты», т. е. сделать каждый сегмент отдельной моделью).

Разделяем сегменты модели на группу отдельных элементов

Если вы всё сделали верно, то Cinema 4D на некоторое время задумается, после чего деформированная копия модели разрушаемого объекта в менеджере объектов превратится в группу полигональных элементов. Будьте готовы к тому, что количество элементов может оказаться весьма приличным — у меня, к примеру, получилось в результате вышеописанной операции более пятисот осколков.

Группа осколков в менеджере объектов

Теперь хорошо бы вернуться к свойствам модификатора «Explosion FX», присвоенного исходной модели, и вернуть его параметру «Time» значение «0». Удалять сам модификатор не советую — ведь за ним по-прежнему сохраняется задача создания толщины стенок исходной модели, и если его удалить — в кадре может появиться весьма интересный эффект превращения «тонкостенной» бесплотной модели в «толстостенную», что будет выглядеть по меньшей мере странно.

Далее необходимо решить, в какой момент времени начнётся разрушение модели. Выбрав подходящий кадр, мы с вами сделаем следующее: спрячем из кадра оригинальную модель, и подменим её на группу осколков, расположенных в соответствии со слегка деформированной поверхностью модели — в анимации это будет выглядеть как начало разрушения. Для этого мы переходим в начало анимации, затем выбираем оригинальную модель и закрепляем значение «On» параметра «Visible in Renderer» («Видно при рендере») во вкладке «Basic» её свойств как ключевой кадр.

Закрепляем видимость исходной модели в начале анимации как ключевой кадр

Переходим в выбранный нами в качестве начала разрушения фрейм и меняем значение параметра «Visible in Renderer» свойств исходной модели на «Off», затем также закрепляем это значение как ключевой кадр. Интерполяция для этого значения, как вы догадываетесь, не предусмотрена — исходная модель не будет постепенно таять в кадре (что, к примеру, можно сделать при помощи свойства «Transparency» текстуры модели), она просто дискретно исчезнет в тот момент, когда значение параметра «Visible in Renderer» изменится с «On» на «Off».

Исходную модель в нужный нам момент мы спрятали, теперь необходимо подменить её на группу осколков. Находим группу, открываем вкладку «Basic» её свойств и точно так же указываем два значения параметра «Visible in Renderer», только в первом кадре анимации значение параметра будет задано как «Off» (при котором осколки спрятаны), а в выбранный нами момент для начала разрушения — сменится на противоположное.

Что ещё мы с вами забыли? Настроить физическую модель разлёта осколков, разумеется. Без этого осколки не разлетятся, а модель будет выглядеть на протяжении анимации просто как треснувшая, но сохранившая почти первоначальную форму. Ищем в менеджере объектов наименование группы осколков и назначаем ей тег динамики.

Назначаем группе осколков тег динамики

Рядом с наименованием группы появится пиктограмма тега динамики — выделяем её и переходим к настройке физической модели. Начнём с вкладки «Dynamics» свойств тега — в этой вкладке необходимо убедиться, что активирован параметр «Enabled» (рядом должна стоять галочка), выбрать значение «On» для параметра «Dynamic», и значение «Immediately» («Немедленно») для параметра «Trigger».

Настраиваем физическую модель разлёта осколков

Переходим к вкладке «Collision» («Взаимодействие») — в ней нужно выбрать значение «Apply Tag To Children» («Применять тег к дочерним объектам») для параметра «Inherit Tag» («Наследование тега»), «All» («Всё») для параметра «Individual Elements» («Отдельные элементы») и «Automatic (MoDYnamics)» для параметра «Shape» («Геометрия»), а также обязательно отметить галочкой параметр «Self Collisions» — чтобы осколки при разлёте не проходили друг сквозь друга без взаимодействия.

Настройка взаимодействия осколков с окружающими объектами

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

Последнее, что нам остаётся сделать — это решить, как именно будут двигаться осколки модели: просто осыпаться вниз (для этого у нас всё готово), или же стремительно разлетаться в разные стороны словно при взрыве — это можно сделать самыми разными способами, от уменьшения временного масштаба динамики и силы гравитации трёхмерной сцены, до размещения вокруг осколков модели, со значением «Automatic» параметра «Shape» в теге динамики (в этом случае Cinema 4D воспримет окружающую осколки модель как монолитную — то есть не пустотелую — и во что бы то ни стало с максимальнум усилием постарается высвободить как бы завязшую внутри неё группу осколков).

В общем, при желании можно получить что-то вроде нижеприведённой анимации.