Моделирование жидкостей — от капли к океану

Автор: Сергей Кольцов, Юлия Сазонова

Человека, вода издавна притягивала и пугала людей одновременно. Мы просим дождя для обильного урожая, и не любим открывать зонтики. Мы любим смотреть на стремительный поток горной речки или низвергающий водопад, мы любуемся волнами на море и разводами от брошенного камня на гляди озера. Без воды и прочих приятных на вкус жидкостей сложно было бы нам жить. Да и как говорят ученые,смотреть на воду — одно из любимых человеческих занятий.

Любой, кто когда-либо фотографировал жидкость (а к таким, судя по всему, относятся все, кто вообще фотографировал в своей жизни), знает, как трудно получить «живую» картинку. Вода динамичный объект, а нам надо, чтобы она замерла на мгновение. Вы видели в реальной жизни, какую форму имеет капля? Да? А если подумать? Да миллион разновидностей, и каждая не похожа на свою соседку. А как выглядит поток жидкости, выплеснутый из объема? Застывший поток?! Видели только на фотографии. Сделать фотографию воды - процесс сложный и зачастую неблагодарный. На снимках вода теряет свою привлекательность и загадочность. 3D зачастую работает не ради «чистого искусства» а, например, для рекламной индустрии, где особенно важно, чтобы было, «как в жизни» или даже лучше. А жидкости часто становятся героями рекламы:молоко, коньяк, кола, вода, да что угодно, любые напитки, или отличным фоном для товара: реки, ручьи, озера и моря.

 

Мы смоделировали капли разного размера и расположили их по поверхности бутылки. Чтобы изображение выглядело реалистично, в сцену с бутылкой добавили HDR-изображение, несколько источников бликов и источников рассеянного освещения.

Итак, давайте вспомним, что мы знаем о физических свойствах воды. Вода отражает, просвечивает, преломляет. Начнем с малого — с капли. Одну каплю смоделировать несложно — достаточно только точно передать форму и присвоить материал с оптическими характеристиками воды, которые можно найти в справочнике по физике.

Для справки — коэффициент преломления воды 1,332986, собственный рассеянный (diffuse) цвет зависит от используемой для визуализации программы и требуемого эффекта, принято считать близким к черному, отражающий и преломляющий цвета светлыми, впрочем отражения не должны забивать прозрачность, иначе капля выйдет похожей на ртуть.

Теперь пришло время поместить нашу героиню в достойное окружение. Вопрос: где особенно часто в рекламе используются капли жидкости? Со всеми их бликами и преломлениями. Правильный ответ: на бутылке пива. Ее мы и добавляем на картинку. Забавно звучит — добавить бутылку к капле, но моделирование бутылки мы в этой статье рассматривать не будем. Теперь надо подобрать что-нибудь для формирования тех самых «оживляющих» и «аппетитных» отблесков нашей капли. В сцене с бутылкой это может быть произвольный задник с большим перепадом яркостей, например HDR-изображение, еще мы добавим один или несколько дополнительных источников бликов в виде белых пластин-отражателей или протяженных, например прямоугольных, источников рассеянного освещения.

Доводим каплю до блеска, то есть придаем бликам задуманную форму, размер, цвет и яркость, меняя их параметры и перемещая дополнительные источники отражения. Теперь капли размножаются по всей поверхности бутылки... Запотевшая пивная бутылка готова. А покупатель, ничего не подозревая о наших творческих мучениях, выходит из вагона метрополитена с таким вот постером — и идет в ближайший магазин за пивом. Цель достигнута!

Теперь перейдем к более крупной форме: «сделаем» вино, выплескивающееся из бокала. Начнем со сбора референс-материалов — подберем картинки, похожие на будущий кадр. Неплохо бы также поставить бокал с вином рядом с клавиатурой — значение хорошей натуры трудно переоценить. Самое сложное в данной ситуации — смоделировать поток вина, свободно выплескивающегося из бокала. Для этого программы 3D предлагают два способа:

  • вручную, например, используя полигональное или поверхностное (NURBS) моделирование, или каким-либо другим способом;
  • применить специальный софт для моделирования динамики жидкости.

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

После конвертации изображения в полигональную сетку присваиваем жидкости материал и подбираем нужный цвет. Глубокий красный цвет «сделает» из жидкости вино. 

Но нет предела совершенству! И мы все-таки решимся попробовать смоделировать поведение жидкости с целью получить один-единственный, но самый лучший, кадр. Занятие это трудоемкое и увлекательное одновременно. Скажем сразу, что этот способ дает замечательную возможность проследить весь процесс выплескивания и выбрать момент, который окажется наиболее эффектным.

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

Основные параметры отражателей:

Сollisiondistance — расстояние между жидкостью и отражателем,

Friction — сила трения между частицами жидкости и отражателем,

