ДонНТУ   Портал магистров

Опыт работы с пакетом имитационного моделирования RealFlow

Введение

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

Панель сил в RealFlow (Daemons Panel)

“Демон” – это имя, используемое применительно к внешним силам, эффектам или разрушителям, оказывающим непосредственное воздействием на поведение жидкости. Степень воздействия демонов на частицы зависит от того, какой результат желает получить пользователь.

Притяжение (Attractor)

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

Сила Кориолиса (Coriolis)

Это вектор вращения для имитации ускорения Кориолиса. Вектор представляет вращение условной планеты, в пределах которой происходит имитация. Вектор всегда соотносится с глобальной осью RealFlow (точно также как вектор вращения земли соотносится с “местными” осями нашего собственного положения). Демон Кориолиса полезно использовать для имитации хорошо известного вращающегося движения жидкостей, когда они стекают в сливное отверстие. В то же время в реальной жизни этот эффект не имеет ничего общего с силой Кориолиса; по мере того как количество проходящей через трубу жидкости уменьшается, остаточная сила инерции жидкости вращает ее с возрастающей скоростью.

Сила сопротивления воздуха (Drag Force)

Этот демон имитирует внешние силы сопротивления воздуха, которые снижают скорость быстрых частиц. Ее рекомендуется использовать для создания взрывных эффектов (фейерверков). При отсутствии этого демона (К = 0.0), взрыв распространялся бы бесконечно. При высоких значениях (от 10 до 100) скорость движения частиц быстро уменьшается даже при воздействии на них сильных внешних сил. Осторожно оперируйте с высокими значениями сопротивления, поскольку они могут отрицательно сказаться на механизме действия частиц – вызвать столкновения объектов.

Сила притяжения (Gravity)

Этот демон вырабатывает постоянную силу, действующую в выбранном направлении. Эта сила эквивалентна силе притяжения земли, но может использоваться в любом направлении. Сила земного притяжения имеет значение 9,8. По умолчанию она направления вертикально вниз. Возможно, также приложить силу притяжения к любому объекту в сцене. Тогда вектор силы притяжения будет определяться ориентацией объекта. Рекомендуем увеличивать силу тяжести до нереальных значений (до 20) если вы хотите, чтобы частицы быстрее реагировали на внезапные движения. Кроме того, эта опция полезна для сжатия объема жидкости при наполнении ею какого нибудь объекта.

Слоистый вихрь (Layered Vortex)

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

Лимб (Limbo)

Этот демон представлен парой параллельных плоскостей. Частицы между и рядом с плоскостями притягиваются к ним. Изменив знак (+,-) можно изменить силу притяжения на силу отталкивания. Между плоскостями силы имеют нулевое значение, поэтому демон не воздействуют на частицы, когда они пересекают этот промежуток.

Волшебная сила (Magic)

Этот демон можно считать морфингом частиц. Частицы могут “волшебным” образом принимать форму полигональных объектов в зависимости от значения параметра Magic. При значении параметра = 0.0 частицы находятся там, где они помещаются при динамическом имитировании. При введении коэффициента Волшебника (Magic) на положение частиц влияет внешняя сила, исходящая с поверхности целевого объекта. Использование демона Волшебник (Magic) и демона сопротивления воздуха (Drag Force) можно добиться ускоренного схождения частиц вокруг объекта и избежать эффекта их вращения вокруг объекта.

Неоднородное поле (Noise Field)

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

Поле объекта (Object Field)

Частицы притягиваются к вершинам выбранного объекта. Этот демон аналогичен демону Волшебная сила (Magic), но при этом можно определить предельное расстояние для действия эффекта притяжения.

Сплайн (Spline)

Это особый демон, в котором вы можете использовать многие виды сил по трехмерному расположению сплайна. Этот демон полезен для создания эффектов торнадо или направления частиц вдоль пути и т.д. Сплайн выстраивается из ряда контрольных точек, которые определяют его форму, причем каждая контрольная точка имеет свой радиус, силу, вихревой и другие параметры. В меню параметров этого демона имеется специальная кнопка – SUB OBJECT (Подобъект), используя которую можно задавать индивидуальные значения каждой контрольной точки сплайна.

Пульсатор (Tractor)

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

Вихрь (Vortex)

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

Ветер (Wind)

Это демон имитирует над частицами типичную силу ветра.

Цветовая плоскость (Color plane)

Это первый демон такого рода и само его название объясняет его воздействие на частицы.

Нагревание (Heater)

Название демона объясняет его воздействие на частицы.

Сценарий создания сцены в RealFlow

В этой работе мы рассмотрим взаимодействие объектов между собой. Я буду использовать RealFlow 5 и 3ds Max 2010. В качестве примера мы создадим анимацию падающей полки в ванной комнате. Для этого нам понадобится создать сцену визуализирующую ванную комнату в 3ds max.

Скриншот 1

Скриншот 2

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

