Как я падение капли на растение в Blender анимировал

Как я падение капли на растение в Blender анимировал

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

Собственно вот сам результат:

Пытался в шортс, поэтому вертикальный формат

Начну, пожалуй, с того, что я потратил на эту анимацию дня 2-3(по паре часов в день) из которых, примерно, процентов 60-70 времени я боролся с "багами" и обходами некоторых ограничений в физ. симуляциях в Блендере. Если бы не эти вещи и то, что мне пришлось с нуля разбираться как работают здешние симуляции, то тут работы буквально на час-два работы, не учитывая рендер.

Моделинг

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

Как я падение капли на растение в Blender анимировал

Физические симуляции: Cloth, Soft Body, Collision и немного Geometry Nodes.

Начинаем сразу же испытывать физ. симуляции Блендера на прочность.

Перед применением симуляций, я примерно прикинул где они должны работать на этом растении, а где - нет. С этими мыслями я создал 2 вертекс группы: основная карта весов и дополнительная.

Сверху основная, снизу - дополнительная
Сверху основная, снизу - дополнительная

Эти две группы я смешивал между собой в Geometry Nodes просто для удобства и большего контроля за весами. Тут по нодам всё просто - нечего расписывать.

Фактором крутишь тудой-сюдой и группы смешиваются.
Фактором крутишь тудой-сюдой и группы смешиваются.

После этого я накинул Cloth с коллизией на растение и Soft Body тоже с коллизией на каплю. Открыл официальный мануал и после этого в маршрутке начался сущий кошмар.

Как и в любой симуляции там куча зависимых друг от друга параметров, которые нужно двигать не по отдельности, чтобы понять как он работает, а тонко настраивать почти все сразу. Благо самых основных там не так уж и много. У Cloth вот они, слева направо, вот эти ребята:

Всё серое, потому что уже кэшировано
Всё серое, потому что уже кэшировано

А у Soft Body вот эти:

Ага, здесь тоже
Ага, здесь тоже

Коллизию тоже покрутил немного, там вообще всё просто...но есть нюанс. Об этом, кстати, позже.

Наконец, вот ты заканчиваешь настраивать растение и каплю. Ты тестируешь их по отдельности и тебя, в принципе, плюс-минус устраивает результат того, как они взаимодействуют с поверхностями. Теперь их просто остаётся совместить вместе и всё, работа почти сделана? Правда, ведь? Сделана...?

Как я падение капли на растение в Blender анимировал

А вот и здрасьте, WHEN THE IMPOSTER IS SUS. Откуда не возьмись появились жёсткие глитчи со "взрывом" меша, либо проваливание капли бесконечно сквозь меш растения, растягивая его вниз. Либо одно, либо другое, либо оба вместе. Сначала я подумал, что это быстро решится простой более детальной настройкой симуляции, но как же я ошибался...

Взрыв кеги рядом с собакой

Было перепробовано и перенастроено практически всё, что могло хотя бы в теории повлиять на это. Основные параметры менял до неузнаваемости, влияние Force были снижены до неприлично маленьких значений, увеличивал и уменьшал дистанцию срабатывания симуляции в Cloth между объектами, в Soft Body перелопатил всё то же самое, в параметрах коллизии увеличивал и уменьшал ту же дистанцию влияния коллизии, там же включал перерасчёт нормалей, да даже Solver в тканях выставлял на неприлично большие значения по типу 300 и 500, которые тупо избыточны. Но ситуация становилась либо ещё хуже, либо одна проблема уходила и оставалась другая, либо симуляция работала через жопу и выглядела крайне плохо(от Distance в Object Collision то срабатывала, то не срабатывала, то вела себя некорректно). Так же пытался анимировать параметр смешивания вертекс групп, чтобы в определённый момент взрыва меша симуляция плавно переставала действовать. Ничего не помогало, чтобы и рыбку съесть и качественно листочек анимировать. Сидел с очень некрасивым результатом и расстраивался от своего бессилия, уже подумывал удалить проект или выложить позорную версию...Долго я возился с этой темой, пока не вспомнил про одну маленькую блядcкyю галочку.

Как я падение капли на растение в Blender анимировал

Знакомьтесь, Single Sided - САМЫЙ БОЛЬШОЙ БОЛЬ В МОЯ ДЫРКА ЗАДНИЦА. Ну, казалось бы, ну каким тебе образом должно было помочь, то что коллизия теперь с двух сторон просчитывается? У этих двух объектов даже нормали друг к другу повёрнуты как надо и не взаимодействуют вывернутыми сторонами. Ну для чего тебе просчитывать обратную сторону нормали? Да и почему вообще галочка стоит по дефолту? Да, медленнее будет кэширование, но зато как-то логичнее что ли сразу выключать.

