Симуляция воды. Обзор симулятора жидкости RealFlow: невероятные фокусы с водой

Симуляция жидкости (Fluid Simulation). Симуляция воды


невероятные фокусы с водой / Программное обеспечение

Вспомните привычные кадры рекламы: струи минеральной воды или популярного пенного напитка — прозрачная красивая жидкость, играя светом, растекается по бокалу и собирается в удивительно правильные формы, демонстрируя самым лучшим образом свойства рекламируемого товара. А сколько раз перед доверчивым зрителем на экране демонстрировался аппетитно разламывающийся батончик или заливаемый шоколадом рожок мороженого! Многие из зрителей полагают, что такая красивая картинка — это заслуга одного лишь оператора и постановщика съемок.

Но на самом деле столь эффектная съемка может иметь совершенно иное объяснение — компьютерная 3D-графика. С помощью современных компьютерных технологий можно творить удивительные вещи: делать предметы съемки красивее, чем они есть на самом деле, менять их форму, делать их текучими и заставлять двигаться в нужном направлении.

Трехмерная графика — это целый мир, где есть место всему: и программированию, и математическому анализу, и творческому началу. Сегодня мы хотим поговорить только об одном инструменте для создания 3D-графики — частицах. На его примере вы увидите, насколько универсален этот инструмент, и узнаете, как создаются спецэффекты в современных фильмах и как талантливые 3D-аниматоры обманывают зрителя рекламы.

⇡#Анимированная жидкость: переход на новое измерение

Все вокруг нас состоит из частиц — все вещи, любой материал, даже Вселенная. Эта простая истина кажется очевидной и удивительной, простой и в тоже время трудно принимаемой. В основе всего лежит маленькое нечто.

Город состоит из домов, дома состоят из кирпичей, кирпичи состоят из песчинок, песчинки — из атомов и так далее. Для компьютерного моделирования это знание имеет очень большое значение. Используя всего лишь симулятор поведения частиц, мы можем воссоздать любую физическую модель и любой видимый процесс. Звучит сложно и не очень понятно, поэтому попробуем объяснить это на примере компьютерной анимации, где частицы могут решать любые задачи.

На заре анимации перед художниками-мультипликаторами стояла труднейшая задача — покадрово отобразить сюжет фильма. Создать на бумаге узнаваемый образ — это уже само по себе сложная работа, но угадать, как этот образ должен видоизменяться со временем, как он должен выглядеть в каждом новом кадре — еще сложнее.

Художникам-мультипликаторам Оливеру Джонстону (Oliver Martin Johnston) и Томасу Фрэнку (Frank Thomas) понадобились годы, чтобы хоть как-то упорядочить алгоритмы создания анимации. В их знаменитой книге Disney Animation, The Illusion of Life (1981 год) эти два человека постарались сформулировать основные постулаты для аниматоров.

Фрэнк Томас Олли Джонсон

Интересно, что подход к созданию рисованных мультфильмов у Оливера и Томаса был точно такой же, какой сегодня используется во всех программах для создания анимации. Рисуя какую-нибудь сценку, авторы создавали несколько характерных поз персонажа, а затем отрисовывали промежуточные кадры, заполняя временные «пробелы». Ну чем не метод анимирования при помощи ключевых кадров!

Всего Оливер и Томас изложили двенадцать правил создания анимации, которые остаются актуальными несмотря на то, что средства для ее создания теперь совсем иные.

Но даже используя колоссальный опыт аниматоров «Диснея», очень трудно передать на экране движения некоторых вещей. Вот примеры таких объектов: струящийся дым, поток воды, брызги жидкости от удара, изображение разлетающихся осколков разбитого стекла и так далее. Пока классическая 2D-анимация держала свои позиции, все эти сцены можно было делать лишь приблизительно, полагаясь на то, что часть недостающих деталей зритель сам домыслит.

Однако с приходом компьютерной графики ситуация изменилась. Перед художниками появилась новая, более сложная задача: отобразить реалистичные движения предметов в кадре. Когда мы имеем дело с движением персонажей или неодушевленных предметов (автомобиль, падающий мяч, парящая в небе чайка и так далее), движение очень простое и потому предсказуемое, его легко нарисовать или смоделировать. Но как можно предугадать, скажем, какие брызги возникнут от опрокинутой на туфлю чашки молока, какой они будут формы и куда полетят? И тут мы подошли к самой сути проблемы — моделированию физического процесса при помощи частиц.

Представьте себе ситуацию, когда стакан, наполненный водой, переворачивается. Очевидно, что жидкость, которая находится внутри, вытечет и постарается занять максимальную площадь поверхности.

А теперь представьте себе аналогичную ситуацию, только вместо жидкости в стакане находятся крохотные стальные шарики. Перевернув такой стакан, мы получим очень схожую картину — массив шариков «растечется» по поверхности, приблизительно повторяя контуры жидкости из первого примера. Чем меньше размер у шариков и чем больше их число, тем более похожим становится поведение рассыпанной массы. Для компьютерной модели подобной аналогии вполне достаточно, чтобы смоделировать взаимодействие жидкости с окружающими объектами. Именно такой подход и был выбран для создания программы RealFlow.

