❄️ Śnieżna kula
Szklana śnieżna kula — potrząśnij nią i patrz, jak śnieg wiruje i opada na miniaturową zimową scenkę.
Podobne symulacje
O tej symulacji
Wejdź do trójwymiarowej śnieżnej kuli w czasie rzeczywistym, renderowanej w całości w WebGL. Aż do 4000 pojedynczych płatków śniegu unosi się wewnątrz szklanej kuli — każdy z nich rządzony przez fizykę prędkości granicznej, sinusoidalne prądy wirowe oraz niestandardowy shader GLSL renderujący miękkie, biało-niebieskie kryształki lodu. Naciśnij Shake i patrz, jak cała scena wybucha, zanim płatki powoli osiądą pod wpływem grawitacji.
🔬 Co pokazuje
Każdy płatek śniegu osiąga prędkość graniczną, gdy grawitacja jest dokładnie zrównoważona przez opór powietrza. Ponieważ płaski, rozgałęziony kształt prawdziwego płatka tworzy ogromny opór w stosunku do jego znikomej masy, ta prędkość graniczna wynosi zaledwie 1–2 m/s — znacznie mniej niż w przypadku kropli deszczu. Symulacja modeluje to, przypisując każdej cząstce łagodne, stałe tempo opadania, z losową zmiennością dla każdego płatka, dzięki czemu żadne dwa płatki nie poruszają się identycznie.
🎮 Jak korzystać
Użyj Ilości śniegu (500–4000), aby wymienić gęstość na wydajność. Prędkość opadania skaluje, jak szybko opadają płatki — zwiększ ją dla śnieżycy, zmniejsz dla sennego dryfowania. Siła wiru dodaje sinusoidalną turbulencję w płaszczyźnie poziomej, naśladując prądy wirowe. Rozmiar płatka dostosowuje rozmiar renderowanego punktu. Kliknij Shake!, aby wywołać wybuch prędkości skierowanej w górę, który zanika w ciągu około sekundy.
💡 Czy wiesz, że?
Śnieżne kule zostały wynalezione około 1900 roku i pierwotnie jako „śnieg” wykorzystywały białe wiórki porcelanowe. Nowoczesne kolekcjonerskie egzemplarze używają drobnych cząstek plastiku w wodzie destylowanej zmieszanej z glikolem, aby spowolnić opadanie — dokładnie to, co odtwarzają tutaj suwaki Siły wiru i Prędkości opadania. Szklana kula w tej symulacji wykorzystuje technikę renderowania dwuprzebiegowego (przednia ściana + tylna ściana), aby stworzyć iluzję załamania światła bez kosztownego ray-marchingu.
Najczęściej zadawane pytania
Dlaczego płatki śniegu opadają tak wolno w porównaniu z deszczem?
Płaski, sześcioramienny kształt dendrytu płatka śniegu daje mu wyjątkowo wysoki stosunek powierzchni do masy. Opór powietrza skaluje się z powierzchnią, a grawitacja z masą, więc stosunek oporu do ciężaru płatka jest znacznie wyższy niż w przypadku zwartej kropli deszczu. Równowaga (prędkość graniczna) jest więc osiągana przy zaledwie 1–2 m/s — możesz zwiększyć suwak Prędkości opadania powyżej 1,0, aby zobaczyć, jak wyglądałaby cięższa cząstka.
Co dokładnie zmienia suwak Siły wiru?
Skaluje amplitudę dwóch sinusoidalnych przesunięć stosowanych do pozycji X i Z każdego płatka w czasie — jedno oscylujące z częstotliwością 0,7 rad/s, drugie z 0,53 rad/s. Te dwie nieco różne częstotliwości tworzą quasi-losowy ruch kołyszący, który nigdy się dokładnie nie powtarza, naśladując prądy wirowe powstające wewnątrz prawdziwej potrząsanej śnieżnej kuli. Ustawienie na 0 daje idealnie prosty pionowy spadek; przy 2,0 płatki spiralnie wirują w dramatyczny sposób.
Jak działa przycisk Shake?
Kliknięcie Shake ustawia wewnętrzną wartość shakeDecay na 1,0. W każdej klatce animacji wartość ta jest zmniejszana o 1,4× delta-czasu, więc zanika do zera w ciągu około 0,7 sekundy. Dopóki jest niezerowa, shader wierzchołków GLSL dodaje prędkość skierowaną w górę (shakeY) oraz losowe przesunięcia boczne (shakeX, shakeZ) do każdego płatka proporcjonalnie do shakeDecay — tworząc charakterystyczny łuk wybuchu i opadania.
Jaka jest maksymalna liczba płatków śniegu i dlaczego?
Suwak jest ograniczony do 4000 cząstek. Każdy płatek to sprite punktowy GPU przetwarzany w niestandardowym shaderze wierzchołków, więc wydajność jest doskonała nawet przy maksimum — ale powyżej kilku tysięcy wnętrze kuli staje się tak gęsto upakowane, że pojedyncze płatki nie są już rozróżnialne. Domyślna wartość 2000 daje najlepszą równowagę wizualną między gęstością a czytelnością kształtów poszczególnych kryształów.
Czy mogę obracać kamerę wokół kuli?
Tak — kliknij i przeciągnij na płótnie, aby obracać widok, przewiń, aby przybliżyć lub oddalić, a kliknij prawym przyciskiem myszy (lub przeciągnij dwoma palcami na urządzeniu mobilnym), aby przesuwać kamerę. Kamera wykorzystuje Three.js OrbitControls z włączonym tłumieniem, więc płynnie zatrzymuje się zamiast się zatrzasnąć. Przybliżenie jest ograniczone między 2,5 a 12 jednostek, więc nigdy nie wejdziesz w podstawę ani nie oddalisz się na tyle, by kula zniknęła z widoku.