Про цю симуляцію
Зазирніть усередину тривимірної снігової кулі у реальному часі, повністю відрендереної у WebGL. До 4 000 окремих сніжинок дрейфують у скляній сфері — кожна керується фізикою термінальної швидкості, синусоїдальними вихровими потоками та кастомним GLSL-шейдером, що малює м'які блакитно-білі крижані кристали. Натисніть «Потрусити» — і сцена вибухне снігом, який потім поволі осяде під дією сили тяжіння.
🔬 Що демонструє
Кожна сніжинка досягає термінальної швидкості, коли сила тяжіння врівноважується опором повітря. Завдяки плоскій, розгалуженій формі сніжинка має величезне відношення площі поверхні до маси, тому опір значно перевищує вагу — і термінальна швидкість становить лише 1–2 м/с. Симуляція моделює це через постійну повільну швидкість падіння з індивідуальним випадковим відхиленням для кожної частинки.
🎮 Як користуватись
Кількість снігу (500–4 000) дозволяє змінювати густоту залежно від потужності пристрою. Швидкість падіння регулює темп опускання сніжинок — збільште для хуртовини, зменште для ніжного дрейфу. Сила вихору додає синусоїдальну турбулентність у горизонтальній площині, імітуючи завихрення. Розмір сніжинки змінює розмір точок. Кнопка «Потрусити!» додає вибуховий поштовх вгору, що загасає приблизно за секунду.
💡 Чи знаєте ви?
Снігові кулі винайшли близько 1900 року — спочатку «сніг» робили з фарфорових крихт. У сучасних колекційних кулях використовують дрібні пластикові частинки у дистильованій воді з гліколем, щоб уповільнити осідання — саме це й відтворюють повзунки «Сила вихору» та «Швидкість падіння». Скляна сфера у цій симуляції рендериться двома проходами (лицьова + зворотна сторона) для імітації заломлення без дорогого трасування променів.
Поширені запитання
Чому сніжинки падають так повільно порівняно з краплями дощу?
Плоска шестипроменева форма сніжинки-дендрита забезпечує надзвичайно велике відношення площі поверхні до маси. Опір повітря пропорційний площі, а сила тяжіння — масі, тому відношення опору до ваги у сніжинки набагато більше, ніж у компактної краплі дощу. Рівновага (термінальна швидкість) досягається при лише 1–2 м/с — збільшіть повзунок «Швидкість падіння» понад 1,0, щоб побачити, як поводиться важча частинка.
Що насправді змінює повзунок «Сила вихору»?
Він масштабує амплітуду двох синусоїдальних зсувів позиції X і Z кожної сніжинки в часі — одне коливання з частотою 0,7 рад/с, інше — 0,53 рад/с. Два трохи різні значення дають квазівипадковий рух, який ніколи точно не повторюється, імітуючи завихрення у справжній потрусеній кулі. При значенні 0 сніжинки падають строго вертикально; при 2,0 — спірально крутяться.
Як працює кнопка «Потрусити»?
Натискання встановлює внутрішнє значення shakeDecay рівним 1,0. Кожен кадр анімації воно зменшується на 1,4× delta-time і за ~0,7 секунди загасає до нуля. Доки воно ненульове, GLSL-вершинний шейдер додає до кожної сніжинки спрямований вгору імпульс (shakeY) та випадкові бічні відхилення (shakeX, shakeZ), пропорційні shakeDecay — що й створює характерний вибух із наступним повільним осіданням.
Яка максимальна кількість сніжинок і чому саме стільки?
Повзунок обмежено 4 000 частинок. Кожна сніжинка — GPU-точковий спрайт, що обробляється у кастомному вершинному шейдері, тому навіть на максимумі продуктивність залишається відмінною. Однак понад кількох тисяч внутрішній простір сфери стає настільки щільним, що окремі кристали вже не розрізняються. Стандартне значення 2 000 дає найкращий баланс між густотою та читабельністю форм.
Чи можна обертати камеру навколо кулі?
Так — клікніть і перетягніть на полотні для обертання, прокрутіть колесо для масштабування, правою кнопкою миші (або двома пальцями на мобільному) — для панорамування. Камера використовує OrbitControls від Three.js із увімкненим згасанням, тому плавно зупиняється без різких стрибків. Зум обмежено діапазоном 2,5–12 одиниць, щоби не потрапити всередину постаменту і не втратити кулю з виду.