III. DfW в современной компьютерной графике
Original size 1140x1600

III. DfW в современной компьютерной графике

PROTECT STATUS: not protected
7

Когда речь заходит о воде в компьютерной графике, чтобы создать «настоящую» воду и подводные пространства, воду нужно симулить. Такие симуляции называются по-разному: Flip Simulation, Water Simulation, Fluid Simulation в зависимости от 3D программы.

Минус таких симуляций заключается в их комплексности: Fluid симуляции это типично симуляции, которые состоят из миллионов движущихся частиц, и все эти миллионы частиц программа должна просчитывать. Особенно заметно это сказывается на Real-Time движках, таких как Unreal Engine.

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

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

ИГРЫ И КИНЕМАТОГРАФ

Одной из первых игр, которая использовала текстуры вместо реальной симуляции воды с партиклами, стала игра «N64 Wave Race», выпущенная в 1996 г. студей Nintendo. На тот момент визуал и ощущение от воды в игре были потрясающими, водная гладь выглядела настолько реалистично, насколько это было возможно на консоли того времени.

«Wave Race N64» (Нинтендо)

Показательно, что при создании анимации волн в «Wave Race N64» использовались не просто анимированные карты текстур, а так называемый vertex displacement или дословно «перемещение вершин».

big
Original size 800x450

Сетка грида с демонстрацией волн. «Wave Race N64». (Нинтендо)

Original size 800x450

Анимация грида с помощью vertex displacement. «Wave Race N64». (Нинтендо)

В таких играх как «Расхитительница гробниц» 1996 г. студии Core Design хоть вода и была обычным плейном с текстурой, у студии были попытки создать симуляцию деформации изображения под водой.

Искажение подводного изображения. «Расхитительница гробниц». (Core Design)

Игра «Unreal» или «Нереальный», выпущенная в 1998 г. студиями Epic Games и Digital Extremes стала стала чуть ли не первой игрой, выполненной с помощью движка Unreal Engine 1. В глобальной перспективе метод создания флюидов без использования реальных симуляций не поменялся, а просто улучшался и дорабатывался, однако это был большой скачок вперёд с точки зрения визуальной презентациии и качества анимаций и текстур.

«Нереальный» (Epic Games и Digital Extremes)

Для экономии и упрощения часто используют linear displacement или по-другому dynamic displacement также для создания коллизии (взаимодействия) предметов с водой. Например, для того чтобы сделать симуляцию кругов на воде.

Он схож с vertex displacement, только использует не вертексы для создания анимации, а карты текстур. Этот метод использует шейдера, которые переносят информацию с текстур на 3D поверхность для деформации.

Original size 800x295

Взаимодействие предмета с картой.

Original size 800x450

Red Dead Redemtion 2. (Rockstar Games)

Похожий метод использовался в фильме «Водный мир» режиссёра Кевина Рейнольдса и в фильме «Титаник» Джеймса Кэмерона.

«Водный мир» (реж. Кевин Рейнольдс)

Original size 800x263

«Титаник» (реж. Джеймс Кэмерон)

В некоторых сценах «Жизнь Пи» вода создавалась с помощью трекинга движения и анимированной поверхности.

Original size 800x450

«Жизнь Пи» (реж. Энг Ли)

ТЕХНИЧЕСКАЯ ЧАСТЬ

Displacement

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

— Kelvin wakes deformer.

Kelvin wakes или Клин Кельвина — это математический термин, обозначающий «форму стационарного волнового возмущения в виде клина, возникающую за движущимся по поверхности воды судном.» (Большая Российская Энциклопедия, 2023)

Метод с деформацией вертексов стал основной ноды Kelvin wakes deformer. Она была создана SideFX целеноправленно для имитации волн от коллизии геометрии с водной поверхностью, где считывается информация от движущейся геометрии и передаётся на грид, деформируя точки.

Original size 800x324

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

0

Основные настройки Kelvin Wake Deformer: Falloffs и Spectrum

— Ocean spectrum.

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

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

Original size 1199x591

Ocean Evaluate и Ocean Spectrum.

После анимации волн в первый вход ноды Kelvin_wakes_deformer подключается грид, а во второй вход предмет для коллизии, в данном случае лодка.

Для регулировки визуализации клина перед Kelvin_wakes_deformer использовалась нода Attribadjustvector, где умножалось значение скоростей точек для большей волнистости.

0

Настройки Ocean Spectrum.

Original size 1233x708
Original size 1027x380

Настройки вектора скорости.

0

Рендеры.

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

III. DfW в современной компьютерной графике
7
Chapter:
1
2
3
4
5
6
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