Создание жидкости с использованием Real Flow

Ещё по стаканчику мороженого. И всё!

Урок для тех, кто хочет попробовать свои силы в создании жидкости с использованием RealFlow.
Я это сделаю на примере наполнения рожка мороженого, потому что летом это очень актуально.
Давайте начнём.
Я хочу, чтобы в рекламном ролике мороженого невидимый вафельный рожок наполнялся жидким мороженым, которое постепенно застывает. И сверху вырастает специфичная «розочка», не растекаясь при этом наружу.
А рожок сворачивается на уже застывшем мороженом. Но это уже совсем другая история.
Для выполнения этой задачи буду использовать 3DS MAX 8 и RealFlow3.
(Пока урок писал 4-я версия RealFlow вышла, буду попутно давать объяснения и для неё).
Устанавливаю плагин RealFlow для 3DS MAX, который можно скачать с официального сайта.
Моделирую вот такие объекты. Внизу это как бы внутренняя часть рожка, а вверху – розочка, которая получается в реальности при наполнении.


Обязательно уменьшите количество полигонов, т.к. на внешнем виде это вряд ли скажется, а времени на симуляцию потребуется меньше.
Проверьте модель на дырки, чтобы мороженое впоследствии не вытекло.
(Используйте для этого модификатор STL Check.)
Теперь нужно отправить обе модели из 3DS MAX в RealFlow.
В данном примере буду использовать формат .OBJ.
File > Export > file.obj.
Даю им понятные имена.

(Если бы было нужно экспортировать ещё и анимацию, то нужно воспользоваться форматом .SD. Для этого предназначена утилита SceneDataSaver. Она появляется после установки плагина.)

Закрываю MAX. Открываю RealFlow.
Загружаю модели в программу.

Для RF3.


Для RF4.
Правая кнопка->Add->Objects->Import->файлы.

Создаю эмиттер Circle.


(в RF4 правая кнопка->Add->Emitter->Circle).
Помещаю его внутрь модели. (Горячие клавиши перемещения, вращения, масштабирование – W,E,R, как и в MAX).
Масштабирую.

Настраиваю модель.
Хочу чтобы жидкость лилась вниз, билась о рожок, плескалась, постепенно заполняла рожок, бурлила.
Если, например, вы хотите лить мороженное сверху (т.е. снаружи модели), необходимо указать, что «розочка» будет «прозрачна» для частиц с внешней стороны. Нужно указать Collision side. В моём случае в этом нет необходимости, т.к. эмиттер будет находиться внутри модели и Collision Side=Both. Т.е. частицы не смогут проходить сквозь неё с любой стороны. Выберите объекты и укажите.
RF3 и RF4 идентично.


Collisiondistance – расстояние на котором оболочка начинает взаимодействовать с частицами.
(не указывайте очень маленькие значения, от этого возрастает время просчёта).
Friction– сила трения.
Bounce – сила отскока частиц.
Настройте их по своему вкусу. Это зависит от того, что вы хотите получить и ещё от размера модели.

Если нужно, можно заставить эмиттер двигаться. Для этого ставлю ключи (правая кнопка мыши по нужному параметру). Значение с ключом меняет цвет. И редактирую их редакторе.


(в RF4 правая кнопка по параметру->OpenCurve).
Настраиваю эмиттер/


Как видите, поставил ключи по положению, вращению и скорости. Хочу, чтобы струя меняла направление и силу. Так даже смешнее.

Попробуйте менять Viscosity (вязкость).
Max particles – максимальное число частиц. При превышении их числа рождение частиц прекращается. Поэтому поставьте достаточное количество, чтобы хватило на весь рожок. Узнать сколько сейчас частиц в сцене можно в свитке Statistics (когда выбираете эмиттер).
Resolution – разрешение.
Density – плотность.
Чем больше разрешение, тем лучше качество. Будет задействовано больше частиц в единице объёма.
Чем больше плотность, тем тяжелее жидкость. Но так как жидкость в данной сцене одна, плотность менять нет смысла.
При пробных симуляциях имеет смысл уменьшить разрешение.
Меняю настройки симуляции


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

Для RF4:
Стрелка рядом с кнопкой Simulate->Options
Открывается окно


Да! Для ускорения просчётов можно уменьшить параметр MAX substeps, примерно, до 50 или даже меньше. (Там же, где меняли количество кадров в секунду.)
Уменьшать можно до тех пор, пока частицы ведут себя адекватно. Если начинают, например, разлетаться в разные стороны – параметр нужно увеличить.

