Пять строк про материал и пара скриншотов как-то на запись в блоге не тянут, поэтому я опишу процесс создания полностью. То была пятничная развлекуха, а вот тебе, дорогой читатель, понедельная суровость бытия.
Итак, началось у меня всё с вопроса "как сделать пену" и нескольких дней на этап RnD по поиску ответа, но начну я с конца. Быстро пробежимся снизу вверх по картинке, от простого к сложному, так сказать.
Старые доски и рыба- сканы. Доски- это мой старый, завалявшийся, бесшовный материал. Откровенно говоря, он не выдерживает макро-рендеры и не дотягивает до качества моих современных сканов, но других досок я не сканировал.
Рыба - упрощенный скан в один оборот моего самодельного поворотного стола, созданного с помощью небольшого 3д принтера, "диска здоровья", Arduino и какой-то матери.
Про моделлинг тут говорить особо нечего, он грубый, лишь бы похоже было. Все выдавлено с четвертинки цилиндра, однако здесь, как и всегда я старался использовать неразрушающие стек процедурные модификаторы (taper, shell, push, FFD и т.д.), чтобы всегда можно было вернуться назад, сделать правки и не получить по итогу взорванный стакан.
Материал стекла с каплями - тут классика прямиком из 2008. Два объекта, первый - стекло, второй меш с дисплейсментом. И если первый это default glass, только с лёгким добавлением сальных отпечатков пальцев.
То для получения текстуры капель уже пришлось подрубать tyflow. Логика тут такая: на плоскости рождается кучка мелких капель, потом несколько больших начинают двигаться по извилистой траектории вниз, "собирая" собой эти капли, попутно оставляя хвост из мелких капель. Не самая удачная реализация...
Плюсы применения дисплейсмента на модели, а не напрямую такой симуляции из частиц для капель: точная огибающая форма, повторяющая стакан, ну и поликаунт 732 полигона против десятков тысяч. И плюсом небольшая имитация поверхностного натяжения на контурах капель с помощью обычного blur на текстуре. Можно было сделать дисплейсмент сразу на стекле, но что-то я загнался по поводу разных IOR и решил вспомнить древний метод, да и отключать их проще, чем лезть в настройки материала.
А вот пузырики внутри жидкости, кроме как геометрией делать вариантов не было. Оптимизация тут заключается в почти квадратных пузырьках и скаттеринге только вблизи внешних стенок. Плотность по вертикали задается через градиент.
И вот, наконец, мы подобрались к тому, с чего пошла вся канитель.
Захотелось мне детализации повыше, чем default SSS с бампом из интернета. Первая проба материала и...
Нужны были референсы, фотографии реальных бокалов. Я вышел в интернет с этим вопросом. Гугл мне выдал кучу рендеров, что? Оказалось, что году эдак в 2017 был такой "Beer foam challenge" где немало людей соревновалось в создании такого нетривиального материала как пивная пена. Можно было использовать любой софт, любые способы. Хороший результат получился у единиц. Методы создания, естественно, никто не показывал. Всё что я понял - горы скаттеров и ощень многа палигонав. Но я то хотел материал, который можно применять на любую геометрию в один клик.
Сразу были отброшены все варианты с процедурными 2D картами, я прикинул, что никакими Cellular я не сделаю пузырики с нужным расположением как по плоскости так и по высоте. Пришлось немного задействовать физику. Примерно полторы сотни тысяч пузыриков "склеены" между собой связями, из под них всплывают до определенного уровня шарики побольше, расталкивая мелкие.
Но из всего этого великолепия мне нужны простые 2D текстуры. С помощью стандартной ортографической камеры были отрендерены всего три Ч/Б текстурки: высота (Gradient Ramp в режиме World Coordinates), окклюзия (VrayDirt), маска по типу пузырьков. Также были получены текстуры для капель на стекле (не забываем, что очередность написанного обратная)
В нюке была произведена небольшая корректировка яркостей, нормализация градиента. Нехитрым способом с помощью ноды RotoPaint сделана бесшовность. На такой шумной структуре эта бесшовность особо и не нужна, но пущай будет. Кстати, для любознательных экспериментаторов я приложу эти готовые текстуры архивом .
Как видно, PopItка сделать всё одним материалом провалилась,тогда я подсмотрел у одного из участников челленджа на артстейшн вариант из двух мешей, один- SSS плотная пена, второй- прозрачная пленка на поверхности.
И вот я начал экспериментировать, накручивая параметры SSS рефлекшна и рефракшена обоих материалов...
Сначала я применял дисплейсмент как на пленку, так и на пену внутри, только в противоположном направлении. Но это вызывало много проблем с нежелательными пересечениями пены со стеклом и с плёнкой. И, как оказалось, обычного Vray бампа на пене было достаточно, а глубину можно имитировать затемнением по карте высот, разницы почти не видно, это упростило настройку и ускорило рендер.
Я использовал эти три текстуры на оба меша, но у внутренней части нужно было добавить фрактальности внутри больших пустот, иначе это как дырки в сыре. Я просто закомпозил эту же текстуру по маске c увеличенной повторяемостью.
Предварительно запеченная карта Ambient Occlusion неплохо имитирует микроскопическую пену на стыках шариков. В некоторых случаях можно обойтись только ей одной, но это не наш случай.
Крутил я настройки материалов туда-сюда, пытаясь поймать нужную светотень. И так не нравилось и эдак, но в какой-то момент я понял, что пора остановиться, для RnD проекта по фану потрачено уже много времени. Пену можно делать теперь любую, кофейную, мыльную, уничтожающую CPU или же быстрый simple SSS. Осталось расставить свет и отрендерить. Основной ИС тут мощный направленный прожектор с теплым светом и еще небольшой фонарик прямо позади кружки для чуть более интересных бликов.
Реднерю финалку как всегда в bucket режиме, 6*6 лучей на пиксель. Материал тяжелый, компик подвисает конкретно. Практически вся пост-обработка началась и закончилась в VFB (VrayFrameBuffer), а именно схлопывание хайлайтов, контраст, насыщенность, баланс белого, кривые... И только в Nuke была добавлена святая троица - виньетка, аберрации и пленочный шум.
Архив с пенистыми текстурами: https://disk.yandex.ru/d/zVGbkFlE6UWCFQ
Как-то так...