Original size 600x847

VFX R&D | Грум под водой & Dry-for-wet

PROTECT STATUS: not protected

В рамках работы с визуальными эффектами в анимационном проекте «Русалка» в 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 целеноправленно для имитации волн от коллизии геометрии с водной поверхностью, где считывается информация от движущейся геометрии и передаётся на грид, деформируя точки.

Original size 800x324

Демонстрация ноды Kelvin_wakes_deformer

Нода Ocean Spectrum используется в паре с нодой Ocean Evaluate. Она берёт грид и создаёт объёмы, они содержат информацию, моделирующую влияние ветра или приливных сил на волны.

Kelvin Wake Deformer вместе с Ocean Spectrum

0

Рендеры

— Коллизия

Для отрабатывания коллизии объекта с гридом в Houdini существует нода Extracttransform. У ноды два входа, один для референсной геометрии, другой для таргетной. Нода считывает трансформации точек одной геометрии и переносит их на другую.

Original size 800x450

Отработка коллизии на волнах

Original size 800x450

Рендер

— Пена

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

post

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

Original size 800x450

Контейнер с Flip

Пена создаётся на основе партиклов созданной Flip симуляции. Для пены используются ноды White water source, которая создаёт партиклы в зависимости выбросов жидкости, и White water solver для последующей симуляции.

Original size 800x450

Отработка пены

Original size 800x450

Демонстрация флюида с пеной

Original size 800x450

Рендер

Таким образом без использования Flip симуляции возможно сделать довольно убедительную поверхность воды с коллизией объекта в Houdini за счёт деформации вертексов и шейдера. Однако, нельзя создать сцену с пеной или брызгами без использования Flip.

Подводная сцена

В подводной сцене были рассмотрены:

— Волюметрики. — Каустика.

— Волюметрики

Для анимации снова создаётся грид с использованием нод ocean_spectrum и oceans_preview. В данном случае грид и работает в качестве подвесного «аквариума».

Original size 800x450

Грид с имитацией движения воды

post

Этот грид в дальнейшем используется для анимации волюметриков.

С помощью небольшого количества VEX и ноды Attrbwrangle нужно назначить на точки id, а так же назначить нормалям скорость и задать анимацию.

Нода Attribadjustfloat рандомизирует размер лучей волюметрика.

Original size 800x450

Анимация линий для волюметрика

— Каустика

Нода Light library работает на основе VEX операторов, она трансформирует их в USD примитивы света. Эта нода работает только в LOP контексте.

В Light library подаётся источник света, который и будет являться каустикой.

Original size 800x450

Демонстрация каустики

Original size 800x247

Демонстрация каустики

— Симуляция водорослей и косяка рыб

Original size 800x450
Original size 1920x1080

этапы сборки процедурных водорослей

Loading...

стиллшоты из ролика

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

Груминг в водном контексте

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

Современные инструменты, такие как Maya XGen, Houdini Vellum, Blender и груминг-модули в Unreal Engine, позволяют не только точно имитировать структуру волос, но и управлять их поведением в сложных условиях: от статики или простого ветра до контакта с водой. Однако полная физическая отработка взаимодействия груминга с flip-симуляцией остаётся крайне ресурсоёмкой и редко используется в производстве. Вместо этого художники прибегают к артистичной имитации. Без использования fluid-симуляции воссоздается влияние воды, манипулируемое параметрами шейдинга и динамики.

Таким образом, для продуктивной работы над ВКР мне понадобилось вывести ряд состояний, в которых будут находиться волосы во взаимодействии с жидкостью:

 — полностью находящиеся под водой  — частично погруженные под воду

— Полное погружение

Принцип симуляции

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

Таким образом, две самые важные настройки для имитации подводного движения находятся в разделе Vellum Forces:  — Gravity  — Wind Drag

Original size 960x293

влияние параметров Gravity и Wind Drag на симуляцию

— GRAVITY параметр силы, воссоздающий влияние гравитации на объекте симуляции. Базовым значением по оси Y является -9.8, что по модулю равно ускорению свободного падения на Земле. Отрицательное значение показывает направление по оси — вниз.

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

— WIND DRAG Параметр, отвечающий за сопротивление в воздушном пространстве. Чем он меньше, тем свободнее и быстрее происходит движение.

Так, при значении равном единице, гайды движутся медленнее. При нуле же — следуют гравитации бзе какого-либо иного влияния.

post

Для имитации влияния подводных потоков можно так же использовать Motion FX Noise на параметр Wind Velocity.

А для рандомизации влияния гравитационных сил следует использовать ноду Noise Field и подключить к Gravity внутри dopnetwork, предварительно разблокировав GuideSim.

Original size 1056x250

Симуляция подводного движения не нуждается в создании сложных сетапов — в основном это импровизированные манипуляции с привычными параметрами.

Иллюзию водных потоков задает сила и вектор ветра, а антигравитация воссоздает эффект выталкивания.

Loading...

— Частичное погружение

Принцип симуляции

До того, пока волосы не окажутся в соприкосновении с поверхностью воды, они будут подвержены одним правилам, после — другим. Поэтому следует разделить путь на два разных Vellum-солвера. Первый работает по стандартным законам гравитации с силой тяжести равной -9.8 по оси Y, второй — с силой 0.8 и дополнительными условиями.

Симуляция погружения в воду и выхода из нее имеет сложную структуру и для работы с ней нужно переходить на SOP-контекст.

post

Далее нужно разблокировать редактирование солвера для сухих волос и найти dopnetwork, в котором создать группу точек «wet» с ограничением по water_box (в разделе bounding с SOP-path).

А в солвере мокрых волос в dopnetwork подключить ноду noise field в gravity.

— ГРУППА WET группа точек, образующаяся при контакте с water_box и позволяющая контролировать смену одних условий симуляции на другие.

— NOISE добавляет хаотичность влияния гравитации на каждый волосок (можно регулировать амплитуду движения).

vellum solver сухие волосы | vellum solver мокрые волосы

Подключая ноду Blend Shapes (в первый вход — сухая симуляция, во второй — мокрая), задаем ее влияние по группе wet и добавляем через «+» новый атрибут влияния. 1 в значении позволяет создать плавный переход от одной геометрии к другой при активации группы wet.

Original size 1920x600

демонстрация blend shapes

Финальным этапом данного сетапа является подключение получившихся симуляций к Vellum Attach Constraints — к ноде, задающей новые правила крепления и фиксации к родительской геометрии.

 — 1 вход — output 1 из Vellum Hair  — 2 вход — output 2 из Vellum Hair  — 3 вход — комплексная симуляция

Loading...

Смена состояния объекта в симуляции гайдов — непростая задача. Она требует комплексного понимания работы в dopnetwork и сильно зависит от постановки камеры, кадрирования и контекста. Потому в основном подобная симуляция будет разниться от задачи к задаче.

We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more