Применяю гравитацию.


(в RF4 правая кнопка->Add->Daemons->Gravity).
Меняю силу гравитации по желанию. (Выбираю значок гравитации и меняю параметр Strength).

Указываю, что будет влиять на жидкость.


Теперь на жидкость будут действовать оба объекта и гравитация.

В RF4



RealFlow работает таким образом:
Он генерирует частицы, а потом надевает на них оболочку.
Это занимает довольно много времени. Я предпочитаю разделять этот процесс пополам. Сначала я «считаю» частицы и записываю их в секвенцию частиц. И только после того, как мне понравилась симуляция, я загружаю полученную секвенцию в новый эмиттер для расчета оболочки.

Поэтому включаю экспорт частиц и не включаю экспорт оболочки.

В RF4
меню Export->ExportCentral...(F12)

Запускаю симуляцию


В RF4


Теперь нужно подождать пока вся модель не заполнится частицами.
Останавливаю симуляцию. (Та же кнопка).
Включаю Play. Если что-то не нравится, подправляю. Снова включаю симуляцию. И так пока не получу желаемый результат.
Теперь можно увеличить количество частиц в симуляции для более качественного результата. (Resolution – разрешение)
И просчитать всё заново.
Итак, у меня есть секвенция файлов, в которой записано движение частиц во время симуляции.
Но для рендера в MAX мне нужна секвенция файлов, в которой записано движение поверхности мороженого.
Для этого удаляю старый эмиттер и создаю новый Binary Loader.

Загружаю в него секвенцию частиц, которою только что получил.


(В RF4 почти аналогично).

Теперь просчёт частиц почти не займёт время времени.
Надеваю на них Mesh.


Присваиваю этот Mesh моему новому эмиттеру.


Теперь оболочка будет создаваться для нового эмиттера.

В RF4 правая кнопка->Add->Mesh
Правая кнопка на mesh->InsertFluids...

Настраиваю Mesh.
Выбираю Binary Loader. Указываю радиус.

Чем больше радиус, тем дальше от частицы будет находиться оболочка. Т.к. он действует на все частицы, то в результате получится более сглаженная (раздутая) оболочка. Чтобы получить более точную оболочку радиус нужно уменьшать. Но в результате жидкость может превратиться в отдельные капли, если частиц недостаточно. Используйте BlendFactor. Его увеличения приводит к слиянию отдельных капель не за счёт радиуса, а за счёт появления оболочки между ними. Просто попробуйте разные варианты и поймёте.
Включите Filters. Он сглаживает маленькие бугорки.

Для просмотра текущего mesh в RF3 нажимайте кнопку с изображением глаза (build mesh),
В RF4 – правая кнопка на названии mesh->build.

Выбираю Mesh. Указываю Polygon size.


Это количество полигонов на каждую частицу. Чем их меньше, тем быстрее просчёт, но в результате ломаная поверхность.
Подберите нужный вариант для своего масштаба.
Выключаю экспорт частиц и включаю экспорт оболочки (Mesh).
(В RF4 – F12).


Запускаю симуляцию. Жду.
После окончания у меня есть секвенция файлов с движущейся оболочкой.
На этом работа с RealFlow окончена.
Запускаю MAX.
Создаю RF Loader.


Загружаю в него 2-ю полученную секвенцию (оболочка).


Жму кнопку «Create Mesh».
Присваиваю полученному объекту материал – что-то напоминающее молоко.
Рендерю.







Использую AfterEffects для сборки всего материала (фон + рожок + мороженое).
Если жидкость слишком густая увеличиваю скорость воспроизведения секвенции. (вот тут и понадобится больше 25 кадров в секунду).
Всё. Теперь попробуйте сами. Если хотите можно всё это дело полить сверху шоколадом. Для этого нужно смоделить оболочку для шоколада так же как до этого делали оболочку для мороженого. И дальше всё по-порядку.
Желаю успехов в мороженоделании.