Когда в 1997 году Джеймс Кэмерон снял фильм «Титаник», использованные декорации и спецэффекты обошлись создателям в рекордную сумму. Узнав стоимость съемок (а они и вправду превышали стоимость самого Титаника), Кэмерон воскликнул: «Лучше бы мы его заново построили!» На то время использование компьютерной графики в таких масштабах было действительно дорогостоящим удовольствием. И хотя в 1997 году не существовало хорошего симулятора жидкостей, в этом фильме студия Digital Domain предприняла попытку обмануть зрителя компьютерным дымом и водой.

Примерно в это же время двое студентов из Мадрида сделали первую попытку смоделировать всплеск жидкости с помощью компьютера. На просторах Интернета сохранились уникальные кадры первой симуляции, в которой использовалась технология RealFlow.

⇡#Realflow: как все начиналось

Изначально компания Next Limit состояла всего из двух человек — Виктора Гонсалеса и Игнасио Варгаса.

Штат Next Limit довольно долго не расширялся, а сами сотрудники ютились в небольшом арендованном офисе с парой компьютеров. По словам основателей Next Limit, наибольшей трудностью для начинающих бизнесменов было заняться продвижением своей идеи практически без первоначального капитала. Когда компания только-только была зарегистрирована, интуиция подсказывала парням, что их ждет большой успех, эта мысль давала им стимул и вдохновляла. Но одно дело интуиция, совсем другое — реалии жизни. Поэтому первые годы разработчики особенно старательно трудились над первой версией симулятора жидкости RealFlow, которая должна была развеять все сомнения и привлечь клиентов. В конечном итоге энтузиазм и упорство студентов победили. Как только RealFlow был «допилен», первые лицензии продались очень быстро (что дало возможность программистам уже спокойно развивать свой перспективный проект), а новость о появлении нового симулятора жидкостей на рынке программного ПО для визуальных эффектов вызвала огромный интерес к этому продукту.

Виктор и Игнасио очень точно угадали нишу для своей программы. Предложенный ими способ симуляции поведения жидкостей решал огромное количество задач и проблем компьютерной 3D-графики: упростился просчет динамики текучих поверхностей, стало легче настраивать материал, появился простор для фантазии художников и дизайнеров.

К тому же движок основывался на классических законах физики, благодаря чему с помощью RealFlow можно было получить высокую точность просчета процесса и потрясающе реалистичную визуализацию.

Создание трехмерной поверхности воды не было проблемой даже тех слабых рабочих станций, которые имелись в распоряжении первых компьютерных аниматоров в конце 90-х. Однако метод, который использовался для имитации водной глади до появления RealFlow, основывался лишь на деформации поверхности и не учитывал мелких деталей — брызг, пены, пузырьков и так далее. Именно поэтому многие известные картины того времени (конец 1990-х — начало 2000-х) использовали послойный метод просчета жидкостей — отдельно визуализировались волны и отдельно просчитывалась гребневая шапка с помощью частиц, после чего на этапе видеомонтажа кадры накладывались, образуя полную картину. Это все было неудобно, да и компьютерная подделка была очень заметна.

Новый RealFlow появился очень своевременно — мощности компьютеров хватало для решения сложных задач, а конкуренции у симулятора жидкостей никакой не было. Чтобы закрепить успех, испанские разработчики очень много внимания уделили оптимизации использования ресурсов, благодаря чему RealFlow с самого начала его развития можно было запускать не только на топовых конфигурациях ПК.

Художники-аниматоры стали постепенно переходить на новый инструмент, отказываясь от прежних методов имитации жидкости, включая рельефное текстурирование водной глади или моделирование волн путем деформации поверхности несложным алгоритмом шума. Легко вообразить, как согнется лист бумаги при перелистывании страницы в книге, можно себе представить, как будет выглядеть нахмуренное лицо персонажа. Но представить мысленно геометрию морского прибоя крайне сложно и еще сложнее оживить эту картину, изменяя геометрию «воды» в каждом кадре. Стало очевидно, что такую задачу нужно автоматизировать.

RealFlow позволяет сгенерировать «жидкую» трехмерную поверхность, образованную частицами. Метод, на котором основан движок симулятора жидкостей, использует модель SPH (Smoothed Particle Hydrodynamics) — алгоритм просчета гидродинамики сглаженных частиц. Суть его та же самая, что и в описанном выше примере стакана со стальными шариками, с той лишь разницей, что модель SPH позволяет отдельным частицам образовывать единое целое, слипаться друг с другом. Помимо SPH, в программе также используется алгоритм Hybrido, предназначенный для симуляции масштабных сцен, например поверхности океана.

На сегодняшний день RealFlow доступна для всех основных настольных платформ. «Послужной список» программы включает бессчетное число рекламных роликов и более трех десятков художественных фильмов, выпущенных с 1998 года. Симулятором жидкости пользовались при создании фильмов «Аватар», «Властелин колец: Возвращение короля», «Код да Винчи», «Хищники», мультфильмов «Гадкий Я», «В гости к Робинсонам», «Ледниковый период» и многих других.

⇡#Начало работы: что к чему и где подводные камни

Принцип работы с RealFlow можно описать в двух словах. После того как пользователь укажет положение источников частиц, условия их рождения, а также определит внешние воздействия на эти частицы, запускается процесс симуляции, после чего RealFlow выполнит конечный просчет трехмерной модели жидкости.