Теперь идём на панель инструментов, выбираем RealFlow, жмём SD File Export Settings, выбираем все объекты и сохраняем .SD файл в удобную нам папку.

Теперь закрываем 3ds Max и запускаем RealFlow, создаём новый проект и импортируем нашу SD сцену (для удобства мы перенесем .SD файл в папку objects нашего проекта). Нам нужно настроить параметры самого проекта, для этого идём в File>Preferences. Так как мы работаем в 3ds Max, соответственно устанавливаем 3ds max в axis setup, max. frames ставим 280. Идём на закладку backup и ставим нужное количество файлов на случай сбоя в RealFlow.

Затем устанавливаем scale (масштаб сцены) = 0.1, рекомендуемое значение для пользователей 3ds max; жмём на стрелку рядом с кнопкой simulate, заходим в options и меняем FPS равное 25 и выбираем количество ядер (threads) процессора которые будут использоватся при просчете сцены.

Параметры сцены почти настроены, осталось установить нужное количество кадров для симуляции и для просмотра при нажатии play.

Теперь перейдём непосредственно к настройке самих объектов. Мы находимся на Земле, поэтому добавляем daemon gravity со значением силы 9.8.

Затем активируем Rigid Body Dynamics у всех объектов и свойство Dyn motion, которое заставит их не просто реагировать с другими объектами, но и двигаться под действием гравитации (daemon gravity).

Сцена готова для симуляции. По желанию сцену из RealFlow можно загрузить обратно в 3ds Max, для этого необходимо зайти в export>export central(F12), нажать export none и после выбрать animation(.SD). Нажимаем alt+d, чтобы отключить вьюпорт и вследствие чего ускорить просчёт. После симуляции нажимаем save project(ctrl+s), закрываем RealFlow и запускаем 3ds Max, для того чтобы стандартными возможностями загрузить нашу анимацию (animation.SD).

Кратко о параметрах rigid body:


Исследование поведения твердых и мягких объектов

Испытания я начал проводить над примитивными объектами (шариками), так как с катящимися предметами работать нагляднее.

Скриншот 3

Твердые тела (Rigid body)


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

Скриншот 4

Активировать (Rigid Body) у объектов можно следующим образом:

Мягкие тела (Soft body)


Второй опыт я провел над мягкими объектами, установив в опциях (soft body). В отличие от твердых шаров, у мягких шаров появились опции, такие как эластичность и пластичность, теперь эти объекты могут довольно сильно подпрыгивать, отталкиватся и деформироваться от ударов. Мы видим, что мягкие килограмовые шарики довольно хорошо отскакивают и взаимодействуют между собой.

Скриншот 5

Активировать (Soft Body) у объектов можно следующим образом:

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

Скриншот 6

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

Скриншот 7

Ветер (Wind)

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

Скриншот 8

Притяжение (Attractor)

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

Скриншот 9

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

Скриншот 10

На примере сцены с тремя мелками мы видим, что объекты сталкиваются с препятствиями во время падения под действием силы притяжения.

Скриншот 11

Выводы

Такая программа как RealFlow, использует новейшие алгоритмы имитации жидкотекучих сред посредством уникальной системы частиц. Эти алгоритмы основаны на реальных физических уравнениях динамики жидкотекучих сред. Такой подход позволяет достичь очень высокой степени реализма поведения многих типов жидкостей и не только. Программа RealFlow способна имитировать несколько различных видов жидкостей, поведение которых зависит от таких параметров как вязкость, давление, трение и т.д. Все это взаимодействует с различными объектами, представленными в виде треугольных сеток. С помощью RealFlow вы можете имитировать такие эффекты, как расширение газов в трубе или их движение через систему клапанов, наполнение жидкостью таких объектов, как стаканы, бутылки и другие емкости, а также такие вязкие жидкости, как мед, желе, и даже имитировать поведение песка (рассматриваемого как жидкость). Математическая мощь RealFlow сразу придаст результатам визуальный реализм; фактически с помощью RealFlow можно создать такие явления, как скручивание, воздействие ударных волн, и т.д. Основное отличие RealFlow от других коммерческих систем заключается в том, что вся система частиц рассматривается как непрерывная среда, в которой частицы жидкотекучих сред неся в себе некоторую информацию способны передавать её своим соседним частицам, изменяя ход имитации. Эта и другие уникальные особенности, которые можно перечислять очень долго позволяют точно имитировать текучее вещество, эффективно воспроизводя динамику такого вещества на обычном настольном компьютере. После того, когда все подготовлено, RealFlow вычисляет расположение частиц и объектов в каждый момент времени, затем преобразовывает результаты в выходные файлы различных типов для следующих пакетов 3ds max, Softimage|3D, XSI, Maya, Cinema 4D. RealFlow обеспечивает обмен данными с другими 3D пакетами посредством сцен, записанных в формате SD благодаря плагинам поставляемых вместе с RealFlow.

Перечень ссылок