Houdini Unpack
January 26, 2020

Houdini Wall Destruction

Сегодня хочу с вами поделиться разбором данной сцены:

Вот так вот выглядит дерево нод сцены.

Я всегда стараюсь максимально подробно описывать лейаут сцены, особенно, если она комплексная. Гудини имеет широкий спектр вспомогательных инструментов и я рекомендую им не пренебрегать. Подписывайте ветки, нули, а так же используйте палитру цветов, бекдропы и сабнеты. Это позволит вам или другому человеку быстро и без труда разобраться в сцене, которую вы создали несколько месяцев назад.

ГЕОМЕТРИЯ

Как обычно, все подобные разработки начинаются с подготовки геометрии.

Стена состоит из базовых слоев. Кирпичи, слой раствора между кирпичами, слой штукатурки и деревянная оконная рама.

РЕФЕРЕНСЫ

Если сцена претендует на реалистичность, то особое внимание стоит уделить референсам. В данном случаем нам интересно, как ведет себя каждый элемент и как они взаимодействуют между собой во время удара.

референс начинается с 1:25

На референсах видно, что кирпичи разлетаются не по одиночке, а группами, так называемыми кластерами. Часть из них ломается в местах соединения кластеров. Кластеры штукатурки не всегда повторяют форму кластера кирпича, поэтому она может отвалится даже там, где кирпич остался нетронутым.

FRACTURE (РАЗБИЕНИЕ ГЕОМЕТРИИ)

Полагаясь на референсы, займемся фракчурингом. По сути это деление геометрии на куски, на которые она сможет расколоться во время симуляции.

Самым важным условием фракчуринга является создание правдоподобных кусков геометрии. Каждый элемент имеет свою характерную форму осколка и об этом всегда нужно помнить, чтобы деревянная щепка была похожа на щепку, а не на осколок кирпича и наоборот.

Существует много разных техник фракчуринга, которые позволяют получить правильную форму осколков. На данный момент стандартного инструментария Houdini хватает для 90% задач разбиения геометрии. Но если требуется получить нестандартную форму осколка или же крупную детализацию в месте соединения кусков, то тут уже не обойтись без дополнительных инструментов.

Итак, начнем с кирпича.

Разбиваем каждый кирпич на осколки. При этом стараемся сделать каждое разбиение уникальным, чтобы не читался паттерн.

Далее объединяем кирпичи в группы (кластера). Каждый кластер показан отдельным цветом.

Добавляем раствор.

Проделываем всё те же операции и переносим кластера с кирпичей на осколки раствора.

Окно.

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

Слой штукатурки.

Со штукатуркой поступаем так же, как и с раствором, только вносим небольшой сдвиг в границы кластера, так как мы помним о референсах.

CONSTRAINTS (Задание связей)

Следующим шагом будет создание связей между осколками каждого элемента и связей между самими элементами.

На данном этапе так же необходимо учитывать референсы. Построение связей и задание им силы должно быть основано на примерах из жизни, если мы стремимся к фотореалистичности.

Кирпичи и раствор.

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

Создаем констрейны для раствора (cement) и с учетом кластеризации получаем необходимые связи.

Видно, что в итоговой сборке (bricks + cement) есть прорехи в линиях связи. Это значит, что в этих местах силы, связывающие кластера кирпичей будут слабее и скорее разрушатся, чем кластера в местах с более плотной сеткой констрейнов.

Окно.

Таким же образом проходимся по каждой деревяшке оконной рамы и создаем констрейны. Так же необходимо создать линии связи между рамой и стеной (wood to bricks).

Штукатурка.

Создаем констрейны для кусков штукатурки. Помимо обычных glue констрейнов, которые работают на излом, добавим soft и spring констрейны, чтобы некоторые куски изгибались, но не отламывались.

Так же добавим дополнительную сетку с кластерами.

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

RBD СИМУЛЯЦИЯ

Теперь, когда геометрия и констрейны готовы, можно приступать к самому интересному.

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

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

А вот результат симуляции после нескольких итераций.

DEBRIS (Добавляем деталей)

Симуляция выглядит неплохо, но хорошо бы добавить мелких камней и осколков.

Логично, если мелкие камни будут появляться в местах разрушения, где один кусок геометрии отходит от другого. Чтобы определить эти места, существует нода debrissource. По сути это партикловая симуляция, которая учитывает нашу геометрия и создает точки там, где два соседних куска отдалились друг от друга на определенное расстояние. Эти точки существуют буквально несколько кадров, чтобы их можно было использовать, как источник для следующей партикловой симуляции.

Используя точки, полученные с помощью debrissource, симулим новые партиклы. На этот раз уже финальные.

Следующим шагом будет копирование на эти партиклы геометрии камней. Получаем мы ее достаточно просто, путем фракчуринга куба. После чего берем рандомный осколок куба и копируем на точку, слегка рандомизируя размер.

По порядку: партиклы - куб - фракчур - осколки, скопированные на точки - сборка целиком.

DUST ( Симуляция пыли )

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

Как и на предыдущем этапе, нам понадобиться источник для симуляции. В качестве такого источника можно опять использовать ноду debrissource, но на этот раз сделать время жизни точек побольше.

После того, как посчитался сорс для нашей симуляции, можно переходить к сборке волюмного сетапа.

А вот так выглядит симуляция сорса и пыли соответственно:

И наконец финальная сборка:

ШЕЙДИНГ, ЛАЙТИНГ, РЕНДЕР

Все, что остается дальше, так это поставить свет, настроить шейдера на всех элементах и отрендерить эту красоту.

В данной сцене я ставил одну HDR карту и этого оказалось достаточно на мой взгляд. Постарался обойтись максимально процедурными шейдерами, но парочка текстур все равно пришлось воткнуть.

Ренедерилось все в родной гудиневской Мантре, порядка 40 минут на кадр. Для такой сцены и моей машины вполне себе хорошее время.

КОНЕЦ

Спасибо, что дочитал до конца. Это моя первая подобная статья с разбором сцены и если такой формат пришелся тебе по душе, то я обязательно буду продолжать.

Обязательно подписывайся на мой телеграм канал: https://t-do.ru/artistdaily

https://t-do.ru/nerotimvfx

https://vk.com/nerotimvfx

https://www.facebook.com/nerotimvfx

https://www.instagram.com/nerotimvfx