C помощью дополнительных модулей RealFlow поддерживает интеграцию со всеми основными 3D-редакторами: Maya, 3ds Max, Houdini, LightWave, Softimage. Кроме того, весной 2015 года компания заявила о создании нового дополнения RFCORE для популярного 3D-редактора Cinema 4D. С помощью RFCORE можно использовать движок симулятора жидкостей RealFlow непосредственно внутри Cinema 4D. И хотя на данном этапе RFCORE не дублирует все возможности RealFlow, модуль RFCORE позволит работать в уже привычном интерфейсе (в отличие от прочих плагинов-коннекторов для 3D-редакторов, которые лишь выполняют импорт данных в 3D-редактор).

RealFlow поддерживает еще один продукт компании Next Limit — визуализатор Maxwell Render, поэтому визуализацию можно проводить прямо в самой программе. В отличие от прочих систем визуализации, Maxwell Render ориентирован на просчет физической модели сцены. Это усложняет просчет, но упрощает настройку рендеринга.

Перед тем как вы начнете работать с RealFlow, стоит обратить внимание на нюанс при сохранении результата. В компьютерной графике данные, используемые в проекте, часто хранятся не только в едином файле программы, и RealFlow в этом смысле не является исключением. Когда вы сохраняете свою работу в RealFlow, в том месте на диске, где вы сохраняете файл, программа автоматически создает целую коллекцию каталогов. Каждый из этих каталогов содержит свой тип данных, используемый в RealFlow, — информацию об объектах, обработанные данные предварительного просмотра, сведения о частицах и прочее. Все эти данные являются динамическими и используются RealFlow как кеш проекта.

Еще один важный момент, который следует иметь в виду при работе с RealFlow, — размерность. Динамика жидкостей и текучих тел во многом зависит от размеров исходных тел. Например, жидкость, вытекающая из бочки, смотрится иначе, чем водопад.

По умолчанию в RealFlow используется масштаб виртуального пространства, при котором одна клеточка схематической сетки приравнивается к одному метру. Если вы смоделируете в программе эффект переливания жидкости из бутылки в стакан, но забудете про размеры, RealFlow может симулировать сцену, где размер стакана измеряется метрами. Подобная ситуация сама по себе абсурдна, и результат будет далек от реалистичного. Для того чтобы размерность импортируемых в программу объектов совпадала с желаемой, можно использовать коррекцию масштаба. В настройках RealFlow можно выбирать автоматический множитель для изменения масштаба импортируемых объектов. Кроме того, можно использовать аналогичные множители для коррекции воздействия процедур на частицы или на объекты. Настройки для управления масштабом сцены вызываются с помощью кнопки Scale options возле элементов управления анимацией.

Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

3dnews.ru

Симуляция жидкости (Fluid Simulation)

Оригинал http://wiki.blender.org/index.php/Doc:Manual/Physics/Fluids Перевод Sever

Сразу хочу предупредить, что то, что вы увидете на примерах ниже, вам не удастся повторить в таком же качестве, далее будет объяснено почему. Опять же, перевод грубоват.

Object (F7) → Physics Buttons → Fluid

Некоторые объекты могут быть отмечены, для участия симуляции жидкости, как жидкость или как препятствие. Ограничительный прямоугольник объекта будет использоваться, как форма коробки в которой будет происходить симуляция жидкости (так называемая область симуляции). Глобальные параметры симуляции (типа вязкости и тяжести) могут быть установлены для этой области объекта.

Используя кнопку запекания симуляция запекается (сохраняется) на жесткий диск.

Пример разрушенной платины

Процесс создания жидкости

1. Смоделировать сцену (Объекты, материалы, свет, камера).2. Определить часть сцены, где будет протекать жидкость (область).3. Определить функции различных объектов, поскольку они касаются жидкости (входное. отверстие, выход, преграда и т. д.).4. Создать жидкий источник, и определить его материал, вязкость, и установить скорость.5. Запечь предварительную симуляцию.6. Пересмотреть по мере необходимости, сохраняя изменения.7. Запечь заключительную симуляцию.

http://www.pkblender.it — отличный сайт с примерами жидкой симуляции.http://blender3d.org.ua — здесь можно найти уроки по процессу создания симуляции жидкости.

На самом деле все очень просто. Главное задать каждому объекту правильное значение. Создаем куб, определяем его как Область; Внутрь куба вставляем сферу или любой другой объект, определяем ее как Жидкость; Дополнительно вставляем так же внутрь куба необходимый объект и определяем его как Препятствие, Втекание, Вытекание, Контроль. Запекаем все это.

Опции

а)Основные (и часто необходимые) опции; б)Менее необходимые опции

Domane (Область)/Fluid (Жидкость)/Obstacle (Препятствие)/Inflou (Втекание)/ Outflou (Вытекание)Выбор одной из этих кнопок определяет, как активный объект используется в течении симуляции. У каждой кнопки свои настройки.

Domane (Область)

Ограничивающий прямоугольник объекта служит границей моделирования. Все жидкие объекты должны находиться в области. Жидкие объекты вне области не будут выпекаться. Ни одна из капель не может перемещаться вне области; это, как будто жидкость удерживается невидимыми силами области в 3D-пространстве. В сцене может быть только одна единственная область симуляции жидкости. Длины сторон ограничивающего прямоугольника могут быть отличными.

