Исходный размер 1140x1600

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

PROTECT STATUS: not protected

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

Исходный размер 800x450

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

Исходный размер 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 поверхность для деформации.

Исходный размер 800x295

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

Исходный размер 800x450

Red Dead Redemtion 2. (Rockstar Games)

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

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

Исходный размер 800x263

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

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

Displacement

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

В этих сценах я буду рассматривать:

— Displacement: • Kelvin Wakes Deformer. • Ocean Spectrum.

— Коллизию.

— Пену.

Displacement

— Kelvin wakes deformer.

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

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

Исходный размер 800x324

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

0

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

— Ocean spectrum.

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

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

Исходный размер 1199x591

Ocean Evaluate и Ocean Spectrum.

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

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

III. DfW в компьютерной графике: Водная поверхность
Проект создан 08.12.2025
Глава:
1
2
3
4
5
Мы используем файлы cookies для улучшения работы сайта НИУ ВШЭ и большего удобства его использования. Более подробную...
Показать больше