← ⚡ Physics & Mechanics

🌊 Waves

Time: 0.0s
FPS:
LMB — throw stone · Drag RMB — rotate · Scroll — zoom

🌊 Хвилі — Інтерактивний Океан

Гарна поверхня океану, відрендерена шейдерами GLSL: піна, відблиски місяця, ефект Френеля та підповерхневе розсіювання. Пресети для тихого моря, шторму, ряби та цунамі — клацайте, щоб кидати каміння.

🔬 Що демонструє

Хвилі Герстнера з кількома компонентами частот. Рівняння Френеля керують балансом відбиття/заломлення. Піна з'являється там, де нахили хвиль перевищують поріг.

🎮 Як використовувати

Виберіть пресет (спокій, шторм, рябь, цунамі). Клацайте на воду, щоб створити хвилі. Спостерігайте за відблисками місяця, що рухаються разом з хвилями.

💡 Чи знали ви?

Ефект Френеля: під малим кутом ви бачите більше відбиття, а дивлячись прямо вниз — більше заломлення. Ось чому далека вода виглядає дзеркально, а близька — прозоро.

Про Інтерактивний океан

Ця симуляція відтворює в реальному часі поверхню океану з GPU-шейдингом, використовуючи суму хвиль Герстнера. Кожна хвиля Герстнера зміщує вершини як вертикально, так і горизонтально, тож гребені загострюються, а западини розширюються, наслідуючи рух реальних частинок води по колових орбітах. Накладаються чотири хвилі різної довжини, напрямку та швидкості, а дисперсійне співвідношення для глибокої води c = sqrt(9.8 / k), де k = 2π / довжина хвилі, задає фазову швидкість кожної хвилі.

Панель керування регулює амплітуду (крутість), швидкість хвиль, напрямок вітру (який переорієнтовує домінантні хвилі), каламутність (додаткові високочастотні брижі), глибину кольору та роздільну здатність сітки. Клік по воді породжує брижі, що розширюються та згасають, а також сплеск. Подібні методи використовують для рендерингу води в іграх, фільмах та океанографічних візуалізаціях, де переконливі поверхні треба отримати значно швидше, ніж дозволяє повноцінний розв'язувач рідин.

Поширені запитання

Що показує ця симуляція?

Вона показує освітлену місяцем поверхню океану, анімовану в реальному часі за допомогою WebGL та Three.js. Висота води формується з кількох поєднаних хвиль Герстнера, а GLSL-шейдер додає піну на крутих гребенях, френелівський відблиск відбиття, дзеркальні полиски місячного світла та відтінок підповерхневого розсіювання.

Що таке хвиля Герстнера?

Хвиля Герстнера (або трохоїдальна) — це класична модель, у якій точки поверхні описують колові орбіти, зміщуючись як горизонтально, так і вертикально. Це дає гострі піки та плоскі западини, що виглядають значно реалістичніше за просте синусоїдальне зміщення, тому її широко застосовують для рендерингу води в реальному часі.

Що роблять елементи керування?

Амплітуда задає крутість хвиль, Швидкість масштабує те, як швидко рухаються гребені, а Вітер (напр.) обертає домінантний напрямок хвиль у градусах. Каламутність додає дрібні неспокійні брижі, Глибина кольору змінює відтінок води від глибокої до мілкої, а Роздільна здатність змінює деталізацію сітки поверхні.

Яке ключове рівняння стоїть за хвилями?

Кожна хвиля Герстнера використовує дисперсійне співвідношення для глибокої води, де фазова швидкість c дорівнює квадратному кореню з g, поділеного на хвильове число k, при цьому k дорівнює 2π, поділеному на довжину хвилі, а g приймається рівним 9.8. Фаза дорівнює k, помноженому на скалярний добуток напрямку та позиції, мінус c, помножене на швидкість і час.

Чому на гребенях з'являються баранці та піна?

Шейдер порівнює вертикальне зміщення кожної вершини з порогом поблизу амплітуди хвилі. Там, де гребінь круто здіймається вище цього порогу, значення піни зростає, і фрагментний шейдер підмішує майже білий колір піни. Це наближено відтворює те, як реальні хвилі розбиваються та насичуються повітрям, коли їхній нахил стає надто крутим.

Що таке ефект Френеля, який видно на воді?

Ефект Френеля описує те, як відбивна здатність зростає, коли кут вашого огляду наближається до ковзного. Шейдер підносить до степеня одиницю мінус скалярний добуток нормалі поверхні та напрямку огляду, тож віддалена вода під малим кутом виглядає дзеркальною, а вода, на яку дивляться згори, здається темнішою та прозорішою.

Що відбувається, коли я клікаю по воді?

Клік пускає промінь на плоску площину на рівні води, щоб знайти точку удару, потім реєструє імпульс брижів і породжує дюжину частинок сплеску. Брижі — це синусоїдальна хвиля, що радіально розширюється і згасає як з відстанню, так і з часом, тож збурення поширюється назовні й зникає, наче камінь, кинутий у ставок.

Наскільки це точно з фізичної точки зору?

Це візуально достовірне наближення, а не справжня симуляція рідини. Модель Герстнера та дисперсійне співвідношення для глибокої води фізично обґрунтовані, але члени неспокійної каламутності, згасання брижів та піна — це художні евристики. Воно передає вигляд і рух океану, не розв'язуючи повні рівняння Нав'є–Стокса.

Що роблять пресети?

Спокій використовує низьку амплітуду, повільну швидкість і слабку каламутність для лагідного моря. Шторм різко підвищує амплітуду, швидкість і неспокій. Брижі задають майже плоску поверхню та розкидають багато дрібних ударів. Цунамі використовує дуже велику амплітуду з єдиними величезними брижами, запущеними від одного краю сітки.

Де ці методи застосовують у реальному світі?

Рендеринг сумою хвиль Герстнера забезпечує океани у відеоіграх та кіноспецефектах, де реалістична вода потрібна в кожному кадрі. Подібні методи на основі спектра хвиль використовують в офшорній інженерії, корабельних симуляторах та океанографічній візуалізації, даючи правдоподібні поверхні з інтерактивною швидкістю без витрат на повноцінний розв'язувач обчислювальної гідродинаміки.