
В рамках работы с визуальными эффектами в анимационном проекте «Русалка» в Houdini был проведён и разделён на две части R & D, затрагивающий подводные сцены:
— Dry-for-wet техники, не использующие Flip.
— Мокрый грум с применением разных методов.
Dry-for-wet
В кинематографе съёмки под водой традиционно считаются одним из наиболее трудных этапов съёмочного процесса. Физические ограничения, накладываемые самой водой, создают преграды для актёров и технической команды, требуя от них особых навыков и оборудования. Актёры испытывают дискомфорт: холод, давление, ограничения подвижности и сложности с дыханием влияют на качество игры и выражение эмоций. С технической точки зрения, необходимы дорогостоящие и громоздкие приборы: водонепроницаемые камеры, стабилизаторы и многое другое. Все это значительно усложняет процесс съёмок, создавая сложную логистику и увеличивая бюджет. В свете этих проблем современные технологии цифровых эффектов предложили альтернативное решение — Dry-for-wet.
В 3D аналагом Dry-for-wet можно назвать создание сцен с водой без использования традиционной Flip-симуляции. Flip симуляция — наиболее точный метод для создания реалистичных движений воды, брызг и пены. Она оперирует миллионами частиц, что позволяет достичь детальной и натуральной динамики жидкости.
Водная гладь
При создании водной поверхности были рассмотрены:
— Displacement. — Коллизия. — Пена.
— Displacement
Kelvin wakes или Клин Кельвина — это математический термин, обозначающий «форму стационарного волнового возмущения в виде клина, возникающую за движущимся по поверхности воды судном.» (Большая Российская Энциклопедия, 2023)
Метод с деформацией вертексов стал основной ноды Kelvin wakes deformer. Она была создана SideFX целеноправленно для имитации волн от коллизии геометрии с водной поверхностью, где считывается информация от движущейся геометрии и передаётся на грид, деформируя точки.
Демонстрация ноды Kelvin_wakes_deformer
Нода Ocean Spectrum используется в паре с нодой Ocean Evaluate. Она берёт грид и создаёт объёмы, они содержат информацию, моделирующую влияние ветра или приливных сил на волны.


Kelvin Wake Deformer вместе с Ocean Spectrum
Рендеры
— Коллизия
Для отрабатывания коллизии объекта с гридом в Houdini существует нода Extracttransform. У ноды два входа, один для референсной геометрии, другой для таргетной. Нода считывает трансформации точек одной геометрии и переносит их на другую.
Отработка коллизии на волнах
Рендер
— Пена
В первую очередь пена от бурного потока воды в CGI — это партиклы. К сожалению, при попытках создать пену используя текстуры и другие приёмы, она оказалась довольно неправдоподобной, поэтому самым лучшим способом для создания пены всё же является Flip.

Стоит учесть, что, при работе с Flip симуляцией необходимо правильно оптимизировать сцену: подготовить геометрию, удалить ненужные атрибуты и кэшировать разные этапы симуляции.
Контейнер с Flip
Пена создаётся на основе партиклов созданной Flip симуляции. Для пены используются ноды White water source, которая создаёт партиклы в зависимости выбросов жидкости, и White water solver для последующей симуляции.
Отработка пены
Демонстрация флюида с пеной
Рендер
Таким образом без использования Flip симуляции возможно сделать довольно убедительную поверхность воды с коллизией объекта в Houdini за счёт деформации вертексов и шейдера. Однако, нельзя создать сцену с пеной или брызгами без использования Flip.
Подводная сцена
В подводной сцене были рассмотрены:
— Волюметрики. — Каустика.
— Волюметрики
Для анимации снова создаётся грид с использованием нод ocean_spectrum и oceans_preview. В данном случае грид и работает в качестве подвесного «аквариума».
Грид с имитацией движения воды

Этот грид в дальнейшем используется для анимации волюметриков.
С помощью небольшого количества VEX и ноды Attrbwrangle нужно назначить на точки id, а так же назначить нормалям скорость и задать анимацию.
Нода Attribadjustfloat рандомизирует размер лучей волюметрика.
Анимация линий для волюметрика
— Каустика
Нода Light library работает на основе VEX операторов, она трансформирует их в USD примитивы света. Эта нода работает только в LOP контексте.
В Light library подаётся источник света, который и будет являться каустикой.
Демонстрация каустики
Демонстрация каустики
— Симуляция водорослей и косяка рыб
этапы сборки процедурных водорослей


