📚 Довідник · Наукові статті
📅 Березень 2026 ⏱ 10 хв 🎓 Усі рівні

Знакові статті з симуляцій

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

1. Симуляція рідин

1999
Stable Fluids
Йос Стам — SIGGRAPH 1999
Запровадив метод напівлагранжевої адвекції для симуляції нестисливих рідин. Замінює явне інтегрування за часом (яке вимагає крихітного dt) кроком адвекції зі зворотним трасуванням, що безумовно стійкий за будь-якого кроку часу. У поєднанні з проєкцією тиску через розкладання Гельмгольца це основа більшості рідинних симуляторів реального часу.
Нотатки щодо реалізації: туторіал «Jos Stam grid fluid» від Майка Еша — стандартна відправна точка. Ключові операції: адвектувати поля u/v назад уздовж самих себе, потім спроєктувати до без­дивергентного стану за допомогою розвʼязувача Пуассона методом Гаусса-Зейделя. Працює інтерактивно при 128×128 на JavaScript.
Сіткова рідинаЕйлерів підхідРеальний час
2005
Animating Sand as a Fluid
Чжу і Бридсон — SIGGRAPH 2005
Запровадив FLIP (Fluid-Implicit-Particle) — гібридний лагранжево-ейлерів метод. Частинки несуть швидкість; сітка обробляє тиск і без­дивергентну проєкцію. Кожен крок: перенести швидкості частинок на сітку (P2G), спроєктувати, перенести назад (G2P), адвектувати частинки. Дає значно менше числової дифузії, ніж суто сіткові методи.
Нотатки щодо реалізації: суміш PIC/FLIP (зазвичай 5% PIC + 95% FLIP) запобігає нестабільності. Ключова структура даних — рознесена MAC-сітка. Відправний ресурс: книга Бридсона «Fluid Simulation for Computer Graphics».
FLIPPICГібриднийПісок

2. Згладжена частинкова гідродинаміка (SPH)

2003
Particle-Based Fluid Simulation for Interactive Applications
Мюллер, Чарипар, Гросс — SCA 2003
Зробив SPH практичним для графіки реального часу. Запровадив ядро poly6 для густини, гостре ядро (spiky) для градієнта тиску (запобігає злипанню частинок) та ядро вʼязкості для згладжування швидкостей. Визначив повний конвеєр SPH: знайти сусідів → обчислити густину → обчислити сили → проінтегрувати.
Нотатки щодо реалізації: використовуйте сітку просторового хешування для пошуку сусідів за O(n) замість O(n²). Радіус згладжування h ≈ 2× інтервал спокою між частинками. Основна нестабільність — у члені тиску; для нестисливості застосовуйте рівняння стану Тейта (ρ₀=1000, γ=7, B=200).
SPHЛагранжів підхідЯдра
2013
Position Based Fluids
Маклін і Мюллер — SIGGRAPH 2013
Застосовує Position Based Dynamics (PBD) до рідин у стилі SPH. Замість інтегрування на основі сил безпосередньо розвʼязує обмеження густини на позиціях частинок. Дуже стійкий, витримує великі кроки часу, сумісний з PBD-конвеєром для тканини/твердих тіл. Запроваджує член корекції розтягувальної нестабільності (штучний тиск).
Нотатки щодо реалізації: обмеження густини: C_i = ρ_i/ρ₀ − 1. Кожна ітерація PBD коригує позиції так, щоб задовольнити C_i = 0. Для візуальної якості потрібно 3–5 ітерацій на крок часу. Добре поєднується з реалізацією на GPU.
PBFPBDЗручний для GPU

3. Тканина та деформівні тіла

1998
Large Steps in Cloth Simulation
Бараф і Віткін — SIGGRAPH 1998
Розвʼязав проблему жорсткості в симуляції тканини за допомогою неявного інтегрування. Попередні явні методи вимагали крихітних кроків часу, щоб уникнути «вибуху» від жорстких пружинних сил. Неявний метод розвʼязує лінійну систему рівнянь на кожному кроці часу, дозволяючи dt до 50× більший і зберігаючи стійкість. Основа сучасної симуляції тканини у VFX.
Нотатки щодо реалізації: вимагає розвʼязання розрідженої лінійної системи (метод спряжених градієнтів). Для застосунків реального часу краще PBD (Мюллер, 2007), що уникає лінійного розвʼязку. Формулювання Барафа-Віткіна використовується в офлайн-рендерах (Maya, Houdini).
ТканинаНеявне інтегруванняМСЕ
2007
Position Based Dynamics
Мюллер, Гайдельбергер, Геннікс, Реткліфф — VRIPHYS 2006 / JVCA 2007
Замінив симуляцію на основі сил прямою проєкцією обмежень на позиції. Безумовно стійкий, зручний для художників (обмеження — це зрозумілі геометричні умови) та достатньо швидкий для ігор. Обробляє тканину, мʼякі тіла, тверді тіла, рідини (PBF) і троси в єдиному фреймворку. Використовується в Nvidia PhysX, Unity, Unreal.
Нотатки щодо реалізації: кожне обмеження: C(x₁, x₂) = 0. Розвʼязується обчисленням Δx = −C(x)/|∇C|². Обмеження відстані: C = |x₁−x₂| − rest_len. Параметр жорсткості залежить від кількості ітерацій (для жорсткості, незалежної від кроку часу, використовуйте XPBD — Extended PBD).
PBDТканинаРеальний часІгри