690 0 850 53
37
2006-07-27
малацца !!! в тему наконец то хоть что то нтересное )!)
2006-07-27
Жаль что не могу голосовать....:( Очень хороший урок. Актуально, доступно, да и вообще, КРУТО!
2006-07-27
что то я подобное уже видел, да и вообще не знаю зачем нужно переводить туториалы, ведь нового ты ничего не открыл. http://www.nextlimit.com/tutorialsrealflow.htm
2006-07-27
Не согласен с Flexiable. Туторы переводить нужно так, как всегда найдутся люди, которым приспичет сделать что-то подобное, а с Инглишем у них не лады. Так что хорошо что находятся такие люди, которые не поленились эти туторы перевести :))) И даже если уже были подобные уроки на русском, то для тех кого интересует дынная тема - будет выбор, и они воспользуются тем, что им удобнее и понятнее. Переводчик - МОЛОДЕЦЦ :)))
2006-07-27
хочу мороженное =) за урок СПАСИБО
2006-07-27
Классно, наконец-то я понял некоторые особенности.
2006-07-27
Урок интересный. Искал как то любую инфу по Реал флоу. Но есть несколько вопросов. Как узнать общее количество частиц нужное для заполнения объекта? 10000, 100000, 1000000 Какой должен быть объект мороженого? С дыркой снизу или без дырки? Как объект мороженого должен ложиться на рожок: вплотную или без разницы? Масштаб всей сцены Макса в Реал Флоу не нужно уменьшать для правильной имитации жидкости?
2006-07-27
А как розочку такую сделать???
2006-07-27
Давно искал хорошие уроки по Real Flow. BiG tHanX!!!
2006-07-27
Андрей Тимофеев - «Как узнать общее количество частиц нужное для заполнения объекта? 10000, 100000, 1000000» Я это делаю опытным путём. Устанавливаю большое значение Max Particles. Когда объект заполнен, смотрю текущее количество и копирую значение в параметр максимального количества частиц Max Particles. В результате в нужный момент эмиттер перестанет работать. Если установленный предел оказался мал, то приостанавливаю симуляцию, увеличиваю предел и продолжаю симуляцию. Большое значение Max Particles не оказывает влияния на время симуляции. Время зависит от количества частиц в сцене, и не зависит от частиц, которые появятся когда-то. При изменении Resolution необходимо менять и Max Particles. Чем больше Resolution, тем больше Max Particles. «Какой должен быть объект мороженого? С дыркой снизу или без дырки?» Я не совсем понял вопрос. Когда на частицы накладываю оболочку Mesh, то естественно в оболочке никаких дырок быть не может. Как и в обычной жидкости. Если имеется ввиду объект, в который я заливаю мороженное., то в уроке я сделал объект из двух поверхностей (так мне просто легче моделить). Дырок там никаких нет, чтобы мороженое не выливалось. Если дырка нужна, то её нужно смоделить. «Как объект мороженого должен ложиться на рожок: вплотную или без разницы?» Тут ты немного не разобрался, потому что оболочка мороженого вообще не имеет с рожком никаких отношений. Оболочка накладывается на готовые частицы и знать не знает о существовании рожка. А вот на каком расстоянии от рожка будут останавливаться частицы нужно указать в параметре Collisiondistance. Вот тут нужно быть внимательным. Чем меньше расстояние – тем больше времени на просчёт. «Масштаб всей сцены Макса в Реал Флоу не нужно уменьшать для правильной имитации жидкости?» Да. Нужно установить параметр scale=0.1 (это в верхней части интерфейса). Совсем забыл об этом написать. Но дело в том, что когда я делал эту сцену, всё равно не знал какую вязкость имеет жидкое мороженое, поэтому всё пришлось подгонять «на глазок». NAV - "А как розочку такую сделать???" Даже не знаю, что сказать. Вроде бы никаких проблем с розочкой не было. Просто смоделил. Если это интересно - напишу следующий урок. Если у кого ещё вопросы – жду.
2006-07-28
так как я совсем недавно стал пристращаться к "водным процедурам" от REAL FLOW -) то этот урок имеет для меня наивысшую актуальность и качество огромный респект удачи
2006-07-28
Чёрт, чьи это мозги на первой картинки : )
2006-07-28
Соглашусь с Флексиблом и не с Фивксом...перевести туториал и за неполный один день получить 42 балла - это наглёж и ХАЛТУРА в то время, как честыне и добросовестные CG-шники потеют до обезвоживания, придумывают всё сами и выкладывают на конкурс; и что получают взамен? - жалкую десятку! Как бы сказал профессор Хуберт Фарнсворд: "Лично я был бы против."
2006-07-28
может стоит ввести что-то типа начисления дополнительных очков если урок сделан собственными силами? например +50%
2006-07-28
kilo1991 - не знаю, будет ли кому интересен такой урок, но мне бы хотя бы вкратце услышать, какими шагами делался объект, типа: Loft, FFD, TurboSmooth. Если не затруднит - ответь, пожалуйста на nav@nc.ru
2006-07-28
Moon Man, именно это я и имел в виду, хотя kilo1991 понять можно нашел хороший, но подловатый способ заработать $! А меня сейчас жаба душит :)
2006-07-29
Flexiable & Moon Man Весёлые вы, однако, ребята. Чего только не узнаешь о себе в шутейном разговоре. Оказывается, мою рекламу для местного мороженщика делали крутые перцы из NextLimit. Ну-ну!!! Меня даже заказчик, которому работа понравилась, так не хвалил. С нетерпением жду продолжения. Успехов!
2006-07-30
Клевый урок, голосую по-максимуму. Давно на ренднре не было нормальных уроков.
2006-07-30
kilo1991 ты слишком буквально воспринимаешь информацию, я говорил о том что, особого ты ничего не сделал, а просто скопировал хелп и вместо вазы поставил рожок! оч весело!
2006-07-30
Согласен с Flexiable Kilo1991 решил нечестно заработать переведя хелп.
2006-07-30
Мороженое на вид очень вкусное, так бы и съел. :)
2006-07-31
Нет, это издевательство! Предлагаю, поставить за этот материал жирную двойку (неуд.). Кстати, про цвет...какой-то нездоровый цвет рожка. Я бы его не стал есть. Мне кажется, он слегка заплеснивел? Нет, Вы так не считаете? А по-моему, именно так.
2006-07-31
Да реально пусть kilo делает что хочет, мне лично пофиг, просто я начну так же действовать. Если редакция всё так и оставит, то и все так начнут! За то будет полноценный русский хелп к максу и другим пакетам. :)
2006-07-31
Слушай kilo почем брал Real flow 3? и Max 8?
2006-07-31
По большой просьбе Flexiable обязательно напишу в августе урок, более нужный, чем этот. Что-нибудь из жизни жидкости с более сложным поведением. Постараюсь оправдать ожидания Flexiable, чтобы ему спокойно спалось и справедливость восторжествовала. Удачи.
2006-08-01
Kilo1991 - спасибо за разъяснение по поводу моделлинга. Буду разбираться - думаю, что этот вопрос закрыт.
2006-08-01
Пиши. Я тебя в штыки воспринял потому что не вижу в этом уроке ничего нового для себя, а хелп стандартный в урок пускать по моему не в тему, да и вообще считаю что конкурсные уроки должны повествовать о чем то нестандартном (вот про более сложную жидкость мне бы было интересно почитать к примеру кипение воды, в которую при температуре 90 (дальше закипает), бросают кусок льда, который в последствии испаряется и конденсируется о крышку сосуда (последние 2 части шутка:)). Если и вправду напишешь, то в моих глазах хорошо подымишься, просто не уважаю халяву, без обид.
2006-08-01
Извините, я тут человек новый. Может быть, вообще не брать на конкурс уроки по плагинам? Ну, или брать, но такие, где описываются какие-нибудь финты ушами, типа совмещения техник или что-нибудь сложное - актуальное. А на счёт переведённых хелпов, то в "Хищных вещах" по этому поводу уже написали. "Так много людей занимаются этим, что стать первым почти нет шансов". А мороженое - первый класс, тоже сразу захотелось! Анимация есть?
2006-08-02
Люблю мороженое. Обязательно попробую.
2006-08-04
Где взять RF4 или хотя бы 3
2006-08-06
Dr.Stein на официальном сайте можно скачать триал версию с которой вполне можно работать nextlimit.com
2006-09-11
Второй урок намного лучше. Непонятно почему этот победил?
2006-09-12
Читать коментарии оказалось интересней, чем сам урок.
2006-09-12
Интересная видимо эта RF. Надо будет посмотреть.
2006-10-25
Уже смотрю!
2007-02-09
Народ,подскажите пожалуйста как мне открыть окно Scene tree?Видать по незнанке его закрыл. [IMG]http://p.foto.radikal.ru/0702/ca241cdfa32a.jpg[/IMG] [URL=http://foto.radikal.ru/f.aspx?p0702ca241cdfa32ajpg][IMG]http://p.foto.radikal.ru/0702/ca241cdfa32at.jpg[/IMG][/URL]
2007-04-30
Извините меня у кого есть етот реал флоу для макс 8 версий. Пожалуйста скинте на етот е майл kosi_90@mail.ru
RENDER.RU