Глава 4 • Гидродинамика и Поверхностные Волны

2D Жидкости и Волны

Уравнения Навье-Стокса слишком тяжелы для 60 FPS в играх. Но геймдев придумал два гениальных трюка: волны на связанных пружинах (Terraria, Limbo) и вязкие капли-метаболы (Where's My Water).

🌊 Эксперимент 1: Водная Гладь и Сила Архимеда

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

🖱️ Проведите мышкой по воде для всплеска | Хватайте ящики и топите их
Свойства воды
Натяжение поверхности (k) 0.025
Затухание волн (damp) 0.035
Скорость передачи волны (spread) 0.250

Как устроена вода в Terraria & Badland?

Поверхность воды разбивается на 100-200 вертикальных точек (столбиков). Каждый столбик — это гармонический осциллятор, привязанный пружиной к базовому уровню воды:

F_i = -k · (y_i - targetY) - c · v_i

Затем за несколько проходов (passes) каждый столбик передает долю своего смещения соседним столбикам слева и справа. В результате по воде разбегаются идеальные круговые синусоидальные волны!

Плавучесть по закону Архимеда (Buoyancy)

Когда погружаемый объект (ящик) пересекает поверхность воды, движок рассчитывает погруженную глубину:

F_b = \rho_{water} \cdot V_{submerged} \cdot g

Если плотность тела меньше плотности воды ($\rho < 1$), сила Архимеда перевешивает гравитацию и ящик выталкивается наверх. Вода также оказывает вязкое сопротивление (drag), гася скорость ящика.

💧 Эксперимент 2: Жидкость из Частиц и Метаболы

Капли с отталкиванием по давлению. Наливайте воду, мешайте её курсором и наблюдайте перетекание по наклонным полкам.

🖱️ Водите мышкой сквозь жидкость с зажатой кнопкой, чтобы взболтать поток
Параметры жидкости
Лимит частиц 220
Вязкость (Viscosity) 0.40

Метод SPH (Smoothed-Particle Hydrodynamics)

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

P = k_{stiff} \cdot (\rho - \rho_0)^2

Вязкость передает импульс между соседними каплями, сглаживая относительные скорости (превращая воду в гель или смолу при повышении ползунка).

Эффект метаболов (Metaball Rendering)

Чтобы капли не выглядели как россыпь шариков от подшипников, применяется трюк отрисовки: капли рисуются с мягким размытием (Blur), после чего накладывается пороговый альфа-фильтр (Color Threshold). Там, где ауры капель перекрываются, они визуально сливаются в гладкую непрерывную водную струю!

← Назад: Столкновения и Импульсы Далее: Большая Песочница →