Bounce — сила отскока частиц.

И на этом этапе мы вспоминаем, что в бокале у нас красное вино, а ведь могло быть и молоко, не так привлекательно, конечно, или ликер, чтобы не отходить от алкогольной темы. Напитки, да и жидкости вообще, различаются не только градусом, и даже цвет — не единственный отличительный признак, существуют еще такие физические величины как сила трения между частицами жидкости и ее плотность, они во многом определяет динамику поведения нашего выплескивающегося напитка. Задаем их при помощи параметра Density (Плотность) и Viscosity язкость жидкости, т.е. сила трения между частицами). Для визуального восприятия картинки важно качество изображения, которое напрямую зависит от параметров Resolution (Разрешение) и Max particles (Максимальное число частиц). Но и перебарщивать здесь не стоит: чем больше значение каждого из этих параметров, тем больше времени потребуется на просчет сцены.

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

Для создания водной глади лучше всего подходит метод создания поверхности при помощи текстур. Маска, со сравнительно невысоким разрешением, создаст участки волнения, мелкой зыби и абсолютно гладкие. Повторяемые под маской текстуры зададут форму и высоту самих волн.

Теперь выберемся на природу и поговорим о круговороте воды в природе, а точнее будем визуализировать водоемы. Жидкости в них несколько больше, чем в бокале, и чаще всего она динамична. Итак, перед нами река, или ее малая форма - ручей. Понятно, что все, приведенные ранее подходы тут нам не помогут. На первый взгляд, задача кажется гораздо более сложной — воды ведь во много раз больше. С другой стороны, при моделировании реки совершенно нет нужды создавать отдельные брызги или уделять внимание динамике отдельных струй воды.

Подберем фотографии ручейков и рек, и начинаем их внимательно рассматривать, мысленно деля всю водную поверхность на зоны с различными свойствами. Возле берега, где дно близко к поверхности, оно просматривается гораздо лучше, чем в глубине. К берегу прибило пену, на поверхности воды небольшая рябь от ветра, причем интенсивность ряби в разных местах водной глади разная. Картинки, знакомые нам с детства, картинки, которые рисует природа. А как нарисовать это в 3D? Как создать все разнообразие природных проявлений и соединить в единое и неделимое целое, в одну картинку, чтобы «нарисованная» вода притягивала взгляд зрителя, как передать задуманные погодные условия, настроение сцены?

Итак, наша задача посредством компьютерной графики передать всю гамму изменений на поверхности водоема. Тут просто напрашивается метод создания поверхности при помощи текстур. В любом «большом» редакторе 3D моделирования есть инструменты для перенесения карты высот на поверхность. Если требуется карта бОльшего разрешения, чем вы можете себе позволить, (например при попытке создать рельеф поверхности целого озера, визуализируемого для печати A3 с разрешением 300 dpi, с учетом разного характера поверхности на разных участках), имеет смысл смешать по маске несколько различных текстур. Именно маска, со сравнительно невысоким разрешением, создаст участки волнения, мелкой зыби и абсолютно гладкие. А повторяемые под маской текстуры зададут форму и высоту самих волн.

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

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

Перейдем от сравнительно гладкой водной поверхности речки к бушующему океану. И вновь обратимся к фотоматериалам, почувствуем себя Айвазовским, и визуализируем шторм.

Как обычно, сначала насобирайте референс-картинок. Чем больше, тем лучше. Есть репродукции картин из Русского музея — у нас были выдающиеся маринисты! Фотографии? Очень хорошо. Смотрите внимательно: волны на самом деле довольно сложная штука. Явно недостаточно просто создать гармонические колебания поверхности, на каждой волне множество колебаний второго и третьего порядков и у них разная форма и разная динамика. Что нам там наука говорит: крупные валы в открытом море близки к гармоничным синусоидам, но на их поверхности волны второго порядка образуют свой причудливый рисунок, который в свою очередь покрыт рисунком мелкой зыби и, возможно, клочьями пены.

Крупные водяные валы будем моделлировать по-честному, применяя соответствующие техники. Сейчас существует целый ряд специализированных программных средств для создания подобных поверхностей, есть они и в составе «больших» программ.

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

Смотрим на референс-картинки. Без «барашков» море — не море. Создаем мелкую рябь и пену с помощью карт прозрачности и bump-карты. Есть где реализовать свой творческий потенциал.

Вот ваше море-океан и готово: бурлит, волнуется, живет. Чего мы собственно и хотели добиться.

«Вода-вода — кругом вода». Вспомнив физику и заглянув в 3D программ, вы теперь с легкостью и, главное, удовольствием сможете сами создать разные жидкости, не дожидаясь милости от природы.

Впервые опубликовано в журнале "Компьюарт" №9'2008

3D вода
Разделы:
Рубрики:
Популярное: