Прежде всего, хочется отметить, что предлагаемый способ создания воды ни в коем случае не претендует на универсальность. При его использовании есть достаточно много ограничений, определяемых, в основном, используемыми материалами. В конце изложения мы остановимся на некоторых из них. Также хочется отметить, что некоторые нюансы создания материалов в данной сцене были, при написании урока, опущены в связи большим объемом получившегося материала. Так как в данном уроке мы будем рассматривать только создание воды, то будем считать, что все остальное (небо, облака, камни и пр.) мы уже сделали. Создание некоторого окружения (хотя бы частично) именно до начала работы над водной поверхностью существенно облегчит задачу, так как при работе над материалом воды мы должны видеть отражение в ней чего-либо, причем (желательно) максимально реалистичного. При желании можно даже использовать фотографию, помещенную в качестве фона (горизонт фона и нашей сцены должны, конечно, совпадать), с последующей заменой ее на что-то, сделанное собственными руками. Честно говоря, это оказалось самым сложным в работе. Сначала определимся с материалом отражения. Мы хотим сделать воду, набегающую на песок, на ней много маленьких волн, геометрическое задание которых (с помощью сетки) приведет к очень большому количеству полигонов в сцене. Последующее использование Raytrace в качестве отражения повергнет в глубочайшую задумчивость (переходящую в летаргический сон) самый современный процессор, поэтому от такого способа мы вынуждены отказаться, хотя он и является наиболее универсальным. Мы же изберем другой путь - представим воду в сцене как QuadPatch, а в качестве материала отражения выберем Flat Mirror. Почему именно этот материал? Благодаря его двум особенностям: возможности искажать отражение в зависимости от Bump и с помощью Blur. Но, в тоже время, это нас очень ограничивает - мы не сможем изменить геометрию воды, она останется плоской, к тому же искажения отражений при использовании Bump не совсем точны. Что ж, попробуем справиться с этим, создав для начала правильные текстуры прозрачности и bump. Для создания текстур нам не понадобиться каких-либо художественных способностей, а только владение основами Photoshop и немного терпения. Все, что будет нарисовано, получено опытным путем в результате проб и ошибок, поэтому, наверняка, можно создать и более "правильные" с точки зрения реалистичности текстуры. В этом же проекте создадим bump карту. Для этого на новом слое проведем мягкой кистью черную линию, повторяющую береговую, но выше, там, где у нас уже будет вода. Это будем граница песка и воды. Сделаем белый noise на этой линии, который будет задавать проступающий песок или неровности воды на самой границе . Теперь нарисуем волны. Каждая волна представляет из себя чуть искривленную линию (у нас - серую), имеющую несколько неравномерную толщину и прозрачность и плавно исчезающую к краям. Как ни странно, но добиться нужной линии (волны) достаточно сложно. Автор нарисовал огромное количество разнообразного вида червяков, прежде чем добился, наконец, приемлемого результата. Создав несколько различных волн, сдублируем их, получив: Но волны идут не только параллельно берегу. Поэтому скопируем слой волн, повернем его на 90 градусов, увеличим примерно в 2.5 раза и сделаем его более прозрачным. Теперь опять сделаем тоже самое, но увеличим уже гораздо сильнее и повернем под углом градусов 30 к линии берега. При этом получим следующее: Назовем это Bump_map, и, в очередной раз, убедившись, что Айвазовского из нас не получится, закрываем Photoshop и переходим в МAX. Материал воды И так, вода у берега будет у нас сделана из QuadPatch. Берег тоже будет QuadPatch, но совсем чуть-чуть ниже и абсолютно черный. И то, и другое наклоняем чуть-чуть в сторону моря. Теперь начинается самое сложное. Создаем материал воды.
Теперь создадим Mix, взяв в качестве одной карты только что получившуюся, в качестве второй - такую же, но с Blur = 70 (размытие линии берега вблизи), а в качестве Mix Amount - карту Falloff. Этим мы задали изменение размытия линии берега от расстояния. Таким образом, чем вода к нам ближе (начиная с некоторого расстояния), тем она прозрачней. Теперь - Bump. Здесь все достаточно просто. В качестве Bump берем нарисованные нами в Photoshop многочисленные кривые полоски по маске noise. Tiling соответственно тоже = 6. Маска по noise делает наши волны немного "неправильными". Bump Amount = 700. Теперь создаем карту отражений. Как уже говорилось выше, в основе ее будет Flat Mirror. Но чем выше волна (или близость кромки берега), тем меньше (слабее) отражение. Поэтому опять делаем Mix. В качестве map1 берем Noise (как бы рябь в местах большой волны и у берега), в качестве map2 - наш Flat Mirror, в качестве Mix Amount - нарисованный нами Bump. Так как сила отражения воды противоположна ее прозрачности, то берем полученный нами материал по маске ранее сделанной нами прозрачности. Если кто-либо, кроме меня, не заснув на полпути, все же выполнил все описанное выше (а в этом я очень сомневаюсь J ), то он получил бы примерно следующее. Поставим SuperSampling получше, нажмем Render и, в зависимости от мощности нашего компьютера, пойдем пить кофе, смотреть телевизор, или приляжем на часок поспать. 3. Волны Здесь все гораздо проще. Волны не могут быть плоскими, а, следовательно, Flat Mirror мы применить не можем. Значит Raytrace. Но геометрия волн может быть не очень сложной, к тому же они все-таки далеко. Для создания одной волны возьмем Box с достаточным для последующего Edit Mesh количеством точек. С помощью Edit Mesh зададим основные выпуклости и впадины волны, а потом при помощи Displace сделаем небольшие неровности. В качестве карты для Displace возьмем опять Mix из двух noise_ов, различающихся размерами зерна. Если длины волны не хватает, и мы видим ее край, то сдублируем ее и положим "сбоку" еще одну такую же. Считаем то, что у нас получается. Таким же образом сделаем несколько "рядов" волн, при этом каждый последующий ряд, делая больше предыдущего. Будем делать это до тех пор, пока мы не дойдем до самого "горизонта". В качестве заключительного штриха добавим две полоски чистой воды вдали у берега. Сделаем это при помощи тех же QuadPatch. Материалом для них будет сильно упрощенный материал воды без bump и прозрачности. 4. Недостатки метода 1. Невозможность задания "неплоской" прибрежной воды. Все волны, неровности ее задаются при помощи Bump.
|