Porsche — Underwater road
3d award

Создание поверхности воды у берега

 diablo_ 388.03587.2 19 января 2006 в 00:00

Вступление

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

1. Окружение

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

2. Вода у берега

Честно говоря, это оказалось самым сложным в работе. Сначала определимся с материалом отражения. Мы хотим сделать воду, набегающую на песок, на ней много маленьких волн, геометрическое задание которых (с помощью сетки) приведет к очень большому количеству полигонов в сцене. Последующее использование Raytrace в качестве отражения повергнет в глубочайшую задумчивость (переходящую в летаргический сон) самый современный процессор, поэтому от такого способа мы вынуждены отказаться, хотя он и является наиболее универсальным. Мы же изберем другой путь - представим воду в сцене как QuadPatch, а в качестве материала отражения выберем Flat Mirror. Почему именно этот материал? Благодаря его двум особенностям: возможности искажать отражение в зависимости от Bump и с помощью Blur. Но, в тоже время, это нас очень ограничивает - мы не сможем изменить геометрию воды, она останется плоской, к тому же искажения отражений при использовании Bump не совсем точны. Что ж, попробуем справиться с этим, создав для начала правильные текстуры прозрачности и bump.

Текстуры

Для создания текстур нам не понадобиться каких-либо художественных способностей, а только владение основами Photoshop и немного терпения. Все, что будет нарисовано, получено опытным путем в результате проб и ошибок, поэтому, наверняка, можно создать и более "правильные" с точки зрения реалистичности текстуры.
.
Откроем Photoshop и создадим новое изображение где-нибудь 2000х1300. Закрасим его белым и на отдельном слое нарисуем линию воды у берега. Закрасим часть, соответствующую берегу, черным. Добавим несколько серых пятен у берега для создания "отмелей". Это будет текстурой прозрачности.

В этом же проекте создадим bump карту. Для этого на новом слое проведем мягкой кистью черную линию, повторяющую береговую, но выше, там, где у нас уже будет вода. Это будем граница песка и воды. Сделаем белый Noise на этой линии, который будет задавать проступающий песок или неровности воды на самой границе .

Теперь нарисуем волны. Каждая волна представляет из себя чуть искривленную линию (у нас - серую), имеющую несколько неравномерную толщину и прозрачность и плавно исчезающую к краям. Как ни странно, но добиться нужной линии (волны) достаточно сложно. Автор нарисовал огромное количество разнообразного вида червяков, прежде чем добился, наконец, приемлемого результата. Создав несколько различных волн, сдублируем их, получив:

Но волны идут не только параллельно берегу. Поэтому скопируем слой волн, повернем его на 90 градусов, увеличим примерно в 2.5 раза и сделаем его более прозрачным. Теперь опять сделаем тоже самое, но увеличим уже гораздо сильнее и повернем под углом градусов 30 к линии берега. При этом получим следующее:

Назовем это Bump_map, и, в очередной раз, убедившись, что Айвазовского из нас не получится, закрываем Photoshop и переходим в МAX.

Материал воды

И так, вода у берега будет у нас сделана из QuadPatch. Берег тоже будет QuadPatch, но совсем чуть-чуть ниже и абсолютно черный. И то, и другое наклоняем чуть-чуть в сторону моря.

Теперь начинается самое сложное. Создаем материал воды.



Начнем с прозрачности. Понятно, что мы ее уже нарисовали, но не все так просто. Во-первых, прозрачность воды зависит от угла, под которым мы на нее смотрим. Чем ближе к нам вода (начиная с некоторого угла или расстояния), тем она прозрачней. Во-вторых (здесь я немного утрирую), чем дальше от нас линия берега, тем она четче, а чем ближе - тем более размыта. Осознав весь трагизм создавшейся ситуации с прозрачностью (а ведь это далеко не самое сложное в нашем материале воды), приступим. Создадим карту прозрачности Bitmap. В качестве изображения для нее возьмем уже нарисованную нами прозрачность.
В зависимости от пропорций, которые имеет QuadPatch воды (полоска воды у берега длинная), сделаем соответствующий tiling (у меня он равен 6) по U-координате.
Зададим значение Blur = 10 (размытие линии берега вдали).

Теперь создадим Mix, взяв в качестве одной карты только что получившуюся, в качестве второй - такую же, но с Blur = 70 (размытие линии берега вблизи), а в качестве Mix Amount - карту Falloff.

Этим мы задали изменение размытия линии берега от расстояния.
Теперь полученный Mix мы берем в качестве map для карты Mask
В качестве маски берем опять карту Falloff, но с немного другими параметрами.

Таким образом, чем вода к нам ближе (начиная с некоторого расстояния), тем она прозрачней.

Теперь - Bump. Здесь все достаточно просто. В качестве Bump берем нарисованные нами в Photoshop многочисленные кривые полоски по маске Noise. Tiling соответственно тоже = 6. Маска по Noise делает наши волны немного "неправильными". Bump Amount = 700.

