Моделирование жидкостей: от капли к океану
«Вода, вода, кругом вода!» — помните? Вода — один
из основополагающих элементов мироздания, с ней связано зарождение жизни на Земле и появление человека. Вода дает жизнь, а наводнение способно стереть с лица Земли целые города. Мы погибнем,
если не будем потреблять жидкость каждый день. В общем,
как говорится, без воды «и ни туды и ни сюды...». В этой статье
мы расскажем, как создается всё, что льется, течет и пенится.
С одной стороны, мы вспомним физику и попытаемся разгадать тайну природы, а точнее разложить ее на составляющие по науке.
С другой стороны, мы решим практическую проблему рекламных дизайнеров, связанную с трудностью отображеня на фотоснимках динамики воды.
Издавна вода притягивает и одновременно пугает людей. Мы просим дождя для обильного урожая и не любим открывать зонтик. Мы любим смотреть на стремительный поток горной речки или низвергающийся водопад, мы любуемся волнами на море и разводами от брошенного камня на глади озера. Без воды и прочих приятных на вкус жидкостей сложно было бы жить. Да и смотреть на воду — одно из любимых занятий человека.
Любой, кто фотографировал жидкость (а к таковым, судя по всему, относятся все, кто вообще когда-либо фотографировал), знает, как трудно получить «живую» картинку. Вода — динамичный объект, а нам надо, чтобы она на мгновение замерла. Вы видели в реальной жизни, какую форму имеет капля? Да? А если подумать? Существует миллион разновидностей, и каждая не похожа на свою соседку. А как выглядит поток жидкости, выплеснутый из объема? Застывший поток?! Видели только на фотографии. Сделать фотографию воды — процесс сложный и зачастую неблагодарный. На снимках вода теряет свою привлекательность и загадочность.
3D зачастую работает не ради «чистого искусства», а, например, для рекламной индустрии, где особенно важно, чтобы было «как в жизни» или даже лучше. Жидкости часто становятся героями рекламы: молоко, коньяк, кола, вода — да что угодно, любые напитки — или отличным фоном для товара: реки, ручьи, озера и моря.
Итак, давайте вспомним, что мы знаем о физических свойствах воды. Вода отражает, просвечивает, преломляет. Начнем с малого — с капли. Одну каплю смоделировать несложно — достаточно только точно передать форму и присвоить материал с оптическими характеристиками воды, которые можно найти в справочнике по физике.
Для справки: коэффициент преломления воды 1,332986, собственный рассеянный (diffuse) цвет зависит от используемой для визуализации программы и требуемого эффекта, его принято считать близким к черному, отражающий и преломляющий цвета — светлыми, впрочем отражения не должны забивать прозрачность, иначе капля выйдет похожей на ртуть.
Теперь пришло время поместить нашу героиню в достойное окружение. Вопрос: где особенно часто в рекламе используются капли жидкости со всеми их бликами и преломлениями? Ответ правильный — на бутылке пива. Ее мы и добавляем на картинку. Звучит забавно — добавить бутылку к капле, но моделирование бутылки мы в этой статье рассматривать не будем. Теперь надо подобрать что-нибудь для формирования тех самых оживляющих и «аппетитных» отблесков нашей капли. В сцене с бутылкой это может быть произвольный задник с большим перепадом яркостей, например HDR-изображение. Еще мы добавим один или несколько дополнительных источников бликов в виде белых пластин-отражателей или протяженных, например прямоугольных, источников рассеянного освещения.
Доводим каплю до блеска, то есть придаем бликам задуманную форму, размер, цвет и яркость, меняя их параметры и перемещая дополнительные источники отражения. Теперь капли размножаются по всей поверхности бутылки. Запотевшая пивная бутылка готова.
А покупатель, ничего не подозревая о наших творческих мучениях, выходит из вагона метрополитена с таким вот постером — и идет в ближайший магазин за пивом. Цель достигнута!
Переходим к более крупной форме: изобразим вино, выплескивающееся из бокала. Начнем со сбора референс-материалов — подберем картинки, похожие на будущий кадр. Неплохо бы также поставить бокал с вином рядом с клавиатурой — значение хорошей натуры трудно переоценить. Самое сложное в данной ситуации — смоделировать поток вина, свободно выплескивающегося из бокала. Для этого 3D-программы предлагают два способа:
- вручную, например используя полигональное или поверхностное (NURBS) моделирование, либо каким-то другим способом;
- применить специальный софт для моделирования динамики жидкости.
В первом случае получится именно тот кадр, который нужен для конкретной задачи. При наличии навыков создания мягких, плавных форм и достаточном количестве фотографий с разливающейся жидкостью результат должен вас удовлетворить.
Но нет предела совершенству! И мы все-таки решимся попробовать смоделировать поведение жидкости с целью получить один-единственный, но самый лучший кадр. Занятие это трудоемкое и увлекательное одновременно. Оговоримся сразу, что этот способ дает замечательную возможность проследить весь процесс выплескивания и выбрать момент, который окажется наиболее эффектным.
Технически решить поставленную задачу можно, в частности, при помощи дополнения RealFlow. Принцип его работы состоит в создании особых систем частиц, которые визуализируются в виде сплошных потоков жидкости. Поэтому приемы работы похожи на работу с частицами, всё как с каплей: ставим источники, отражатели и направляем поток частиц как требуется.
Основные параметры отражателей:
- Сollisiondistance — расстояние между жидкостью и отражателем;
- Friction — сила трения между частицами жидкости и отражателем;
- Bounce — сила отскока частиц.
И на этом этапе мы вспоминаем, что в бокале у нас красное вино, а ведь могло быть и молоко, что не так привлекательно, конечно, или ликер, чтобы не отходить от алкогольной тематики. Напитки, да и жидкости вообще, различаются не только градусом, и даже цвет — не единственный отличительный признак. Существуют еще такие физические величины, как сила трения между частицами жидкости и ее плотность, — они во многом определяют динамику поведения нашего выплескивающегося напитка. Задаем их при помощи параметров Density (Плотность) и Viscosity (Вязкость жидкости, то есть сила трения между частицами). Для визуального восприятия картинки важно качество изображения, которое напрямую зависит от параметров Resolution (Разрешение) и Max particles (Максимальное число частиц). Но и перебарщивать здесь не стоит: чем больше значение каждого из этих параметров, тем больше времени потребуется на просчет сцены. А клиент ждет!
Как только все настроено и нужные кадры выбраны, конвертируем их в полигональную сетку и присваиваем жидкости материал. Вино, в отличие от воды, будет иметь глубокий красный цвет и в отражениях, и в преломлениях. Оттенки подбираем, ориентируясь на референс-материалы и бокал на столе.
Пора перебраться на природу и поговорть о круговороте воды, а точнее визуализировать водоемы. Жидкости в них несколько больше, чем в бокале, и чаще всего она динамична. Осмотримся на месте: перед нами река или ее малая форма — ручей. Понятно, что все рассмотренные ранее подходы тут нам не помогут. На первый взгляд задача кажется гораздо более сложной — воды ведь во много раз больше. Однако при моделировании реки нет нужды создавать брызги или уделять внимание динамике отдельных струй.
Подбираем фотографии ручейков и рек и начинаем их внимательно рассматривать, мысленно деля всю водную поверхность на зоны с различными свойствами. Возле берега, где дно близко к поверхности, оно просматривается гораздо лучше, чем в глубине. К берегу прибило пену, на поверхности воды небольшая рябь от ветра, причем интенсивность ряби в разных местах водной глади различная. Картинки, знакомые нам с детства, которые нарисовала природа. А как получить всё это в 3D? Как создать все разнообразие природных проявлений и соединить в единое и неделимое целое, в одну картинку, чтобы нарисованная вода притягивала взгляд зрителя, как передать задуманные погодные условия, настроение сцены?
Наша задача — посредством компьютерной графики передать весь спектр изменений на поверхности водоема. Тут просто напрашивается метод создания поверхности при помощи текстур. В любом «большом» редакторе 3D-моделирования есть инструменты для перенесения карты высот на поверхность. Если требуется карта большего разрешения, чем вы можете себе позволить (например, при попытке создать рельеф поверхности целого озера, визуализируемого для печати A3 с разрешением 300 dpi, с учетом разного характера поверхности на различных его участках), имеет смысл смешать по маске несколько различных текстур. Именно маска со сравнительно невысоким разрешением создаст участки волнения, мелкой зыби и абсолютно гладкие. А повторяемые под маской текстуры зададут форму и высоту волн.
Теперь, когда у нашего водоема появился объем, на глаз можно определить глубину реки и силу ветра. Далее переходим к прорисовке деталей, которые придадут индивидуальный характер нашему природному ландшафту. Перебираемся ближе к берегу. Смотрим на фотографии. Обычно здесь заметна пена прибоя. Опять же в зависимости от объема водоема, природного ландшафта и, разумеется, погодных условий задуманной сцены определяем ее интенсивность. Чтобы реализовать нашу задумку, участки пены возле берега можно создать при помощи карты прозрачности и, при необходимости, текстуры пены, аккуратно перерисованной с фотографии.
Теперь все внимание на берега и дно. Берега будут отражаться или затемнять наш водоем. Если добавить на дно детали, которые будут выступать из воды, то эффекты преломления окончательно убедят зрителя в реальности данного пейзажа.
Перейдем от сравнительно гладкой водной поверхности речки к бушующему океану. И вновь обратимся к фотоматериалам, почувствуем себя Айвазовским и визуализируем шторм.
Как обычно, сначала насобирайте референс-картинок. Чем больше, тем лучше. Есть репродукции картин из Русского музея? У нас были выдающиеся маринисты! Фотографии? Очень хорошо! Смотрите внимательно: волны на самом деле довольно сложная штука. Явно недостаточно просто создать гармонические колебания поверхности — на каждой волне множество колебаний второго и третьего порядка, у них разная форма и динамика. Что нам говорит наука? Крупные валы в открытом море близки к гармоничным синусоидам, но на их поверхности волны второго порядка образуют свой причудливый рисунок, который, в свою очередь, покрыт рисунком мелкой зыби и, возможно, клочьями пены.
Крупные водяные валы следует моделировать по-честному, применяя соответствующие техники. В настоящее время существует целый ряд специализированных программных средств для создания подобных поверхностей, есть они и в составе «больших» программ.
Волны второго порядка имеет смысл сделать по технологии, которую мы применяли для создания зыби на поверхности реки. Волны третьего порядка создадим при помощи процедуры выдавливания поверхности по карте высот, применив в качестве текстуры процедурную карту. И подключаем вдохновение, раз уж на Айвазовского посягнули. Эксперименты с настройками позволят создать нам подходящую процедурную карту. Работа может показаться утомительной, но мы назовем ее кропотливым трудом. Зато теперь мы не ограничены рамками заранее отрисованной текстуры. А вот если бы поленились, то гарантированно столкнулись бы с проблемой повторяемости рисунка волн. Процедурную карту можно создать для сколь угодно протяженной поверхности, и каждая волна будет оригинальной.
Смотрим на референс-картинки. Без «барашков» море не море. Создаем мелкую рябь и пену с помощью карт прозрачности и bump-карты. Есть где реализовать свой творческий потенциал!
Вот ваше море-океан и готово: бурлит, волнуется, живет. Чего мы, собственно, и хотели добиться.
«Вода, вода, кругом вода!» Как и обещали, мы рассказали о некоторых законах физики и секретах 3D-программ, которые позволяют с легкостью, а главное — с удовольствием создавать разные жидкости, не дожидаясь милости от природы.
on3D.ru — проект 3D-анимации и компьютерной графики РА SOLEANS