Вид областиФорма объекта не имеет значения, потому, что это всегда будет фиксированная кубическая область, поэтому обычно не имеет смысла использовать что-то другое, чем коробка. Если необходимы препятствия или другие границы чем коробка, чтобы они сталкивались с потоком жидкости, надо вставить дополнительные объекты-препятствия в границы области.

Std, Ad, Bn, ParНажатие одной из этих кнопок отобразит дополнительные параметры (Standart (Стандартные), Advanced (Продвинутые), Boundary (Границы), Particle (Частицы)).

Std

Resolution (Разрешение по X,Y,Z осям)Степень детализации, с которой будет выполняться фактическая симуляция жидкости. Это один из самых важных регуляторов жидкости, поскольку он определяет качество детализации жидкости. Затрагивает память компьютера.

а) Кружка 10см, резолюция 70; б) Кружка 10см, резолюция 200

Это так же и самый нехороший параметр из-за которого у вас и не получится сделать очень качественной симуляции жидкости. А все из-за затрагиваемой памяти компьютера. При увеличении резолюции, превышающей память компьютера, Blender просто напросто зависнет. Максимальное значение резолюции 1024, что потребует 90Гб оперативной памяти. У XP максимальное количество памяти 3Гб — это приблизительно равно резолюции 220. У Vista 64bit максимальное количество памяти 16Гб — это приблизительно 550 резолюции. То есть получается, что даже имея на сегодняшний день самый мощный компьютер, у вас даже на половину не получится симулировать качество жидкости, так как выше 16Гб на одном компьютере вряд ли «прыгнешь». Для отличной симуляции жидкости вам потребуется несколько компьютеров или лучше целая станция. И не забывайте о невероятно длительном времени просчета симуляции и о других параметрах настройки, при повышении которых, также требуется память, которой в большинстве случаев, как я предполагаю не так уж и много.

Необходимо убедиться, что установленная резолюция соответствует размеру реального мира области. Если область будет не кубической, то резолюция будет взята для самой длинной стороны. Резолюции по другим сторонам будут уменьшены, согласно их длинам (не кубическая область, будет нуждаться в меньшем количестве памяти, чем кубическая, хотя буте являться тем же самым).

Preview-Res (Предварительная резолюция)Это резолюция, в которой будет отображена поверхность меша при предварительном создании (просмотре в 3D-окне). Это не влияет на законченную симуляцию.

Start Time (Начальное время)Время начала симуляции в секундах. Область деформации и поток жидкости до начала не сохранены.

End Time (Завршающее время)ремя окончания симуляции в секундах. Если частота кадров в секунду — 25 и время окончания — 4 сек., то надо (если начальное время — 0) закончить симуляция в 100 кадра. Запекание всегда признает конечный кадр который устанавливают во вкладке Anim в кнопках рендера. Начальное и завершающее время не имеют никакого отношения к тому, сколько кадров запеклось, но вместо этого базируются на физической силе и вязкости жидкости. Если установить время начала — 3, а время конца — 4, то симулируется 1 сек. жидкого движения. Эта одна секунда движения жидкости будет распространена как-бы в ширину многих кадров, установленных во вкладке Anim, вплоть до последнего кадра. Симуляция жидкости игнорирует Sta: (начальный кадр) во вкладке Anim и всегда будет запекаться от первого кадра.

Старт симуляции не из первого кадраНадо ключевой объект жидкости в нашей области дезактивировать (отключить) до кадра в котором должна начаться симуляция (Смотреть пункт «Анимация движения жидкостных состояний»)

Если есть установленные параметры 250 кадров в 25 fps (кадров в сек.)Жидкость будет выглядеть так, как будто она уже течет в течении 3 сек. с начала симуляции, но будет медленно двигаться, начиная с 1 секунды симуляция жидкости проигрывается в течении 10 сек. видео. Если изменить время окончания на 13, чтобы соответствовать 250 кадрам в 25 fps, то симуляция будет в реальном времени, так как установится 10 сек. движения жидкости в симуляции более чем 10 сек. анимации. Наличие этих средств управления позволяют «контролировать скорость» симуляции.

Disp. -Qual (Качество отображения)GuidDisplayMode – как будет отображаться (как качественно) запекание симуляции в 3D-окне (первое выпадающее меню).RenderDisplayMode – как будет отображаться (как качественно) запекание симуляции в окне рендера (второе выпадающее меню).

Для этих двух выпадающи меню, имеются 3 параметра:

• Geometry - Оригинальная геометрия (следует выставлять в первом выпадающем меню, когда необходимо изменить Область уже после запекания).• Preview – Предпросмотр (следует выставлять в первом выпадающем меню, чтобы запекание просчитывалось быстрее (немного хуже качество, чем при финальном рендере) и при этом симуляция отражалась в 3D-окне)• Final — Финал (следует выставлять во втором выпадающем меню, для финального редера сцены, для максимального качества симуляции)

Path (Путь)Место хранения (на жестком диске) запеченной области.

После запекания, в месте хранения запеченной области (кэша) появится 3 файла. Два bobj.gz (один по заключительному качеству, другой по качеству предварительного просмотра), плюс третий — bvel.gz (по заключительному качеству). При запекании, если надо сохранить уже запеченную область, надо в Path поменять название, иначе новое запекание перепишет старое.