4. Тверді тіла та звʼязки

1997
Impulse-Based Dynamic Simulation of Rigid Body Systems
Міртіч і Канні — дисертація PhD / SIGGRAPH 1996
Формалізував симуляцію твердих тіл на основі імпульсів. Коли два тверді тіла стикаються, обчислюється імпульс j = −(1+e)·v_rel·n / (1/m₁ + 1/m₂ + n·(I₁⁻¹(r₁×n)×r₁ + ...)). Імпульс застосовується до обох тіл. Обробляє відновлення (e) і тертя в єдиному фреймворку.
Нотатки щодо реалізації: повну формулу імпульсу дивіться в довіднику game-physics-formulas. Для зʼєднань/звʼязків використовуйте метод послідовних імпульсів (Ерін Катто, GDC 2006 / вихідний код Box2D).
Тверде тілоІмпульсЗіткнення
2005
Iterative Dynamics with Temporal Coherence
Ерін Катто — GDC 2005 (Box2D)
Запровадив послідовний імпульс (SI) і «теплий старт» для розвʼязувачів звʼязків. Основа Box2D, Bullet і більшості ігрових фізичних рушіїв. SI послідовно проходить усі звʼязки, застосовуючи коригувальні імпульси, і збігається за 8–20 ітерацій. «Теплий старт» повторно використовує імпульси попереднього кадру як початкове наближення, зменшуючи потрібну кількість ітерацій.
Нотатки щодо реалізації: Box2D має відкритий код; реалізація b2ContactSolver — канонічний орієнтир. Член стабілізації Баумгарте (β/dt · C) визначає, наскільки агресивно коригується похибка позиції.
ЗвʼязкиBox2DІтеративний розвʼязувач

5. Задача N тіл і просторове індексування

1986
A Hierarchical O(N log N) Force-Calculation Algorithm
Барнс і Гат — Nature, 1986
Знизив складність гравітаційної симуляції N тіл з O(n²) до O(n log n). Будується октодерево (3D) або квадродерево (2D) над усіма частинками. Для кожної частинки, якщо комірка достатньо далеко (d/l < θ, зазвичай θ=0.5), уся комірка трактується як одна маса в її центрі мас. Інакше — рекурсивний спуск до нащадків.
Нотатки щодо реалізації: будуйте нове дерево кожного кадру (частинки рухаються). Ключова ідея: вставка в дерево — O(log n) на частинку, обхід дерева — O(log n) на частинку. Для 100 тис. тіл: Барнс-Гат займає ~30 мс; прямий O(n²) — ~5000 мс.
N тілОктодеревоГравітація
2005
Optimized Spatial Hashing for Collision Detection of Deformable Objects
Тешнер та ін. — VMV 2003; широко цитована редакція 2005
Запровадив просторове хешування як O(n)-альтернативу просторовим деревам для рівномірних розподілів частинок. Координата 3D-комірки відображається в індекс хеш-таблиці за допомогою хеш-функції з великими простими числами. Кожна комірка зберігає список частинок. Для кожної частинки перевіряються лише 3³=27 сусідніх комірок.
Нотатки щодо реалізації: хеш: (x·73856093 XOR y·19349663 XOR z·83492791) % table_size. Розмір таблиці = 2× кількість частинок для низької частоти колізій. Перебудовуйте кожного кадру. Це стандартний підхід для пошуку сусідів у SPH.
Просторовий хешSPHO(n)

6. Метод ґраткових рівнянь Больцмана

1998
Lattice-Boltzmann Method for Fluid Dynamics and Beyond
Чень і Дулен — Annual Review of Fluid Mechanics, 1998
Ґрунтовний огляд, що утвердив LBM як мейнстрімний метод CFD. LBM оперує дискретною функцією розподілу швидкостей f_i(x, t) на сітці. Дві операції: зіткнення (релаксація f до рівноваги через BGK) і стримінг (поширення f_i до сусіда в напрямку i). Макроскопічні ρ та u відновлюються з моментів f.
Нотатки щодо реалізації: модель D2Q9 (2D, 9 швидкостей) — канонічна 2D-реалізація. Параметр τ керує вʼязкістю: ν = (τ − 0.5) / 3. Для стійкості τ має лишатися в (0.5, 2). Надзвичайно паралелізовний — оновлення кожної комірки незалежне (ідеально для GPU).
LBMCFDGPUD2Q9