стиллшоты из ролика
Без использования Flip симуляции невозможно воспроизвести многочисленные мелкие детали, такие как брызги, капли и реалистичная пена, которые играют ключевую роль в восприятии сцены как настоящей и живой. Однако несмотря на ограничения DfW методов, в зависимости от сцены в разных проектах использовались разные методы реализации водной глади или подводного пространства, и по большей части такие методы как псевдокаустика, волюметрики, свет и дисплейсмент выступают как хорошее компромиссное решение. Они помогают сократить затраты и ускорить процесс, при этом сохраняя самые важные визуальные характеристики.
Груминг в водном контексте
Задача груминг-артиста включает в себя создание прядей, процедурную генерацию, настройку формы, густоты, текстуры и физических свойств волос или шерсти, а также их отработку с анимацией.
Современные инструменты, такие как Maya XGen, Houdini Vellum, Blender и груминг-модули в Unreal Engine, позволяют не только точно имитировать структуру волос, но и управлять их поведением в сложных условиях: от статики или простого ветра до контакта с водой. Однако полная физическая отработка взаимодействия груминга с flip-симуляцией остаётся крайне ресурсоёмкой и редко используется в производстве. Вместо этого художники прибегают к артистичной имитации. Без использования fluid-симуляции воссоздается влияние воды, манипулируемое параметрами шейдинга и динамики.
Таким образом, для продуктивной работы над ВКР мне понадобилось вывести ряд состояний, в которых будут находиться волосы во взаимодействии с жидкостью:
— полностью находящиеся под водой — частично погруженные под воду
— Полное погружение
Принцип симуляции
Волосы, находящиеся под водой, всегда стремятся вверх — при этом их движение замедленное и плавное, особенно когда водные потоки находятся в покое. Они выглядят легкими и невесомыми, значит нужно отменить условия привычной гравитации (1>сила по Y>0). За хаотичность и естественность движения отвечают настройки ветра и шума.
Таким образом, две самые важные настройки для имитации подводного движения находятся в разделе Vellum Forces: — Gravity — Wind Drag
влияние параметров Gravity и Wind Drag на симуляцию
— GRAVITY параметр силы, воссоздающий влияние гравитации на объекте симуляции. Базовым значением по оси Y является -9.8, что по модулю равно ускорению свободного падения на Земле. Отрицательное значение показывает направление по оси — вниз.
В случае с подводной сценой именно этот параметр позволит исказить привычное притяжение волос к земле — задав положительное значение, близкое к относительной невесомости, можно получить нужный эффект легкого стремления гайдов вверх.
— WIND DRAG Параметр, отвечающий за сопротивление в воздушном пространстве. Чем он меньше, тем свободнее и быстрее происходит движение.
Так, при значении равном единице, гайды движутся медленнее. При нуле же — следуют гравитации бзе какого-либо иного влияния.

Для имитации влияния подводных потоков можно так же использовать Motion FX Noise на параметр Wind Velocity.
А для рандомизации влияния гравитационных сил следует использовать ноду Noise Field и подключить к Gravity внутри dopnetwork, предварительно разблокировав GuideSim.
Симуляция подводного движения не нуждается в создании сложных сетапов — в основном это импровизированные манипуляции с привычными параметрами.
Иллюзию водных потоков задает сила и вектор ветра, а антигравитация воссоздает эффект выталкивания.
— Частичное погружение
Принцип симуляции
До того, пока волосы не окажутся в соприкосновении с поверхностью воды, они будут подвержены одним правилам, после — другим. Поэтому следует разделить путь на два разных Vellum-солвера. Первый работает по стандартным законам гравитации с силой тяжести равной -9.8 по оси Y, второй — с силой 0.8 и дополнительными условиями.
Симуляция погружения в воду и выхода из нее имеет сложную структуру и для работы с ней нужно переходить на SOP-контекст.

Далее нужно разблокировать редактирование солвера для сухих волос и найти dopnetwork, в котором создать группу точек «wet» с ограничением по water_box (в разделе bounding с SOP-path).
А в солвере мокрых волос в dopnetwork подключить ноду noise field в gravity.
— ГРУППА WET группа точек, образующаяся при контакте с water_box и позволяющая контролировать смену одних условий симуляции на другие.
— NOISE добавляет хаотичность влияния гравитации на каждый волосок (можно регулировать амплитуду движения).


vellum solver сухие волосы | vellum solver мокрые волосы
Подключая ноду Blend Shapes (в первый вход — сухая симуляция, во второй — мокрая), задаем ее влияние по группе wet и добавляем через «+» новый атрибут влияния. 1 в значении позволяет создать плавный переход от одной геометрии к другой при активации группы wet.
демонстрация blend shapes
Финальным этапом данного сетапа является подключение получившихся симуляций к Vellum Attach Constraints — к ноде, задающей новые правила крепления и фиксации к родительской геометрии.
— 1 вход — output 1 из Vellum Hair — 2 вход — output 2 из Vellum Hair — 3 вход — комплексная симуляция
Смена состояния объекта в симуляции гайдов — непростая задача. Она требует комплексного понимания работы в dopnetwork и сильно зависит от постановки камеры, кадрирования и контекста. Потому в основном подобная симуляция будет разниться от задачи к задаче.