Можно использовать запеченные файлы с другими объектами, просто указывая к ним путь в Path.

Выбор запеченной областиПосле того, как Область была запечена, это изменит жидкий меш. Чтобы повторно выбрать область так, чтобы запечь ее снова после того, как внесли в нее изменения, надо выбрать нужный кадр и выбрать ПКМ жидкий меш. Тогда можно снова нажать Bake, чтобы повторно вычислить поток жидкости в выбранной области.

Ad

Gravity X,Y,ZСила направленности жидкости (в какую сторону течь) по X,Y,Z плоскостям. Z должно быть отрицательным, что быжидкость падала в низ. X,Y,Z не должны равняться нулю, иначе жидкость не будет течь.

Viscosity (Вязкость)Плотность жидкости. Можно выбрать предустановленные значения (Honey (Мед), Oil (Масло), Water (Вода)). Либо задать настройки вручную (Manual). Нормальная вязкость в реальном мире — динамическая вязкость; Blender использует кинематическую вязкость, (которая является динамической вязкостью, разделенной на плотность, единица [m^2/s])

Ручные настройки определяются числом плавающей точки и образцом. Они, плавающая точка, и область входа образца, упрощают вход в очень маленькое и большое количество. Вязкость воды при комнатной температуре 1.002cP; таким образом, вход был бы 1.002 времени 10 к минус 6 (10^-6). Горячее стекло и плавящееся железо — жидкости, но очень плотные; мы должны ввести что-то типа 1*10^0 как вязкость (указанное значение 1*10^6 cP). Симулятор не является подходящим для не жидкостей, материалов, которые «не текут». Настройки вязкости с очень большими значениями не будут приводить к твердому поведению тела, но могли бы привести к нестабильности.

Изменение вязкостиЗначения по умолчанию в Blender, для выбранных типов жидкости считаются типичными и «выглядят правильно». Однако, фактическая вязкость небольшого количества жидкостей, как шоколадный сироп и мед (содержащих сахар) зависят от температуры и концентрации. Вязкость масла измеряется рейтингом SAE. Стекло комнатной температуры в основе твердое, но стекло в 1500 градусов подобно воде.

Таблица преобразований единиц вязкости Blener
Жидкость Динамическая вязкость Кинематическая вязкость (Blender)
Вода (20С) 1.002 (1*10^0) 1*10^-6 (.000001)
Масло SAE 50 500 (5*10^2) 5*10^-5 (.00005)
Мед (20С) 10,000 (1*10^4) 2*10^-3 (.002)
Шоколадный сироп 30,000 (3*10^4) 3*10^-3
Кетчуп 100,000 (1*10^5)
Расплавленное стекло 1*10^15 1*10^0

Real -World sizeРазмер области объекта в реальном мире в метрах. Если необходимо создать кружку кофе, она могла бы быть 10см (0,1м), в то время как плавательный бассейн мог бы быть 10м. Размер здесь устанавливается для самой длинной стороны ограничивающего прямоугольника области.

GridlevelСколько адаптивных (грубых) уровней сетки, которые используются в течении симуляции. Значение по умолчанию 1 сделает автоматический выбор.

Compressibility (Сжимаемость)Если есть проблемы с большими, постоянными Областями жидкости с высокой разрешающей способностью, этот параметр поможет уменьшить это число, но увеличит время вычисления.

Bn

Настройка границ Области.

Boundary Type — выбор типа настроек Области:• Noslip – Прилипание жидкости к границам области.• Part — Смешивание Noslip и Free (только к не движущимся объектам).• Free – Свободное прилипание.

Surface SubdivПозволяет делать поверхности мешей в высоком разрешении непосредственно в течении симуляции (альтернатива модификатору Sub Surf). Значение 1 — нет подразделения, каждое последующее увеличение приводит к одному дальнейшему подразделению каждого объемного элемента жидкости. Большие значения сглаживания, могут привести к длительному времени вычисления из-за генерации подразделения меша.

Surface SmoothinКоличество сглаживания, которое будет применено к поверхности жидкости. 1.0 — стандартно, 0 — выключено, а большие значения увеличивают количество сглаживания.

Generate Speed VЕсли опция активна, то векторы скорости не будут экспортироваться. А по умолчанию векторы скорости сгенерированны и записаны на диске. Они могут использоваться, что бы вычислить изображение стандартного размытия движения с композитными узлами (Compositing Nodes).

Par

Tracer ParticlesЧисло сгенерированных трассирующих частиц, которые будут помещены в жидкость в начале симуляции.

Generate ParticlesУправляет количеством созданных жидких частиц (0 — выключено, 1 — нормально, >1 — больше). Что бы использовать эту опцию Surface Subdiv должно иметь значение минимум равное 2.

Пример эффекта частиц. Слева — без частиц; справа — с применением частиц и активным Subdivision.

Fluid (Жидкость)

Вся область объекта, определенная как Жидкость, находящаяся внутри ограничительного прямоугольника (Области), будет использоваться как жидкость в симуляции. Если размещается больше, чем один объект жидкости внутри области, они, в настоящее время, не должны пересекаться. Так же нормали поверхности должны находиться снаружи.

