Mantaflow
Mantaflow — это открытый программный фреймворк для симуляции физических процессов жидкостей и газов, разработанный исследовательской группой под руководством Нильса Тюрея (Nils Thuerey) в Техническом университете Мюнхена. Основное применение Mantaflow — создание реалистичных анимаций течений, волн, дыма, огня и взрывов в компьютерной графике, а также в научных расчётах, связанных с гидро- и аэродинамикой. С 2020 года фреймворк интегрирован в пакет трёхмерного моделирования Blender в качестве основного движка для симуляции жидкостей и газов.
История
Разработка Mantaflow началась в 2011 году в рамках исследовательского проекта, финансируемого Европейским исследовательским советом (ERC). Целью проекта было создание эффективного и масштабируемого инструмента для симуляции жидкостей, который мог бы работать как на центральных процессорах (CPU), так и на графических ускорителях (GPU). Первая публичная версия фреймворка была выпущена в 2013 году под лицензией GPL v2.
В 2019 году команда Blender Foundation объявила о планах интеграции Mantaflow в Blender 2.82. Полноценная интеграция произошла в версии Blender 2.83 (выпущена в июне 2020 года), заменив устаревший и менее производительный движок симуляции жидкостей, основанный на методе решёточных уравнений Больцмана (LBM). После интеграции Mantaflow стал основным инструментом для симуляции жидкостей и газов в Blender, а его исходный код был адаптирован для работы в рамках архитектуры Blender.
С 2021 года разработка Mantaflow ведётся в основном силами сообщества Blender и отдельных энтузиастов, хотя оригинальная исследовательская группа продолжает публиковать научные работы, связанные с методами симуляции, лежащими в основе фреймворка.
Архитектура и принципы работы
Mantaflow основан на решении уравнений Навье — Стокса, описывающих движение вязких жидкостей и газов. Для дискретизации пространства используется метод конечных разностей на регулярной сетке (решётке). Основные компоненты фреймворка включают:
- Сетка (Grid): трёхмерная решётка, на которой хранятся значения физических полей (скорость, давление, плотность, температура). Разрешение сетки определяет детализацию симуляции.
- Решатель (Solver): ядро, выполняющее итерации по времени. Для каждого шага решатель вычисляет адвекцию (перенос вещества), диффузию, проекцию давления (для обеспечения несжимаемости) и внешние силы (гравитация, ветер).
- Метод FLIP (Fluid-Implicit Particle): используется для симуляции жидкостей. Частицы переносят массу и свойства жидкости, а сетка используется для вычисления давления и вязкости. Это позволяет моделировать брызги, капли и пену.
- Метод APIC (Affine Particle-In-Cell): улучшенная версия FLIP, обеспечивающая меньшую диссипацию энергии и лучшее сохранение деталей вихрей.
- Метод вокселей (Voxel-based): для симуляции газов (дыма, огня) используется только сеточное представление без частиц, что эффективно для больших объёмов.
Mantaflow поддерживает многопоточные вычисления на CPU (через OpenMP) и ускорение на GPU (через CUDA и OpenCL). Однако в версии, интегрированной в Blender, поддержка GPU ограничена и требует отдельной компиляции.
Применение
В компьютерной графике
Основное применение Mantaflow — создание анимационных эффектов в кино, рекламе и видеоиграх. Благодаря интеграции в Blender, фреймворк доступен широкому кругу пользователей, включая независимых художников и небольшие студии. Типичные сценарии использования:
- Симуляция жидкостей: вода в реках, океанах, бассейнах; разливы, фонтаны, водопады; взаимодействие с твёрдыми телами (лодки, камни).
- Симуляция газов: дым, туман, облака, пар, взрывы, пыль.
- Симуляция огня: пламя, искры, горение (с использованием дополнительных модулей, например, для моделирования химических реакций).
Mantaflow позволяет задавать начальные условия (источники жидкости или газа), граничные условия (стенки, препятствия), а также управлять вязкостью, плотностью, температурой и силами. Результаты симуляции могут быть экспортированы в виде последовательности сеток (mesh) или объёмных данных (voxel grids) для последующего рендеринга.
В научных исследованиях
Mantaflow используется в академической среде для изучения гидродинамики, аэродинамики и процессов смешивания. Благодаря открытому коду, исследователи могут модифицировать решатели, добавлять новые физические модели (например, учёт поверхностного натяжения, капиллярных сил или многофазных потоков) и проводить численные эксперименты. Примеры научных работ, использующих Mantaflow:
- Моделирование распространения загрязняющих веществ в атмосфере.
- Расчёт обтекания автомобилей или летательных аппаратов (в упрощённой постановке).
- Симуляция поведения жидкостей в микрогравитации (для космических исследований).
Интеграция в Blender
В Blender Mantaflow доступен через два основных типа объектов-симуляторов:
- Жидкость (Fluid): используется для симуляции воды и других жидкостей. Поддерживаются типы источников: «Flow» (источник), «Effector» (препятствие), «Domain» (область симуляции). Настройки включают разрешение сетки (от 32 до 1024 ячеек), вязкость, поверхностное натяжение, режим FLIP или APIC.
- Газ (Gas): для дыма, огня и тумана. Поддерживаются типы: «Flow» (источник), «Effector» (препятствие), «Domain» (область). Настройки включают температуру, плотность, скорость горения, а также параметры турбулентности (шум).
С 2021 года в Blender добавлена поддержка «жидких» эффектов с использованием метода APIC, что улучшило качество симуляции тонких плёнок и капель. Для визуализации результатов используется встроенный движок рендеринга Cycles или Eevee, а также сторонние рендеры (например, LuxCoreRender).
Критика и ограничения
Несмотря на широкое распространение, Mantaflow имеет ряд ограничений:
- Производительность: симуляции с высоким разрешением (свыше 256 ячеек по одному измерению) требуют значительных вычислительных ресурсов (оперативной памяти и времени CPU). Для реалистичных сцен с большими объёмами воды (например, океанские волны) часто требуется использование кластеров или облачных вычислений.
- Отсутствие встроенной поддержки GPU: хотя оригинальный Mantaflow поддерживает CUDA, версия, встроенная в Blender, не имеет официальной поддержки GPU-ускорения. Это ограничивает скорость симуляции на массовых конфигурациях.
- Сложность настройки: для получения качественного результата требуется тонкая настройка множества параметров (разрешение, вязкость, шаг по времени, тип решателя). Новичкам может быть сложно добиться реалистичного поведения.
- Ограниченная поддержка многофазных потоков: Mantaflow не поддерживает симуляцию смесей жидкостей с разной плотностью (например, масло и вода) без дополнительных модификаций кода.
Интересные факты
- Название «Mantaflow» происходит от слов «manta» (скат) и «flow» (поток), что символизирует плавное и гибкое течение.
- Фреймворк используется в ряде коммерческих продуктов, включая некоторые версии Autodesk Maya и Houdini (через плагины), но основная аудитория — пользователи Blender.
- В 2020 году Mantaflow был удостоен награды «Best Open Source Software» на конференции SIGGRAPH.
Источники
- Thuerey, N., et al. «Mantaflow: A Framework for Fluid Simulation.» Technical University of Munich, 2013.
- Документация Blender Foundation: «Fluid Simulation with Mantaflow.» Blender Manual, 2020.
- Статья «Mantaflow Integration in Blender 2.83» на сайте Blender.org, 2020.
- Научные публикации группы N. Thuerey в области симуляции жидкостей (2011–2021).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →