Кипящее масло в RealFlow4
Доброго всем времени суток!
Победа моего урока в конкурсе показала, насколько востребована тема работы с жидкостью. Поэтому я решил снова взяться за клавиатуру. Тем более, что меня просили более глубоко раскрыть возможности RealFlow. На этот раз я решил отойти от благодатной продуктовой тематики (в рекламном смысле) и заняться ещё более благодатной нефтяной тематикой. Реклама нефтяной продукции может принести неплохой доход. Поэтому надо быть начеку и иметь в своём арсенале «парочку» приёмов, позволяющих поразить воображение нефтяного рекламодателя. Хочу поделиться вначале некоторыми наблюдениями из собственной практики. Для себя я сделал вывод, что для того чтобы рекламодатель дал тебе работу, нужно его заинтересовать. Работа может быть с вашей точки зрения ужасной. Но если она нравится заказчику, значит, это то, что нужно. Поэтому, предлагая ему, возможные сценарии будущего ролика постарайтесь заранее узнать о его пристрастиях. Посмотрите рекламу, которую кто-то делал для него раньше. Что ему понравилось, а что - нет. Это даст вам отправную точку для разработки сценария. Это общие правила, которые должен соблюдать каждый дизайнер, если хочет зарабатывать деньги своим трудом. Но для нашего случая работы в нефтяной области, есть ещё несколько правил, соблюдая которые вы можете повысить свои шансы на получение заказа. Решив работать с рекламой нефтепродуктов, вы тем самым подтверждаете, что готовы работать с текучими объектами. Потому что реклама нефтепродуктов без показа жидкой среды, если и вероятна, то очень нежизнеспособна в глазах заказчика. И ещё - логотип компании! Покажите заказчику его логотип – маслянистый, кипящий, блестящий. Лучше на весь экран. И ваши шансы получить столь желаемый заказ заметно увеличатся. Поэтому в этом уроке я расскажу, как можно сделать появляющийся, анимированный логотип или какой-то другой предмет из жидкости (масла). А затем вскипятить его. Изменяя некоторые параметры, вы сможете поменять масло на воду и не кипятить её, а только газировать. Всё зависит только от ваших потребностей.
В уроке буду использовать 3DS MAX8 и RealFlow4.
Триал версию RF4 можно скачать с официального сайта nextlimit.com
Там же находится и плагин для 3DS MAX. Его необходимо установить. Для этого файл rfpack.dlo нужно скопировать в папку /plugins.
В качестве логотипа беру букву – R.
Я это делаю, потому что у неё есть довольно разнообразная кривая форма и внутренняя часть. После работы с такой уникальной (шутка) по своим параметрам буквой никакой логотип будет не страшен.
Итак, начнём.
Открываю 3DS MAX.
Указываю единицы измерения
и количество кадров в секунду.
Создаю TEXT. В виде буквы R.
Конвертирую в сплайн.
Перехожу на работу с подобъектами (сплайнами).
Отсоединяю внутренний сплайн.
Применяю модификатор Extrude для обоих сплайнов.
Делаю их достаточно глубокими, чтобы вода впоследствии не билась о верхний край. Конвертирую оба объекта в Poly.
Называю большой объект – logo, а который поменьше – dirka.
Для logo делаю клон – logo2. Перетаскиваю куда-нибудь. Чтоб не мешал.
Перехожу к работе с вершинами объекта logo.
Перемещаю вершины так, чтобы получился примерно куб. Особая точность не нужна.
Можно воспользоваться инструментом Make Planar.
Перехожу к работе с вершинами объекта dirka.
Скашиваю нижнюю поверхность, чтобы лучше в воду входил. Хотя, если хотите больше брызг – это не обязательно.
С моделированием закончено. Займёмся анимацией, но тоже ненадолго.
Я хочу добиться вот какого эффекта:
Жидкость в спокойном состоянии налита в квадратный сосуд.
Вдруг под воздействием какой-то внешней силы она стекается в форму логотипа (R).
При этом, конечно, брызги во все стороны (это самое главное).
Да, чуть не забыл, там, где у R дырка, жидкость выталкивается сверху (или снизу, по желанию) с непременным разбрызгиванием.
Применяю модификатор morpher к logo.
Указываю в модификаторе цель – logo2.
В 0 кадре ставлю ключ для модификатора.
В 5 кадре вес цели увеличиваю до 100. (кубик превратился в R).
И снова ставлю ключ.
Выбираю объект dirka, перемещаю чуть вниз, чтобы он пересёк нижнюю поверхность logo. Ставлю ключ по положению (в 5 кадре).
Перехожу в 0 кадр, перемещаю dirka вверх и ставлю ключ.
Включаю воспроизведение.
С 0 по 5 кадр объект logo превращается из кубика в логотип, а dirka опускается сверху вниз.
Готовый файл с анимацией - k1.max.
Открываю утилиту SceneData Saver
Если утилиты нет, значит, вы не установили плагин RealFlow для MAX. (Как его установить см. выше).
Нажимаю SD Saver Settings.
Записываю объекты logo, dirka и их анимацию в файл anima.sd
На этом работа с MAX окончена.
Можете воспользоваться готовым .sd-файлом
Открываю RF4.
Создаю новый проект - logo.
Анимация была создана в 3DS MAX, поэтому необходимо указать масштаб преобразования scale=0.1 (в верхней части интерфейса).
Импортирую .sd-файл.
Нажимаю play.
Смотрю анимацию.
Всё движется как надо.
Что теперь нужно предпринять?
- налить в logo жидкость;
- подождать пока она успокоится;
- включить симуляцию и записать движение частиц в секвенцию файлов;
- посмотреть результаты симуляции (если результат не нравится – поправить настройки и повторить симуляцию);
- удалить все объекты и эмиттеры;
- создать эмиттер Binary Loader, в который загрузить полученную ранее секвенцию частиц;
- на созданный эмиттер надеть оболочку, настроить её, запустить симуляцию и записать движение оболочки в секвенцию файлов, которую затем можно будет загрузить в MAX.
Конечно, можно было посчитать и частицы и оболочку сразу, но это намного дольше и неудобней. Правильнее разделить этот процесс на два.
Это вкратце. А теперь по порядку.
Создаю гравитацию.
Создаю эмиттер.
Перемещаю его так, чтобы появляющиеся частицы оказывались внутри объекта logo.
Увеличиваю Resolution = 4 (разрешение), для того, чтобы масло состояло из большего количества частиц, и выглядело более правдоподобно. Если компьютер слабый, Resolution можно не увеличивать (оставить 1), а если очень сильный - можно прибавить ещё. У меня при Resolution = 4, скорость вполне приемлемая.
Уменьшаю Viscosity = 1 (вязкость). Для масла в данном уроке этого будет достаточно. Я не хочу, чтобы получилось слишком вязкое масло, нужно чтобы оно плескалось и брызгало. Горячее масло ведёт себя почти как вода. Если у вас есть желание, можете поэкспериментировать с этим параметром.
Увеличиваю Surface Tension = 1 (поверхностное натяжение) для того, чтобы масло старалось держаться каплями, это все-таки масло, а не вода. Хотя, конечно, кому как нравится.
Указываю Max Particles = 5000. Этого количества частиц будет вполне достаточно.
Увеличиваю скорость появляющихся частиц Speed = 5. Для того, чтобы быстрее прошло рождение необходимого количества. Это совершенно не влияет на их дальнейшее поведение, поэтому можете и не менять этот параметр.
Создаю демон скорости (k Speed) и выключаю его Simulation=Inactive (потом поясню, зачем он нужен).
Для того, чтобы жидкость успокоилась, а анимация не начиналась, нажимаю кнопку lock
в нижнем левом углу.
Включаю симуляцию:
Частицы вылетают из эмиттера, и когда их количество становится больше 5000, появление прекращается. Они бьются о стенки и долгое время не могут остановиться. Для того чтобы они скорее успокоились, использую демон скорости (k Speed).
Выключаю симуляцию.
Указываю для демона (k Speed)
Max speed =0
Limit & Keep = Yes
(в результате демон будет действовать на все частицы, скорость которых больше 0, и останавливать их.)
Активирую демон: Simulation=Active.
Включаю симуляцию хотя бы на один кадр. Все частицы остановились. Они потеряли свой импульс.
Останавливаю симуляцию. Выключаю демон. Включаю симуляцию. Частицы немного успокоились.
Повторяю эту последовательность операций несколько раз.
Теперь частицы спокойно и неторопливо перемещаются на дне логотипа.
Останавливаю симуляцию.
Это начальное положение нужно запомнить.
Для этого нажимаю кнопку Make Initial State. (свиток эмиттера)
Нажимаю на стрелку рядом с кнопкой Reset и ставлю галочку Reset To Initial State.
Теперь нажимая кнопку Reset, можно будет вернуться к начальному состоянию воды, когда она в спокойном состоянии находится на дне логотипа.
Для проверки своей работы можете свериться с файлом logo2.flw
Включаю экспорт частиц F12 и выключаю всё остальное.
Выключаю кнопку Lock (в нижнем левом углу).
Теперь будет работать анимация объектов.
Устанавливаю количество кадров в секунду FPS Output = 25 (если установить, например, FPS Output = 50, то впоследствии у вас будет возможность замедлять скорость воспроизведения в 2 раза без потери качества. Поэтому если это предполагается делать обязательно увеличьте FPS Output).
Для ускорения симуляции уменьшаю MAX Substeps = 50. Если компьютер слабый, можно уменьшить ещё, пока жидкость ведёт себя адекватно. Если же начинает разлетаться в стороны, пролетать сквозь логотип и т.д. нужно увеличить этот параметр.
Включаю симуляцию.
Некоторые частицы слишком быстро разлетаются.
Выключаю симуляцию.
Нажимаю Reset. Жидкость возвращается в начальное спокойное состояние.
Активирую демон скорости.
Для параметра Max Speed ставлю ключи:
На названии параметра щелкаю правой кнопкой мыши, выбираю Open curve.
В окне редактора устанавливаю такие ключи:
Кадр 2 - Max Speed = 12
Кадр 5 - Max Speed = 8.5
Для этого используйте правую кнопку мыши.
Теперь все частицы будут ограничены этой скоростью, и не будет слишком сильных всплесков.
Включаю симуляцию.
Если всё нормально, и движение жидкости вам нравится, то работа с симуляцией частиц на этом закончена.
Для проверки работы сверяйтесь с файлом logo4.flw
Удаляю всё, что есть на сцене. Теперь это не понадобится. Это и есть разделение работы на две части. Я имею на диске секвенцию файлов с движением частиц. И теперь приступаю к работе над оболочкой, которая мне и нужна, в конечном счёте.
Создаю эмиттер Binary Loader.
Загружаю в него полученную секвенцию частиц, она находится в папке /particles вашего проекта.
Включаю play.
Частицы движутся как следует, и не требуют времени на вычисления.
Теперь предстоит надеть на эти готовые частицы оболочку (Mesh).
Создаю Mesh.
Надеваю на эмиттер.
Для этого использую правую кнопку мыши.
Mesh будет применен ко всем эмиттерам. В нашем случае к Binary Loader.
В этом же меню находиться команда Build (построить). Выберите её. Вокруг частиц на экране появится оболочка. Используйте эту команду для проверки внешнего вида оболочки во время настройки параметров.
От правильной настройки оболочки зависит внешний вид воды. Неправильная настройка может испортить всю предыдущую работу. Это обычно не занимает много времени, поэтому не пожалейте его и попробуйте добиться приемлемого результата.
Вот основные параметры, о которых не стоит забывать.
Выбираю Binary Loader как подобъект Mesh.
Для него необходимо настроить параметры Radius и Blend Factor.
Radius влияет на радиус оболочки, появляющейся вокруг каждой частицы. Т.е. чем больше радиус, тем больше капли, и в результате оболочка как бы надувается. Исчезают мелкие детали. Если радиус уменьшить, то появляются мелкие детали, но оболочка может превратиться в отдельные мелкие капли. Достаточно трудно с помощью одного этого параметра добиться хорошего результата. Только если у вас получилось очень большое количество частиц, то результат может быть удовлетворительным.
Поэтому постепенно переходим к другому параметру – Blend Factor (сила смешивания).
При его увеличении оболочка вокруг частицы увеличивается в размере не во все стороны (как при использовании параметра Radius), а только в стороны других близлежащих частиц. Т.е. мелкие детали остаются, и оболочка не разрывается на отдельные капли. Чего и требовалось добиться.
Примечание. При настройке радиуса оказалось, что величина 0.01 слишком мала, а 0.02 - велика. По-умолчанию RF разрешает ввести только 2 цифры после запятой. Поэтому вхожу в Preferens (настройки) и указываю нужное количество цифр.
Теперь выбираю сам Mesh
Для него необходимо настроить параметр Polygon Size.
Чем он меньше, тем меньше полигоны, из которых состоит оболочка. Т.е. получается более плотная сетка. Лучше видны мелкие детали, но увеличивается время построения оболочки. В обратном случае оболочка получается угловатой, но время её построения уменьшается.
После настройки этих параметров получилась приемлемая оболочка. Видны мелкие детали. Оболочка не разбивается на отдельные капли и не имеет ломаных углов. Но! Посмотрите на неё, когда она находиться в спокойном состоянии. Реальная жидкость имеет практически ровную, сглаженную поверхность. А в нашем случае, даже несмотря на то, что мы указали достаточно высокое разрешение Resolution = 4, видны небольшие бугорки. Это происходит из-за того, что в нашей жидкости всё равно не такое огромное количество частиц как в реальной.
На помощь приходит свиток Filters. Он позволяет сглаживать небольшие выпуклости.
Включаю его.
Бугорки у нас были настолько маленькие, что даже настроек по умолчанию оказалось достаточно. Если вы работали с более низким разрешением, можете увеличить параметр Relaxation, например до 0.2 или больше.
Не забывайте контролировать себя, используйте для этого команду Build.
В любой момент результат работы можно увидеть.
И последнее, что часто приходится использовать. Посмотрите на количество полигонов, например, в 10 кадре.
Есть возможность уменьшить их количество, практически не теряя в качестве.
Для этого используем свиток Optimize.
Включаю оптимизацию по кривизне оболочки.
Там, где кривизна маленькая количество полигонов уменьшиться. Конечно, в этом случае для просчёта потребуется больше времени, но в результате полученная оболочка будет иметь меньше полигонов и работа с этой оболочкой в 3DS MAX упростится.
Выбор за вами.
Когда настройка окончена, указываю, что необходимо сохранить секвенцию оболочки и не нужно сохранять секвенцию частиц. (F12)
Начинаю симуляцию. Жду… И вот вам желаемый результат!!!
Брызги летят во все стороны. Видны довольно мелкие детали. Именно то, чего я и хотел добиться. Если хотите меньше брызг, то удлините анимацию логотипа. Не 5 кадров, а больше. Всё зависит от того, что вы хотите получить.
Открываю MAX.
Создаю RF Loader.
Загружаю в него полученную секвенцию оболочки.
Нажимаю Create Mesh. Всё!!!
На этом первая часть урока по созданию анимированного логотипа или какого-то другого объекта из жидкости окончена. Если вам этого достаточно, то можно и остановиться. Но если хотите «свалить заказчика наповал» – продолжим.
Давайте сделаем логотип кипящим и бурлящим. Это добавит ему свежесть и задор.
Возвращаемся в RealFlow.
План такой:
- открываю файл, где на дно логотипа налита жидкость, и она находиться в спокойном состоянии;
- создаю эмиттер под объектом logo, который будет буквально пускать пузыри, они и будут создавать бурление жидкости, а совсем не нагревание. Так что электроплита нам не понадобится;
- включаю симуляцию – логотип анимируется, масло бурлит под воздействием пузырей;
- надеваю оболочку на частицы масла.
Вкратце вот так!
А теперь по-порядку.
Открываю файл logo4.flw
Создаю эмиттер под объектом logo для создания пузырей.
Поворачиваю на 180 градусов.
Для того, чтобы пузыри шли вверх.
Масштабирую.
Эмиттер должен быть чуть меньше логотипа, чтобы пузыри не очень заметно разрезали края логотипа.
Перемещаю.
Он должен быть ниже логотипа (чем ниже, тем позднее начнётся кипение), а в виде сверху по центру.
Частиц для пузырей должно быть не очень много. Одна частица – один пузырь. Предполагаю, что пузыри не взаимодействуют друг с другом. Поэтому использую частицы dump. Они не взаимодействуют друг с другом и к тому же требуют меньше времени для просчёта.
Для уменьшения количества частиц уменьшаю Resolution.
Для того, чтобы частицы были «крупными» и отталкивали жидкость логотипа на большом расстоянии, увеличиваю Density (плотность). Чем больше параметр Density, тем больший объем занимает каждая частица.
Для того, чтобы пузыри отличались от жидкости, в свитке Display указываю, что они будут изображены в виде стрелок. Это не оказывает никакого влияния на конечный результат.
Устанавливаю скорость испускания Speed = 3.
Теперь нужно решить такой вопрос: пузыри должны лопаться на поверхности.
Для этого создаю демон объёма для удаления пузырей, которые уже прошли сквозь масло.
Нижняя плоскость демона должна быть где-то на поверхности масла. Тогда пузыри будут появляться из масла и как бы лопаться. Включаю инверсию Inverse = Yes.
Демон будет удалять частицы, которые попадают внутрь.
Теперь необходимо указать, что с чем будет взаимодействовать. Для этого удаляем все глобальные связи (Global Links) и указываем локальные (Exclusive Links).
Как видите, глобальных связей не осталось. В окне локальных связей указано, что на масло в логотипе (Square01) действует всё кроме демона объёма. А на пузыри (Square02) действует только демон объёма.
Выключаю кнопку Lock для включения анимации (если она была нажата).
Включаю экспорт частиц (Square01) для эмиттера масла (F12). Пузыри сохранять нет смысла.
Включаю симуляцию.
Частицы эмиттера пузырей поднимаются вверх. Жидкость на них не действует. Они достигают демон объёма и исчезают.
А вот на частицы масла пузыри очень даже влияют. Что и требовалось.
Выключаю симуляцию.
Удаляю всё. Создаю эмиттер Binary Loader. Загружаю полученную секвенцию частиц.
Надеваю на него оболочку Mesh. Настраиваю (как всё это делать см. выше).
Включаю экспорт оболочки F12 и выключаю всё остальное. Включаю симуляцию.
Вот и готова секвенция файлов оболочки жидкости. На этом работа с RF окончена.
Конечный результат в файле logo8.flw
Загружаю секвенцию в 3DS MAX (см. выше). Ну и так далее.
Если вам не нравится слишком сильное бурление – меняйте параметры по усмотрению. Т.е. можно поменять размер пузырьков Densite, их скорость Speed, время закипания (просто опустите эмиттер пониже), их количество Resolution. А простое увеличение скорости воспроизведения в любой монтажной программе приведет к уменьшению вязкости.
Для получения готового продукта осталось ещё поработать.
Ставлю камеру, свет. Использую Vray или что-то ещё. Это кому как нравится.
И кипящий логотип у вас в кармане!
Хочу подчеркнуть, что не претендую на правильное физическое поведение кипящей жидкости, т.к. цель у меня была создать рекламный кусочек, где масло собирается в логотип и начинает бурлить. Всё это сделано для телевидения, а не для хим.лаборатории. И, естественно, для того, чтобы продать.
Надеюсь, что сведения, полученные из урока, помогут вам в вашей работе.
Всего хорошего, и щедрых заказчиков. Обращайтесь с вопросами, если что-то не понятно.