III. Частичное погружение
Original size 1140x1600
7

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

примеры из кинематографа

big
Original size 1920x800

«Aquaman» 2018 | behind the scene

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

Однако в случае, когда герой является full-CG персонажем, приходится обращаться к грумингу.

big
Original size 1371x771

«Alita: Battle Angel» 2019 | VFX breakdown

Студия Wētā FX (ранее Weta Digital) на отработке фильма «Алита: Боевой Ангел» выбрала производить симуляцию волос и симуляцию воды отдельно друг от друга ради оптимизации процессов. Таким образом, динамика и анимация прядей лишь создают иллюзию взаимодействия с поверхностью воды. И происходит это с помощью переключения между двумя симуляциями: привычной гравитации на поверхности и «невесомости» под водой.

«The Jungle Book» 2016 | VFX breakdown

Частый случай full-CG персонажа, требующего генерацию волос — животные. Так, в фильмах «Книга Джунглей» и «Муфаса: Король Лев» звери в некоторых сценах оказываются в тесном контакте с водой. Здесь VFX-артисты обращались к методу маскирования геометрии — выделяли зоны намокания и применяли к ним другую динамику, шейдер и стилизацию.

Original size 2304x480

«Mufasa: The Lion King» 2024 | VFX breakdown

Однако метод комплексной flip-симуляции с коллизией шерсти тоже может быть использован, как например студией Wētā FX в фильме «Планета обезьян: Новое царство». Подобный способ крайне ресурсоемкий и сложный, однако окупается невероятной реалистичностью симуляции: грум намокает лишь при взаимодействии с частицами воды и отрабатывает анимацию исходя из физически корректных настроек капель. Таким образом, в фильме можно увидеть множество близких ракурсов с частично-мокрой шерстью.

«Kingdom of the Planet of the Apes» 2024 | VFX breakdown

Техническая реализация

погружение и выход

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

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

Original size 1220x72

obj > geo «contact_group»

В прошлой главе была рассмотрена симуляция, реализуемая через ноду Guide Simulation. Это комплексная нода, собранная специально для работы с волосами на базовом уровне. Однако симуляция погружения в воду и выхода из нее имеет более сложную структуру и для работы с ней нужно переходить на SOP-контекст.

Таким образом, создавая на Obj-Network гайды волос, нужно связать их с нодой Guide Deform и из нее подать OUT_GROOM в Object Merge на новом SOP-контексте (geo нода с названием contact_group).

Original size 1143x450

распаковка OUT_GROOM из Guide Deform и подача в Vellum Constrains (Hair)

Задаем каждому примитиву (index_prim) и каждой точке гайдов (index_pt) индексацию через Enumirate.

И подаем анимированные гайды и анимированную геометрию в ноду Vellum Constrains (Hair) для дальнейшей симуляции.

Original size 1251x687

подключение surface к ray | vellum-солверы

Создаем поверхность воды с помощью обычного grid в нуле координат по оси-Y (будет использоваться под названием surface) и с помощью Poly Extrude из плоскости достраиваем куб, имитирующий пространство воды (water_box).

демонстрация Surface и Water Box

Original size 1920x540

анимация головы

Vellum Solvers

post

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

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

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

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

dopnet | сухие волосы, popgroup c группой wet

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

SOP-контекст

Ray — нода, позволяющая переложить одну геометрию на другую с указанием осей. Таким образом, в качестве объекта коллизии используем surface, а отражающейся геометрии — подводную симуляцию из солвера. Значение -1 по оси Y позволяет задать условие, что при пересечении нуля координат в отрицательную сторону объект перестает отражаться на геометрии коллизии.

Это позволит создать эффект «натяжения» волос по поверхности воды и поможет в плавном переходе от одной симуляции к другой.

Original size 1127x460

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

Original size 1920x600

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

Помимо переключения с динамики сухих волос на подводные, нужно реализовать утяжеление влажных волос после контакта с водой. И так как группа wet сохраняется и после выхода грума из объема water_box (отображается красным цветом), ее можно использовать для внесения новых условий симуляции.

Создаем атрибут Cd по группе wet, меняем его тип на Vector и выставляем значение по всем осям на 1. И дальше этот векторный атрибут переводим в целые числа (int) на VOP-контексте, чтобы вернуть его в качестве группы parm.

перевод атрибута Cd (Vector -> Int) через attribvop | VOP-контекст

post

Далее снова подаем surface как геометрию коллизии для ноды ray, но в качестве ограничивающей группы выбираем parm.

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

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

Перед этим нужно скопировать группы wet и parm на output 1 из Vellum Hair с помощью group copy.

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

Original size 1175x536

финальная часть нодовой системы

В последнем Vellum-солвере задаем сильную гравитацию (Vellum Forces -> ось Y = -12) и на последний вход подаем output 3 из Vellum Hair.

Корректность финальной симуляции напрямую зависит от настроек структуры волос (в обоих vellum constraints нодах) — в зависимости от упругости и растяжения гайдов их взаимодействие с поверхностью «воды» будет меняться. Так же важно правильно выбрать расположение отражений в обоих нодах ray, чтобы смена симуляций происходила на нужном уровне.

настройки Vellum Constraints (hair) | настройки Vellum Constraints (attach)

Original size 1476x830

финальная симуляция

III. Частичное погружение
7
Chapter:
1
2
3
4
5
We use cookies to improve the operation of the HSE website and to enhance its usability. More detailed information on the use of cookies can be fou...
Show more