Volume Init Type:• Volume init (Объем) — Объем Init будет определять внутреннюю часть объекта как жидкость. Это работает только для закрытых объектов.• Shell init (Оболочка) — Будет определять только тонкий слой для всех граней меша как жидкость. Работает и для открытых мешей.• Both init (Оба) — Комбинирует Volume и Shell. Меш должен быть закрытым.

Пример различного объема init типов: Volume, Shell, Both. Заметьте, что Shell обычно немного больше, чем внутренний объем.

Initial velocity (Начальная скорость)Скорость жидкости (по осям) в начале симуляции. Измерчяется в м/сек.

Obstacle (Препятствие)

Объект, определенный как Препятствие, будет использоваться как препятствие в симуляции. Более одного объекта препятствия в сцене, не должны пересекаться друг с другом. Для препятствий используется существующая меш- геометрия (уже созданный меш). Для объектов с Volume init: Volume – нормали препятствия должны быть вычислены правильно (наружу), особенно при использовании скрученного препятствия. Применение Aply к модификатору Sub Surf (если он используется для Препятствия), могло бы помочь, если вдруг меш не анимируется.

Volume Init TypeТо же самое, что и во Fluid

Boundary Type (Тип ограничения)Определение липкости поверхности Препятствия, названной «Поверхностным прилипанием». Поверхностное прилипание в реальном мире зависит от жидкости, которая падает на поверхность и зернистости поверхности или трения/слипания/впитывания поверхности.

• Noslip – заставляет жидкость прилипать к препятствию (нулевая скорость). Опция для движущихся объектов.• Free (-slip) – позволяет движение по препятствию (только нулевая нормальная скорость)• Part (-slip) – смешивает Noslip и Free. 0 — Noslip, 1 – Free. Если меш Препятствие будет перемещаться, Part будет автоматически рассматриваться как Noslip.

Animated MeshАктивировать эту кнопку, если меш анимируется (например искажен арматурой, ключами формы (Shape Keys), решоткой). Активация может значительно замедлить процесс, и не требуется, если меш анимируется с перемещением или вращением IPO.

Part Slip Amount (Количество прилипших частиц)Количество смешивания между Noslip и Free, активно при Part.

Анимированные объекты и NoslipЕсли Препятствие движется, то Blender автоматически определяет его как Noslip. Если необходимо, чтобы жидкость разлеталась прочь, от перемещающегося объекта, надо поместить прозрачную плоскость в жидкость и жидкость оттолкнется от движущегося объекта.

Impact Factor (Фактор воздействия)Количество корректирования жидкого объема для прибавления/потери от столкновения с перемещающимся объектом. Если объект не перемещается, этот параметр не имеет никакой силы. Однако, если жидкость сталкивается с перемещающимся объектом, отрицательное значение убирает объем прочь от Области, а положительное значение добавляет объем к Области (Увеличении или уменьшение объема жидкости).

Пример различных типов ограничений, для капель, сползающих по стене. Слева на право: Noslip 0.3, Part-slip 0.7 и Free-slip.

Inflow (Приток)

Объект, определенный как Приток, поместит жидкость в симуляцию (жидкость будет находиться в объекте Приток и может так же вытекать из него).

Volume initТоже самое, что и во Fluid.

Inflow velocityСкорость жидкости по осям X,Y,Z, которая создана внутри объекта определенного как Приток (при X,Y,Z=0 — жидкость не течет).

Local CoordsИспользовать локальные координаты для Притока. Это полезно, если объект притока перемещается или вращается, поскольку поток Притока должен следовать/копировать это движение.

Animated MeshТо же, что и в Obstacle

Outflow (Отток)

Любая жидкость, которая будет попадать в область объекта, определенного как Отток, будет удалена из этой области (это может быть полезно в комбинации с притоком, препятствовать целой области заполниться).

Volume Init и Animated MeshТоже самое, что и у предыдущих параметров.

Particle (Частицы)

Используются для отображения частиц, созданных в течении симуляции. Пока поддерживаются частицы, плавающие наряду с жидкостью.

Particle Type (Тип частиц):

Drops (Капли)Поверхностные всплески жидкости приводят к каплям, разбрасываемым по всюду, подобно свежей воде с низким Поверхностным натяжением (физика).

Floats (На поверхности)Поверхностное натяжение жидкости выше, жидкость более тяжолая, как холодная морская вода и суп. Всплески более массивны и падают на поверхность быстрее, чем Капли.

Tracer (Трассировка)Капли следуют за поверхностью воды, существуя как туман, нависший выше предыдущих жидких уровней. Используйте это, чтобы видеть, где был до этого жидкий уровень (получается, как хвост каметы).

Size Influence (Влияние размера)Частицы могут иметь различные размеры (Параметр делает частицы разными по размеру). Если значение 0 — все частицы одинакового размера.

Alpha Influence (Альфа влияние)Количество частиц, измененных альфа. 0 — альфа одинаково; 1 — крупные частицы получают малую альфа. Одинокие маленькие частицы получают большие значения альфа.

Path (Путь)Путь запекания. Обычно, должно иметь тоже самое значение, что и Область жидкого ограничения (можно через копировать/вставить)

Создание частиц

1. После создания объектов Области и Жидкости, копируем объект жидкости и оставляем его на том же месте. Определяем его как Частицы.2. Выбираем тип частиц. 3. Устанавливаем влияния размера и альфа.4. Переходим к объекту Области, в настройки Par и устанавливаем число сгенерированых частиц (не забываем про Surface Subdiv)5. Запекаем

