Открыть сервис

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 →