Моделирование воды с помощью сетки
-
05-09-2019 - |
Вопрос
Некоторое время я пытался имитировать текущую воду с помощью алгоритмов, которые я почерпнул из "Гидродинамика в реальном времени для игр".Проблема в том, что с помощью этих алгоритмов я, похоже, не добиваюсь поведения, подобного поведению воды.
Сам я предполагаю, что делаю что-то неправильно и что не все эти алгоритмы подходят для жидкостей, похожих на воду.
Что я делаю не так с этими алгоритмами?Верны ли вообще эти алгоритмы?
У меня есть связанный проект в репозиторий bitbucket.(требуется глетулы и самый новый пиглет бежать)
Решение
Решения на основе вокселей прекрасно подходят для имитации жидкостей и часто используются в пленке.Веб-сайт Рона Федкива приводит несколько академических примеров - все они основаны на сетке.Этот код лежит в основе многих симуляций, используемых Pixar и ILM.
Хорошим источником также является книга Роберта Бридсона Примечания к курсу моделирования жидкости из SIGGRAPH и его Веб-сайт.У него есть книга "Жидкостное моделирование для компьютерной графики" это происходит путем детальной разработки жидкостного симулятора.
Самый конкретный ответ, который я могу дать на ваш вопрос, заключается в том, что жидкости Stam в реальном времени для игр ориентированы на smoke, т.Е.где нет границы между жидкостью (водой) и внешней воздушной областью.В принципе, дым и жидкости используют один и тот же базовый механизм, но для жидкости вам также необходимо отслеживать положение поверхности жидкости и применять соответствующие граничные условия к поверхности.
Другие советы
Джем Юксель представил фантастический доклад о своем Волновые Частицы в SIGGRAPH 2007.Они дают очень реалистичный эффект при довольно низкой стоимости.Он даже смог смоделировать взаимодействие с твердыми телами, такими как коробки и лодки.Другим интересным аспектом является то, что движение лодки не задано сценарием, оно моделируется с помощью взаимодействия винта с жидкостью.
(источник: cemyuksel.com)
На конференции он сказал, что планирует выпустить исходный код, но я пока ничего не видел.Его веб-сайт содержит полный текст доклада и видеоролики, которые он показал на конференции.
Редактировать: Только что увидел ваш комментарий о желании имитировать текущие жидкости, а не колеблющиеся бассейны.Это не подошло бы для этого, но я оставлю это здесь на случай, если кто-то другой сочтет это полезным.
Какой тип воды вы пытаетесь имитировать?Лужи с рябью на воде или текущие жидкости?
Не думаю, что я когда-либо видел текущую воду, разве что в визуализированных фильмах.Создать рябь на воде довольно легко, этот сайт обычно возникает вопрос такого типа.
Да, этот тип решения на основе вокселей действительно работает, только если ваша жидкость ограничена очень дискретными и статичными границами.
Для моделирования текущей жидкости проведите некоторое исследование частиц.В последнее время был достигнут значительный прогресс в их ускорении на графическом процессоре, и вы можете получить потрясающие результаты.
Взгляните на, http://nzone.com/object/nzone_cascades_home.html как отличный пример того, чего можно достичь.