Control (Контроль)

Вода моделируется, используя метод Решетки — Больцмана. Им управляют, используя частицы, которые определяют местные области силы и сгенерированны автоматически или от физического моделирования, или последовательности целевых форм. В то же самое время, в максимально возможной степени сохранена естественность жидкого движения (то есть из жидкости можно создать какой либо предмет).

Time (Время)Определяем начало и конец, в течении какого времени, контроль над жидким объектом является активным.

Attraction force (Сила притяжения)Сила притяжения определяет силу, которую получает эмиттер у жидкого контролируемого объекта. Положительная сила приводит к притяжению жидкости к объекту, отрицательная сила — к отклонению.

Velocity force (Скорость силы)Если объект жидкого контроля перемещается, получается в результате перемещения скорость может так же ввести силу жидкости.

Quality (Качество)Высокое качество, приводит к большему контролю частиц, для объекта жидкого контроля

Revers (Перемотка)Контроль передвижения частиц становится измененным.

Пример анимации падающей капли, отрендереной в Yafray

“Волшебный Контроль жидкости”

Анимация изменений жидкостных состояний

Новый тип кривой IPO, FluidSim, доступен для жидких объектов Области. В отличае от большинства других значений анимации в Blender, FluidSim IPO не может быть ключевым кадром, при использовании меню вызываемого клавишей I; Надо вручную устанавливать значения в окне IPO. Чтобы установить ключевой кадр, надо выбрать состояние, которое надо анимировать и в окне IPO нажать Ctrl+ЛКМ, что бы установить ключевой кадр в желаемое местоположение в окне IPO.

Следующие вещи делают симуляцию дольше вычисляемой

• Большие Области• Длинная продолжительность• Низкая вязкость• Высокие скорости

Совет

Не стоит пробовать сгенерировать сложную сцену целиком. Можно отдельно объединить несколько анимаций, наложив друг на друга, скажем, один поток AVI на другой поток в AVI, используя альфа и третий AVI — например, туман или дым.

blender3d.org.ua

Симуляция жидкости в RealFlow | 3DPAPA

Vikrant Dalal, художник по VFX, расскажет о том, как симулировать жидкость в RealFlow.

3D_papa_liquid_with_realflow_01

Что мы будем создавать в уроке

Создаем новый проект

Итак, начнем с того, что создадим файл и назначим папку для проекта. Запустим RealFlow, в окне Project management выберите папку и назовите файл, а затем нажмите на кнопку Create a new project.

3D_papa_liquid_with_realflow_02

Окно Project manager при старте RealFlow

Масштаб сцены

Теперь необходимо настроить масштаб сцены, потому что если оставить его дефолтным (который составляет 10), симуляция займет много времени. Поэтому уменьшим это значение. Перейдите к Scale Option и измените Geometry Scale на 1.

3D_papa_liquid_with_realflow_03

Настройка масштаба сцены

Опция Export central

Опция Export central используется для экспорта объектов из RealFlow. С помощью опции Export central можно настроить расположение объекта, его название и атрибуты данных для симуляции. Простым отключением или включением различных опций экспорта можно решить, что экспортировать, частицы, меш, объекты и пр.

3D_papa_liquid_with_realflow_04

Работа с окном Export Central

Эмиттеры

Для генерации частиц необходимо создать 3 эмиттера, а для этого нам понадобятся эмиттеры типа circle. Для их создания необходимо выполнить команду Show Particle Fluid Menu > Circle и создать 3 эмиттера типа circle. Используйте следующие координаты:

1. Circle 1• Position – X:0.08034 | Y: 0.0 | Z: 3.58911• Rotation – X:0.0 | Y: -102.5462 | Z:0.0• Scale – X:0.5 | Y:0.5 | Z:0.52. Circle 2• Position – X: -0.36873 | Y: -0.24856 | Z: 4.53896• Rotation – X:0.0 | Y: -90.07204 | Z:0.0• Scale – X:0.5 | Y:0.5 | Z:0.53. Circle 3• Position – X: -0.20424 | Y: 0.14289 | Z: 4.04042• Rotation – X:0.0 | Y: -81.90521 | Z:0.0• Scale – X:0.5 | Y:0.5 | Z:0.5

3D_papa_liquid_with_realflow_05

Расположение circle-эмиттеров

Изменение свойств эмиттеров

А теперь необходимо изменить параметры наших эмиттеров. Для этого мы просто изменим свойства первого эмиттера, которые затем скопируем для остальных. Для того чтобы изменить свойства эмиттера, его необходимо выбрать, перейти во вкладку Node Params, которая должна располагаться в правой части экрана. Используйте следующие настройки:

• Type — Liquid• Resolution — 20• Density — 1000• Int Pressure — 1.0• Ext Pressure — 10.0• Viscosity — 5.0• Surface Tension — 100• Interpolation — None• Compute Vorticity — No• Max Particles — 5000000Совет: Если увеличить разрешение, то детализация станет выше, но это также увеличит время симуляции.

3D_papa_liquid_with_realflow_06

Изменение свойств эмиттеров

Noise Field Daemon