После отключения этой галочки у растения всё заработало настолько идеально, что я готов был просто расплакаться от счастья, уйти в монастырь и уверовать. Да ту же дистанцию взаимодействия с коллизией я выставил на самый минимум и даже так всё работало отлично. Хоспаде, спасибо, наконец-то! Насколько это возможно, на полной скорости, с двух ног, втащил по кнопке запекания в кэш и после окончания пересматривал на репите, пока не стошнит. На этом основная головная боль закончилась

Шейдинг и Dynamic Paint

Тут всё очень просто. Заморачиваться я не хотел, поэтому с растением z поступил немного по хитрому:

Из Quixel Bridge я тупо перетянул плюс-минус похожий ассет в Блендер и просто взял от туда все текстурные карты. Для развёртки у такой геометрии много ума не надо, поэтому я просто подогнал её под взятую текстуру. Вышло не очень, но для теста сойдёт. Дальше я просто накрутил обычный сетап для PBR-материалов и чуть-чуть изменил.

Не, ну, а что? Вкусно, питательно, жевать не обязательно
Не, ну, а что? Вкусно, питательно, жевать не обязательно

Сделал из карты Rough две версии: мокрую и сухую. Далее я их просто смиксовал.

Дальше мне нужно было сделать мокрый след от капли. Для этого накинул на лист и каплю Dynamic Paint и выставил для капли режим Brush, а для растения - Canvas. В качестве вывода конечно результата я выбрал режим рисования ч\б текстуры. Режим соприкосновений поверхностей выбрал Proximity.

Тут я столкнулся с одним небольшим неудобством. Если выставлять маленький Distance у Proximity, то от этого капля будет оставлять чёрные дырки в текстуре, которые мне не хотелось особо исправлять на посте. А если выставить минимальный Radius у рисующей поверхности капли - то она всё равно захватывает слишком много лишнего пространства по бокам, но мне было необходимо ровно под каплей.

Хрюшенькин нос
Хрюшенькин нос

Решил это так: выставил всё же минимальный Proximity так, чтобы дырок было минимальное кол-во, открыл сиквенцию в After Effects, кинул Simple Choker и маской закрыл в нужных местах дыры.

Выделенное цветом - маски
Выделенное цветом - маски

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

Свернутая нода - это та самая текстура от <b>Dynamic Paint</b>
Свернутая нода - это та самая текстура от Dynamic Paint

На каплю я просто кинул Refraction и Glass с IOR = 1.333 и соединил через Add Shader. Проще не придумаешь.

А HDRI для света я скачал какую-то jungle карту с BlenderKit.

Как говорится: "...охапка дров и плов готов".

Geomtery Nodes для дополнительной детализации

То, какой я эту каплю сделал уже после первого рендера
То, какой я эту каплю сделал уже после первого рендера

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

Как я падение капли на растение в Blender анимировал

Ну, на визуал это особо не повлияло, но думаю в close-up шоте, можно было бы воспользоваться и было бы достаточно интересно.

Небольшая цветокоррекция в After Effects

Тут мне нечего расписывать. Сюда я вывел сиквенцию Open-EXR MultiLayer в AGX. Отрендерил только Beauty и AO пассы, наложил друг на друга, пошаманил чутка с цветом, высветлил картинку и...Обосрался. Очень хотел уже побыстрее всё отрендерить и забыть про эту тему - так что цветокор получился говна.

Я считал, что всё уже закончил. Но не тут-то было.

Только я собираюсь отправить видос на рендер, как вдруг после рендера пары фреймов АЕ крашится...И сколько бы я не перезапускал - он всегда крашился на рандомном месте, доходя максимум до середины. После очередного перезапуска он просил выключить плагин для отображения EXR - EXtractoR.

Я и битность композиции понизил, и выключил все слои кроме Beauty, и чистил кэш, и перерендеривал исходник. Ничего не помогало...До тех пор пока на наткнулся на КИЛЛЕР-ФИЧУ After Effects(вроде с 2023 версии) - Multi-Frame Rendering. После выключения всё завелось, хоть и гораздо медленнее, чем могло бы быть. И то ли это проблема куска обрыганского кода от Абобе, то ли проблема в том, что плагин очень старый. Но в любом случае меня это убедило в том, что пора пересаживаться на Nuke или Fusion. Потому что сколько разрыва очка и головной боли мне доставил After Effects за всё время работы с ним - мне трудно сосчитать.

Вывод

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

Спасибо за то, что выслушали и прочитали.

P.S. Если ты до сих пор это читаешь - жесть ты герой. Эту духоту мне самому-то перечитывать тяжело. Надеюсь в следующий раз будет лучше.

P.S.S. Походу ДТФ сильно пережимает картинки, ничего на них не видно, соррян

99
7 комментариев

Капля супер!
А вот след от воды - какой-то как будто из слизи что ли. Поведение не водяное.

Спасибо)
Эт да. Я это упоминаю в статье, что материалы накидал очень быстро. Тут много что править нужно)

1

Взял харкнул и выставил за труд, стыдоба

Ну, что поделаешь.
Хотя бы что-то куда-то выложил, чем продолжал бы делать в стол

1

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

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