Интерактивное моделирование дыма
Математически состояние жидкости в любой момент времени моделируется как поле скоростей (задается функция, которая определяет для каждой точки пространства вектор скорости). Для того, чтобы лучше понять это, достаточно представить комнату с воздухом (множеством частичек — молекул). Каждая частичка имеет скорость, которая может изменяться в зависимости от внешних условий: наличие батареи (источник… Читать ещё >
Интерактивное моделирование дыма (реферат, курсовая, диплом, контрольная)
Хотя уравнения Навье-Стокса физически точны, на практике они не использовались для интерактивных приложений. Перелом произошел, когда в [12] был предложен вычислительно простой алгоритм для моделирования движения газа в двумерном случае.
Представленный алгоритм был продолжением работ [9, 10] и отличался стабильностью при любом выборе параметров. Это позволяло делать существенно меньше итераций при численном решении, что и обусловило высокую экономичность данного подхода.
Математическая модель
В этой статье автор представляет простое и быстрое приложение для реализации динамики жидкости для компьютерных игр.
(a). |
(b). |
Математически состояние жидкости в любой момент времени моделируется как поле скоростей (задается функция, которая определяет для каждой точки пространства вектор скорости). Для того, чтобы лучше понять это, достаточно представить комнату с воздухом (множеством частичек — молекул). Каждая частичка имеет скорость, которая может изменяться в зависимости от внешних условий: наличие батареи (источник тепла), присутствие сквозняка в комнате и др.
Например, скорость воздуха вблизи обогревателя будет в основном направлена вверх, так как теплый воздух легче холодного. Распределение скоростей внутри комнаты очевидно также сложно, как описание распределения скоростей частиц дыма, поднимающегося вверх от зажженной сигареты, или движение частиц пыли в воздухе.
Уравнения Навье-Стокса — точно описывают эволюцию поля скоростей с течением времени. При данных скоростях и силах уравнение говорит, как точно скорости будут изменяться через бесконечно малый промежуток времени. Уравнение вверху записано в компактной векторной форме. Очень грубо можно сказать, что изменение скоростей происходит из-за 3х величин, стоящих справа от знака равенства.
Но поле скоростей само по себе не слишком интересно, пока оно не начнет двигать какие-то объекты (частицы дыма, пыль или листья). Движение этих объектов вычисляется преобразованием скоростей вокруг объекта в телесные силы.
Легкие объекты обычно просто двигаются по полю скоростей, так сказать, текут вдоль скоростей. В случае с дымом чересчур дорого моделировать каждую частичку по отдельности, поэтому они заменяются на плотности.
Для этого вводится непрерывная функция, которая показывает, сколько дыма находится в каждой точке пространства. Обычно значения изменяются от одного до нуля. Эволюцию поля плотностей сквозь поле скоростей тоже можно описать математическим уравнением (нижнее уравнение), которое похоже на уравнение сверху. На самом деле, внизу более простое уравнение, чем сверху, так как оно линейное относительно плотности.
Математическое представление уравнений для жидкости полезно только, когда размышляешь о жидкости в общем.
На практике, конечно, нам необходимо конечное представление нашей жидкости. Обычный подход — это разбить все исследуемое пространство на равномерную сетку.
Здесь будет рассмотрен простой для описания случай равномерной двумерной сетки, хотя ничего из описанного ниже не ограничивается этим упрощением. Пространство разбивается на сетку, по каждой оси на N+2 ячейки.
Первый и последний столбцы и первая и последняя строчки отводятся для граничных условий. Считается, что плотность и скорости постоянны в каждой отдельно взятой ячейке.
Базовая структура решения следующая: начинаем с некоторых заданных значений для плотности и скоростей, затем постоянно обновляем их согласно событиям, которые происходят в окружающей среде. Считается, что между каждым циклом симуляции проходит время dt.