Создание трехмерной модели Pouring
Quicksand/Paint Using Vellum Fuids в Houdini
Одним из наиболее заметных дополнений в Houdini стало обновление до Vellum, который теперь стал поддерживать жидкости, то есть упрощенную реализацию жидкостей. Хотя и упрощенная, она все еще очень мощная и может использоваться не только для создания стандартных жидких пор или водоворотов, но также может использовать технику, называемую заливкой акрилом. И я собираюсь повторить вот этот проект с помощью Houdini.
![[video-to-gif output image]](https://im3.ezgif.com/tmp/ezgif-3-cbd5329810.gif)
Чтобы сделать это в Houdini, я хочу использовать трубку(Tube), выставив радиус 4, а высоту 1, чтобы сделать действительно плоскую трубку, похожую на диск.
Далее я использую три этих диска для создания трех слоев жидкости с разной плотностью, при этом самая легкая жидкость является самым низким слоем, средний слой с более тяжёлой плотностью, и верхний слой с самой тяжёлой плотностью.
Теперь, я объединяю эти три трубки, используя узел слияния(Merge) на всех этих трех трубках
Чтобы настроить жидкости, я собираюсь использовать узел настройки зерна (Vellumconstraints_grain), установлю
в нем тип Fluid, уменьшу их
до 0,025 и увеличим плотность упаковки до значения 2, теперь они случайным образом
разбросаны по всему объему трубки. Эти созданные частицы будут служить моей жидкостью.
Также установим массу для равномерного расчета по атрибуту плотности, что позволяет
набирать вес жидкости, увеличивая или уменьшая ее плотность и устанавливать
вязкость и поверхностное натяжение.
Для самого нижнего слоя установим плотность жидкости 400, это будет самой
легкой жидкостью, и установим вязкость и поверхностное натяжение по 10.
Скопируем эти узлы для двух других трубок, и немного увеличим плотность средней
трубки, сделав ее немного тяжелее, установим значение 450. То же самое касается
последнего трубки. Здесь установим плотность еще тяжелее – 500.
Назначим для разных жидкостей разные цвета, а также сгруппируем эти отдельные слои в соответствующие группы точек, сначала используя узел группы и подключим эти групповые узлы под соответствующими настройками Vellum. Теперь здесь три группы точек, в каждой из которых около шестидесяти тысяч точек. Создадим два узла Colour и установим им различные цвета.
Также для моделирования, установим вязкость для каждой из этих жидкостей, используя узел Atributenoise. Сделаем чтобы вязкость, установленная в этих точках каждой из жидкостей, не была одинаковой, но имела небольшую разницу, добавив немного шума в их вязкости, используя атрибут шум, который настроим для работы с плавающей точкой. Настроим ее так чтобы наша вязкость умножалась на значение от 0,5 до 1 масштабирования нашей вязкости соответственно. Скопируем и вставим этот узел еще два раза, для второго и третьего слоя краски. Немного сместим вязкость, чтобы каждый слой краски имел различную некогерентную дисперсию вязкости по отношению к другим слоям, поставив смещение(offset) в первом узле на 0, во втором на 1000 и в третьем на 1456.
Если мы хотим визуализировать вязкость, для этого нужно создать узел визуализации(Visualize). Теперь можно увидеть, что у нас есть три разных слоя, различающихся по их вязкости.
Добавим узел Atributenoise и настроим его на работу с плавающей точкой. Работать будем с массой. Умножим старое значение на шум, и переназначим шум, чтобы не умножать нашу массу на диапазон от 0 до 1 , а на значение от 0,5 до 1,5. И установим смещение на 1000.
Чтобы закончить моделирование, нужно установить коллайдеры, чтобы вся это жидкость не растеклась, когда ее моделируем. Для создания коллайдера используем трубку без верхней крышки. Затем прикрепим узел Polyextrude, чтобы придать ей немного толщины.
Создадим узел Vellum solver и подключим к этому узлу в первый слот Atributenoise4, в средний слот поместим все Vellumconstraints_grain соединённые в общий узел Merge. К последнему слоту подсоединим трубку в качестве коллайдера
Добавим плоскость снизу чтобы наша жидкость не улетала. Последних два цветовых узла подключим к слоту Vellum solver, чтобы видеть, как разливаются разные цвета нашей жидкости.
Последние что осталось сделать, это сделать рендер этой модели. Для это создадим узел Camera. Разместим камеру сверху этой модели и проведем рендеринг каждого кадра.