Strona główna Natura Fale oceanu

🌊 Fale oceanu

Proceduralny ocean w shaderach GLSL (fale Gerstnera). Reguluj prędkość wiatru i siłę sztormu w czasie rzeczywistym.

Natura3DZaawansowany60 FPS
ocean ↗ Otwórz osobno
Interfejs samej symulacji jest w języku angielskim.

Proceduralny ocean renderowany za pomocą shaderów GLSL z użyciem modeli fal Gerstnera. Reguluj prędkość wiatru i intensywność sztormu, aby w czasie rzeczywistym przejść od szklistego spokoju do potężnych fal sztormowych.

🔬 Co pokazuje

Fale Gerstnera modelują ruch powierzchni wody, w którym cząstki poruszają się po okręgach (a nie tylko w górę i w dół). Wiele fal nakłada się na siebie, tworząc realistyczne wzory interferencji.

🎮 Jak korzystać

Dostosuj prędkość wiatru, aby zmienić wysokość fal. Zwiększ intensywność sztormu, by uzyskać chaotyczne morze. Obserwuj, jak zmieniają się odbicia słońca wraz ze wzrostem stromizny fal.

💡 Czy wiedziałeś?

Prawdziwe fale oceaniczne powstają, gdy wiatr przekazuje energię powierzchni wody. W pełni rozwinięte morze (przy nieograniczonym rozbiegu wiatru) podąża za widmem Piersona-Moskowitza z 1964 roku.

O tej symulacji

Ta symulacja renderuje w czasie rzeczywistym proceduralną powierzchnię morza za pomocą shadera wierzchołków GLSL zbudowanego wokół modelu fali Gerstnera. Sumowanych jest sześć kierunkowych składowych fal o różnej amplitudzie i długości, dzięki czemu punkty powierzchni zataczają kręgi zamiast po prostu unosić się w górę i w dół, tworząc ostre grzbiety i szerokie doliny. Każda składowa spełnia głębokowodną relację dyspersji w = sqrt(g·k), więc dłuższe fale poruszają się szybciej, a shader fragmentów łączący model Blinna-Phonga z efektem Fresnela odpowiada za odblask słońca, odbicie nieba i pianę na grzbietach.

🔬 Co pokazuje

Suma sześciu fal Gerstnera przemieszcza siatkę płaszczyzny: każdy punkt porusza się zarówno poziomo, jak i pionowo (współczynnik stromizny Q = 0,55), tworząc spiczaste grzbiety. Prędkość fali podąża za głębokowodną dyspersją w = sqrt(9,81·k), gdzie k = 2π/L, a regulator sztormu dodaje dodatkowy chaos i stromiznę fal. Shader fragmentów miesza kolor głębokiej i płytkiej wody w zależności od wysokości, dodaje odblaski słoneczne, odbicie nieba Fresnela oraz białą pianę na najbardziej stromych grzbietach.

🎮 Jak korzystać

Przeciągnij, aby obracać kamerę, i przewijaj, by przybliżać. Suwaki ustawiają amplitudę fal, długość fali, kierunek wiatru (0–360°), prędkość fal, intensywność sztormu (0–1) oraz gęstość mgły atmosferycznej. Przycisk Sztorm natychmiast zwiększa amplitudę, prędkość i chaos fal, tworząc wzburzone morze, a przycisk Cisza spłaszcza je do niemal szklistej powierzchni. Mała żaglówka kołysze się na falach jako punkt odniesienia skali.

💡 Czy wiedziałeś?

Fale Gerstnera, opisane przez Franza Josefa Gerstnera w 1802 roku, były jednym z pierwszych dokładnych rozwiązań dla okresowych fal wodnych. Ich sztuczka polegająca na ruchu cząstek po okręgach sprawia, że prawdziwe grzbiety fal wyglądają ostro, a doliny płasko, a ten sam model jest szeroko stosowany do renderowania oceanów w grach i filmach.

Najczęściej zadawane pytania

Czym jest fala Gerstnera?

Fala Gerstnera to matematyczny model fali wodnej, w którym każda cząstka powierzchni porusza się po okręgu, a nie tylko w górę i w dół. Ten poziomy ruch gromadzi wodę w kierunku grzbietów, czyniąc je ostrymi i spiczastymi, podczas gdy doliny pozostają szerokie i płaskie, co znacznie lepiej odzwierciedla prawdziwe morskie fale niż zwykła fala sinusoidalna.

Jak symulacja buduje na tej podstawie realistyczne morze?

Sumuje sześć składowych Gerstnera w shaderze wierzchołków, każdą o innym kierunku, amplitudzie i długości fali, sterowanych suwakiem kierunku wiatru. Ponieważ fale te interferują ze sobą, powierzchnia zyskuje nieregularny, stale zmieniający się wygląd prawdziwego morza. Shader fragmentów dodaje następnie kolor zależny od głębokości, odblaski słoneczne, odbicie nieba Fresnela i pianę na najbardziej stromych grzbietach.

Czym sterują suwaki i przyciski?

Amplituda ustala wysokość fal, a długość fali ich rozstaw. Kierunek wiatru (0–360°) obraca dominujący kierunek ruchu, prędkość skaluje tempo poruszania się fal, a sztorm (0–1) dodaje chaotyczną kipiel, jednocześnie przyciemniając niebo i wodę. Mgła reguluje atmosferyczny zamęt. Przyciski Sztorm i Cisza przenoszą od razu do gotowych warunków — wzburzonych lub gładkich.

Czy fizyka fal jest dokładna?

Ruch jest fizycznie uzasadniony: każda składowa wykorzystuje głębokowodną relację dyspersji w = sqrt(g·k) przy g = 9,81 m/s², więc dłuższe fale prawidłowo poruszają się szybciej niż krótkie. To wizualne przybliżenie, a nie solver płynów, ponieważ wykorzystuje stały zestaw sześciu fal oraz stylizowaną pianę i oświetlenie, ale podstawowy kształt fal i zachowanie dyspersji są zgodne z teorią.

Dlaczego bardziej strome fale w końcu się załamują w prawdziwym oceanie?

Fala Gerstnera może być na tyle stroma, że orbity cząstek na grzbiecie wyprzedzają samą falę, w tym momencie powierzchnia zawija się, a model przestaje być jednoznaczny. W naturze dzieje się to dokładnie wtedy, gdy fale załamują się w białe grzywy, zwykle gdy kąt grzbietu zbliża się do około 120 stopni, dlatego ta symulacja maluje pianę na swoich najbardziej stromych, najszybciej poruszających się grzbietach.

⚙ Pod maską

Proceduralny ocean w shaderach GLSL (fale Gerstnera). Reguluj prędkość wiatru i siłę sztormu w czasie rzeczywistym.

GLSLGerstner WavesFresnelShaders

3D · Renderer Three.js / WebGL · cel 60 FPS · działa w całości po stronie klienta, bez instalacji

Podobne symulacje