7. Реакція-дифузія та утворення патернів

1952
The Chemical Basis of Morphogenesis
Алан Тюрінг — Philosophical Transactions of the Royal Society B, 1952
Математично показав, що дві взаємодійні речовини (активатор + інгібітор) можуть спонтанно утворювати просторові патерни з однорідного стану, якщо вони мають різну швидкість дифузії. Ця «нестабільність Тюрінга» пояснює патерни забарвлення тварин (смуги, плями), формування пальців і багато біологічних структур.
Нотатки щодо реалізації: моделі Грея-Скотта та Фітцгʼю-Нагумо — найпоширеніші реалізації нестабільності Тюрінга. Реалізацію на WebGL дивіться в туторіалі Gray-Scott GPU. Ключова вимога: D_activator < D_inhibitor.
Патерни ТюрінгаМорфогенезРеакція-дифузія
1983
Autocatalytic Reactions in the Isothermal, Continuous Stirred Tank Reactor
Грей і Скотт — Chemical Engineering Science, 1983
Визначили модель Грея-Скотта — два звʼязані РДП з параметрами підживлення (F) і знищення (k), що породжують багатий «зоопарк» патернів залежно від простору параметрів F-k. Автокаталітичний член u·v² створює динаміку активатор-інгібітор. Плями, смуги, черви, корал, мітоз — усе з двох рівнянь.
Нотатки щодо реалізації: повну реалізацію на WebGL 2 дивіться в туторіалі Gray-Scott GPU. Стаття Пірсона 1993 року («Complex Patterns in a Simple System») містить остаточну карту параметрів F-k.
Грей-СкоттРДППатерни Тюрінга

8. Боїди, клітинні автомати та інша класика

1987
Flocks, Herds, and Schools: A Distributed Behavioral Model
Крейг Рейнольдс — SIGGRAPH 1987
Запровадив боїдів — три прості правила (розділення, вирівнювання, згуртування), що породжують емерджентну зграйну поведінку. Кожен боїд враховує лише своє локальне оточення; глобальної комунікації немає. Основа всієї симуляції натовпу, симуляції трафіку та роєвого ШІ.
Нотатки щодо реалізації: радіус сусідства ~50 px, максимальна швидкість повороту ~5°/кадр, ваги розділення > згуртування ≈ вирівнювання. Реалізація на GPU: відсортуйте боїдів за коміркою сітки, кожен боїд опитує лише сусідні комірки.
БоїдиЗграйна поведінкаАгентна модель
1970
Mathematical Games: The fantastic combinations of John Conway's new solitaire game "life"
Мартін Ґарднер (опис гри «Життя» Конвея) — Scientific American, 1970
Гра «Життя» Конвея — канонічний клітинний автомат. Бінарні стани, локальні правила для 8 сусідів, повна за Тюрінгом, самовідтворювані структури. Продемонструвала, що складність виникає з крайньої простоти. Вплинула на покоління симуляцій, ШІ (нейронні КА) та теоретичну інформатику.
Нотатки щодо реалізації: реалізація на GPU: упакуйте клітини в uint-текстуру, фрагментним шейдером підрахуйте живих сусідів за 8 вибірок текстури. Виконуйте 1–4 покоління на кадр. Golly (golly.sourceforge.net) — остаточна опенсорс-реалізація «Життя».
Клітинні автоматиГра «Життя»Повна за Тюрінгом
2000
Interaction with Groups of Autonomous Characters
Рейнольдс — GDC 2000
Розширив боїдів поведінкою керування рухом: пошук, втеча, прибуття, переслідування, ухиляння, обхід перешкод, слідування шляхом, розділення. Формалізовано як силові поля на швидкість. Стандартний словник руху ігрового ШІ.
Нотатки щодо реалізації: пріоритет сил: обхід зіткнень > розділення > пошук/втеча > вирівнювання/згуртування. Обмежуйте величину сили до max_force кожного кадру. Бібліотека OpenSteer — еталонна реалізація.
Керування рухомШІАгентна модель
Для подальшого читання: Бридсон, «Fluid Simulation for Computer Graphics» (2-ге вид., 2015) — найкращий підручник з рідин SPH/FLIP/сіткових. Курси Мюллера на SIGGRAPH з XPBD і PBD (2017–2021) — безкоштовні слайди на graphics.pixar.com. «Physically Based Rendering» (PBRT) — Фарр, Якоб, Гамфріс — відповідник у сфері рендерингу.