Теперь создаем карту отражений. Как уже говорилось выше, в основе ее будет Flat Mirror.

Но чем выше волна (или близость кромки берега), тем меньше (слабее) отражение. Поэтому опять делаем Mix. В качестве map1 берем Noise (как бы рябь в местах большой волны и у берега), в качестве map2 - наш Flat Mirror, в качестве Mix Amount - нарисованный нами Bump. Так как сила отражения воды противоположна ее прозрачности, то берем полученный нами материал по маске ранее сделанной нами прозрачности.
В принципе, то же самое надо сделать и с Specular Level - там, где вода прозрачней, блик волны на ней слабее, но это не имеет большого значения, потому что солнца как такового у нас нет.

Если кто-либо, кроме меня, не заснув на полпути, все же выполнил все описанное выше (а в этом я очень сомневаюсь J ), то он получил бы примерно следующее.

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

3. Волны

Здесь все гораздо проще. Волны не могут быть плоскими, а, следовательно, Flat Mirror мы применить не можем. Значит Raytrace. Но геометрия волн может быть не очень сложной, к тому же они все-таки далеко. Для создания одной волны возьмем Box с достаточным для последующего Edit Mesh количеством точек. С помощью Edit Mesh зададим основные выпуклости и впадины волны, а потом при помощи Displace сделаем небольшие неровности. В качестве карты для Displace возьмем опять Mix из двух noise_ов, различающихся размерами зерна. Если длины волны не хватает, и мы видим ее край, то сдублируем ее и положим "сбоку" еще одну такую же.
Материал волны гораздо прозаичнее, чем у воды. В качестве отражения - Raytrace(с глубиной трассировки = 1), Bump - dent

Считаем то, что у нас получается.

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

В качестве заключительного штриха добавим две полоски чистой воды вдали у берега. Сделаем это при помощи тех же QuadPatch. Материалом для них будет сильно упрощенный материал воды без bump и прозрачности.
Ну и, наконец, для тех, кто дочитал до конца - финальный просчет (уже с облаками).

4. Недостатки метода

1. Невозможность задания "неплоской" прибрежной воды. Все волны, неровности ее задаются при помощи Bump.
2. Не совсем корректное отражение Flat Mirror. Например, в данной сцене нельзя поставить камень близко к точке камеры - отражение его в воде будет неправильным, так как угол между направлением камеры и поверхностью воды будет достаточно большой.
3. Сложность анимации полученной воды.

Материал предоставлен: Андрей Иванов aka KleSk

Комментарии (Всего: 2)

Online|Offline shumik87 2.0 0.0 4 августа 2008 в 15:25 #0

Аватар shumik87
А DreamScape не нравится что ли? по-моему там такое в сто крат проще сделать

Online|Offline pspman 0.0 0.0 25 марта 2010 в 15:55 #0

Аватар pspman
че??? с render.ru стыбзили урок!!!
Что бы оставить комментарий вам необходимо войти или зарегистрироваться!

Советуем почитать

Моделирование световой сабли в стиле Steampunk. Часть 2.

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

Комментарии 2 Рейтинг 5 Просмотры 13 901 Автор: diablo_ 10 апреля 2014 в 19:17

Огонь с Fume FX

В этом уроке мы будем использовать Fume FX и 3d s max 9, чтобы сделать эффект огня.Fume FX - может использоваться с геометрией, частицами или без них. Fume FX используется, чтобы делать крутой эффект

Комментарии 38 Рейтинг 2 Просмотры 90 540 Автор: diablo_ 5 июля 2007 в 00:00

Создание мячика

Урок, по созданию футбольного мячика. Способ простой, но самый эффективный из всех что встречались.

Комментарии 15 Рейтинг 0 Просмотры 31 191 Автор: diablo_ 19 января 2006 в 00:00

Создание волейбольного мяча

На этом уроке вы научитесь создавать волейбольный мяч с помощью примитива Box (Ящик) с применением модификаторов.

Комментарии 7 Рейтинг 4 Просмотры 16 720 Автор: diablo_ 18 июля 2006 в 00:00

Фотореалистичный рендер с использованием Vray и Mental Ray

Фотореалистичное освещение – один из самых труднодостижимых аспектов при создании фотореалистичных изображений. Поэтому статья будет сосредоточена главным образом на рассмотрении легких методов достижения приемлемых результатов пользователями, даже при работе в относительно пустой / простой сцене. Одним из предварительных шагов реалистичного освещения сцены является создание четко различающихся (между темным и светлым) областей: это называется Глубина освещения.

Комментарии 9 Рейтинг 11 Просмотры 60 867 Автор: venik 23 июня 2013 в 13:31

3D моделиприслатьещё

Форумещё

Блогиещё

Популярные урокиещё

Реклама

3dmir.ru - Вся компьютерная графика
      www.megastock.ru