Daemons – это набор физических явлений и сил, действующих на поведение жидкостей или других объектов в сцене. Noise Field Daemon используются для рандомного разброса частиц или объектов, что обычно применяется для симуляции воздушных завихрений или турбуленций.

Для создания демона выполните команду Daemon Menu > Noise Field, расположите Daemon поверх эмиттеров.Noise Field• Position – X: 0.0 | Y: 0.0 | Z: 3.9376Настройки• Affect — Force• Strength — 60.0• Scale Factor — 5.0• Bounded – No

3D_papa_liquid_with_realflow_07

Назначение Noise Field Daemon и изменение его настроек

Wind Daemon

Для создания демона выполните команду Daemon Menu > Wind. Поместите демон рядом с эмиттерами, использовав следующие координаты:

Wind• Position – X: -3.2396 | Y: 0.0 | Z: 4.43852• Rotation — X: 0.0 | Y: -130.0* | Z: 0.0*Мы собираемся анимировать вращение ветра по оси Y. Перейдите в нулевой кадр и установите для параметра Rotation значение 130. Теперь нажмите на правую кнопку мыши и выполните команду Add Key. Затем перейдите в 20 кадр и установите для параметра Rotation значение 50. В 40 кадре установите для параметра Rotation значение 130 и выполните команду Add Key. После этого нажмите на правую кнопку мыши и выберите опцию Open Curve. Здесь вы можете увидеть ключи трех кадров. Выберите ключ в 40 кадре, перейдите в настройки ключа в панели Menu и выберите Show Key Properties. Теперь выберите Loop Offset  для Post Behavior. После этих изменений нам не придется вручную анимировать ветер, он автоматически зациклится после 40 кадра. А теперь изменим настройки ветра.Настройки• Affect — Force• Strength — 4.0• Noise Strength — 25.0• Noise Scale — 2.0• Bounded – No

3D_papa_liquid_with_realflow_08

Назначение Wind Daemon и изменение его настроек

Vortex Daemon                                                  

С помощью Vortex Daemon можно создать центр вращения вокруг определенной точки в пространстве. Для создания этого демона выполните команду Daemon Menu > Vortex, затем поместите созданного демона поверх эмиттера.

• Position – X: -0.09342 | Y: 0.0 | Z: 3.91978• Rotation — X: 0.0 | Y: 77.47419 | Z: 0.0Изменим параметры демона:• Affect — Force• Rot Strength — 2.5• Central Strength — 20.0• Attenuation — Linear• Bounded — No• Vortex Type — Classic• Bound Sup — 1.0• Bound Inf — 1.0

3D_papa_liquid_with_realflow_09

Назначение Daemon и изменение его настроек

K-Volume Daemon Этот демон используется для удаления из сцены ненужных частиц. Случается так, что в финальной камере не видны какие-то частицы, или они скапливаются в определенном месте. В большинстве случаев эти частицы только увеличивают время симуляции, не неся никакой смысловой нагрузки. Поэтому такие частицы стоит удалять, K-Volume Daemon делает это очень точно. Для того чтобы создать этот демон выполните команду Daemon Menu > K Volume. Daemon необходимо расположить вблизи эмиттеров.

Настройки K-VolumeНеобходимости в ручной настройке K-Volume нет. Для его настройки перейдите в Node Params, где вы увидите 2 опции: Fit to Object и Fit to Scene. Опция Fit to Object автоматически настроит масштаб с учетом размеров каждого объекта. Опция Fit to Scene автоматически настроит масштаб с учетом размеров сцены.

3D_papa_liquid_with_realflow_10

Назначение K-Volume Daemon

Симуляция

Пришло время запускать симуляцию, раз уж все эмиттеры и демоны настроены. Для этого нажмите на кнопку Simulation.

3D_papa_liquid_with_realflow_11

Кнопка Simulation

Создание меша RealFlow

После завершения симуляции пришло время конвертации частиц в меш. Для создания меша выполните команду Mesh Menu > Particle Mesh (Standard). Вы заметите, что нода ParticleMesh_ST01 все еще находится в Nodes. Нажмите на ней правой кнопкой мыши и выберите опцию Insert all Emitters. Рядом с ParticleMesh Node появится значок +. Это значит, что все эмиттеры добавлены. Теперь выделите Particle Mesh, перейдите в Node Params и используйте следующие настройки:

Меш• Build — Yes• Type — Metaballs• Polygon Size — 0.01713• LOD Resolution — NoТеперь нажмите на значок +, выберите первый эмиттер, перейдите в Node Params и используйте  приведенные ниже настройки:

Field • Blend Factor — 95.0• Radius — 0.012• Subtractive Field — NoТеперь скопируйте все эти настройки для остальных эмиттеров. Выберите ноду Particle Mesh, затем перейдите во вкладку Menu и нажмите на кнопку Build Meshes. Осталось дождаться завершения процесса.

3D_papa_liquid_with_realflow_12

Создание меша RealFlow из частиц

Финальный результат

После того, как симуляция закончена, меш создан, необходимо его импортировать в любой 3D-редактор на выбор. Затем можно добавить в сцену пару светильников, настроить материалы и отрендерить полученный результат.

Читайте в нашей предыдущей статье о том, как создать фейерверк в Maya.

Хотите знать больше? Приходите на наши курсы моделирования, скалптинга, анимации и VFX.

Журналист: Алена

Источник

3dpapa.ru


Смотрите также