Как в 3д макс сделать рябь на воде

Обновлено: 03.07.2024

О моделировании водной поверхности в MAX'е написано достаточно много. Совсем простенькие примеры (вроде тех, что описаны в учебниках), если честно, производят впечатление скорее унылое. Качественная модель может потребовать значительных аппаратных ресурсов, создания специальных материалов, применения плагинов, не входящих в стандартный набор MAX и проч. Тем более обидно, если в итоге, после всех стараний и затрат, море получается. хм. мягко говоря. всё равно достаточно условным. Cтатичную картинку ещё можно «вытянуть» различными средствами компьютерной графики, но с анимацией в таком случае – просто беда. С другой стороны, анимация адекватной, но сложной модели морской поверхности может стать опять-таки проблемой, когда рендеринг одного кадра занимает хотя бы больше минуты процессорного времени.

Я попытался создать простую повторяемую анимируемую модель морской поверхности, используя стандартные материалы, стандартное освещение и стандартный рендеринг; я принял во внимание наиболее общие оптические свойства водной поверхности и постарался хотя бы имитировать эффекты, недостижимые без применения каустики (от которой я также отказываюсь ради сведения к минимуму времени визуализации); за пределами задачи остаётся и моделирование геометрии поверхности моря (а, следовательно, и крупных волн, «барашков» и проч).

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

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

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

. море можно превратить в тропический океан.

. коли придет желание изобразить какую-нибудь эффектную марину:

Короче. понадобится морской клип - не обязательно отправляться на Карибы: если не всё, то многое можно нарисовать дома ;) Тут я разместил для иллюстрации flv-ролик, но, видать, скрипт какой-то кривой - показывает через раз. Ну не Web я мастер. Впрочем, по этой ссылке ролик можно скачать и посмотреть любым flv-проектором - коли в браузере его не видно. Хм.

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

Поэтому при изложении приёмов построения модели я наиболее подробно остановлюсь, помимо характеристик материала воды, именно на освещении дна. В остальном же ограничусь достаточно беглым изложением этапов создания моря, благо в них нет ничего нового для освоивших азы обращения с приложением MAX. Ради воспроизводимости результата будут упомянуты (наряду с важными) в том числе и конкретные значения некоторых второстепенных параметров, мало влияющих на итог. Впрочем, какие именно параметры считать важными, а какие - второстепенными, заранее определить довольно сложно. Зыбкая это материя - морская поверхность.

Моделирование водной поверхности

Перед моделированием собственно водной глади создам виртуальный «мир» с небом и поверхностью будущего дна. Это необходимо, поскольку в будущем водоёме должно же отражаться небо; а вот там, где, по прихоти играющих волн, поверхность воды становится прозрачной, должно просвечивать дно.

Завожу геосферу радиусом 800 метров (этого, полагаю, хватит) с координатами (0,0,-105) (все линейные размеры даются в метрах).

Воздействую на неё модификатором EditPoly, выделяю все полигоны и обращаю нормали в свитке EditPoligons (это необязательно, но удобно – чтобы не беспокоиться впредь специально о том, чтобы источники освещения сцены не закрывались этой нашей «небесной твердью»). Далее применяю модификатор UVW Mapping, выбрав в его свитке Parameters опцию Spherical – чтобы иметь возможность управлять нанесением текстуры.

Текстуру для неба можно сочинить в Photoshop’е или в каком-либо другом графическом редакторе, чтобы получилось что-то в этом роде:

Надеюсь, что приёмы создания «бесшовных» картинок вами уже усвоены, если же нет – постарайтесь, чтобы камера не смотрела в неудачную часть «небес». Создаю первый материал модели – для небесной сферы. Это - стандартный материал, использующий растровую текстуру в карте Diffuse Color с весом 90, Self Illumination – 100 и значениями цветов Ambient и Diffuse 18 42 56 (голубой) и 120 190 230 (синий) соответственно. Распределение света по Blinn’у; значения для блика (Specular Level, Glossiness и Soften) - 0, 0, и 0,1 соответственно. Впрочем, поскольку в данном материале используется самосвечение на 100%, последние параметры не столь уж важны (вообще большинство параметров, равно как и выбор исходного материала для текстуры небес определяются задачей композиции и могут «плавать» в достаточно широких пределах). Присваиваю нашей геосфере этот материал (я так и назвал его «небо»). Ставлю точечный источник света. Тени отключены, интенсивность – 1, координаты – 0,0,0. Назову и его также - «небо». Единственное его предназначение – освещать купол небес

Помещаю направленную камеру с координатами x=150, y=141, z=17, объективом 46мм и «мишенью» в области x=144, y=-60, z=-15. Самое время посмотреть, что получилось в поле зрения камеры. Так, ничего особенного, всё ожидаемо… небо вроде бы готово.

Дном служит плоскость 2000м на 2000м с координатами x=162м y=10м z=-7м. Материал для дна – также стандартный. За основу я взял растр SPONGE.JPG из библиотеки 3DSMAX. но вообще-то можно использовать любое изображение каменистой или песчаной поверхности, сделав его бесшовным:

Значения Ambient и Diffuse 26 27 10 (тёмно-зелёный) и 182 219 119 (салатный) соответственно. Распределение света по Blinn’у; значения для блика (Specular Level, Glossiness и Soften) - 0, 10, и 0,1. Используются карты текстур Ambient Color (50), Diffuse Color (20) и Bump (140). В моём случае используется тайлинг 25 в свитке Coordinates и инвертирование в свитке Output каждой карты:

Но это всё, конечно, зависит от того, что именно вы возьмёте в качестве основы для текстуры дна. Присваиваю этот материал (назову его "дно") плоскости – дно готово.

Для имитации солнечных «зайчиков» на донной поверхности нам понадобится отдельный источник света с анимированной картой освещенности. Она является смесью типа Mix двух текстур типа Noice с анимированными фазами. Поскольку солнечные блики на дне – очень важная часть модели, расскажу об этом подробно (впрочем, тем, кто освоил приёмы составления и анимации сложных материалов, львиную долю моих дальнейших словопрений можно смело опустить, обратив внимание лишь на структуры карт и параметры текстур).

Щелкаю по клавише None в поле карты Diffuse; в раскрывающемся окне материалов Material/Map Brouser выбираю вариант Noise и подтверждаю выбор кнопкой OK:

Установки карты типа Noise «по умолчанию», которые будут изменены, показаны обводкой. Устанавливаю новые значения: выбираю Blur – 2, Blur offset – 2, Noise Type – Turbulence, Levels – 6, Size – 800:

Для создания составного материала щелкаю по кнопке Noise, в раскрывающемся браузере материалов/карт выбираю вариант Mix, подтверждаю выбор кнопкой OK. В ответ на вопрос, что делать со старой картой и не сделать ли её компонентом новой (по умолчанию), щелкаю OK

Возвращаюсь в свиток Mix Parameters, чтобы добавить второй компонент карты Mix, для чего щелкаю по кнопке None, в окне материалов Material/Map Brouser выбираю вариант Noise и подтверждаю выбор кнопкой OK; установки по умолчанию изменяю следующим образом:

Раскроется редактор построения графика анимации. Каким-нибудь инструментом (например, карандашом) рисую кривую из двух точек. Затем, выделяя их, устанавливаю значения для первой, например, точки номер кадра – 0, величина фазы – (-9); для второй – 100 и 0 соответственно.

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

Дно есть, блики есть, осталось позаботиться, чтобы источник освещения неба освещал только небо, а источник освещения дна – только дно. В свитке General Parameters источника света «грунт» в поле инструментов Shadows щелкаю по кнопке Exclude… и в раскрывающемся окне Exclude/Include выделяю объект «небеса»: мне вовсе ни к чему блики на сфере, имитирующей небо. Потом щелкаю по кнопке >> и по OK.

Окно свернётся. Далее ту же процедуру произвожу с источником света «небо», потому что мне вовсе ни к чему засвечивать дно лишним светом, предназначенном для неба. Проведу пробный рендеринг. У меня получилось вот что:

Теперь нужно «накрыть» дно с анимированными бликами анимированной водной гладью. Создаю плоскость размерами 2000м на 2000м и координатами 0, 0, 0. Назову её «море». Исключаю этот объект из воздействия источников света «небо» и «грунт» так, как уже описывал ранее. Для создания материала водной поверхности выделяю свободную ячейку в редакторе материалов Material editor и так и называю этот материал – море. Присваиваю этот материал только что созданной плоскости. Изменяю установки по умолчанию в свитке Blinn Basic Parameters в поле инструментов Highlightes. Открываю свиток Maps и меняю «влияние» карты Bump с 30 на 20. Теперь займусь созданием материала, имитирующего волны и рябь на воде.

Щелкаю по кнопке None карты Bump вызываю броузер карт и материалов, выбираю вариант Mix.

Перехожу на 2 уровня выше, дважды щелкнув по соответствующему значку на линейке инструментов редактора материалов, и выбираю в свитке Maps следующую характеристику материала «море» - Opacity. Это очень важная характеристика материала: она обеспечивает изменение прозрачности поверхности воды. Чем меньше угол, под которым мы смотрим на водную гладь, тем менее она прозрачна, и наоборот. В свою очередь, чем дальше от камеры тот или иной участок морской поверхности, тем меньше и угол, под которым эта поверхность видна. Поэтому естественно использовать в этой карте материала текстуру типа Falloff.

В окне материала Falloff выбираю спад по Френелю и модифицирую кривую в свитке Mix Curve так, как показано на рисунке. Сбросив – чтобы волны и рябь не мешали обзору - флажок Bump в свитке Maps материала «море», стоит сделать пробный рендеринг и убедиться, что морская поверхность и впрямь становится все менее и менее прозрачной по мере удаления к горизонту. Если характер этого изменения покажется вам неестественным, можно скорректировать его, изменяя кривую карты Falloff, сдвигая границу видимости дна ближе или дальше от горизонта, регулируя степень размытости этой границы.

Вот что получилось у меня. Вроде бы сносно.

Моделируя отражение, я использую стандартный приём, когда карта Reflection составляется из материала типа Raytrace, который маскируется материалом типа Falloff, только здесь обратная ситуация: чем дальше к горизонту, тем лучше водная поверхность отражает окружающий мир (и в первую очередь небо). Составляю «каркас» материала. Для начала завожу в свитке Maps редактора материалов в строчке Reflection текстуру типа Mask. А потом то же самое делаю с компонентой материала: щелкаю по кнопке None компоненты Mask и в раскрывающемся списке карт и материалов выбираю вариант Falloff

В результате раскроется поле редакции материала Faloff. Параметры по умолчанию меняю примерно так же – но не тождественно – как я уже делал для карты прозрачности Opacity несколько раньше. Критерий подбора тот же самый: меняя характер кривой смешивания материала Falloff добиться естественного изменения отражательной способности «моря» по мере удаления поверхности воды к горизонту.

Поднявшись на уровень выше по иерархии вложенных материалов (использую значок перехода ), я вновь открываю в редакторе материалов текстуру типа Mask. Щелкаю по кнопке None компонента Map и выбираю вариант Raytraced. Работа с картой Reflection закончена: в нашем примере я не изменяю ни один параметр, установленный в этой текстуре по умолчанию.

Вот, что получилось, если в списке карт Maps материала «море» оставить активной только карту Reflection.

Материал для моря почти готов. Есть ещё одна характеристика, без которой анимация воды на ближнем плане будет неубедительна. Я имею в виду рефракцию. Эта карта, в сочетании с анимированным Bump’ом, обеспечит легкое ритмичное искажение дна, которое мы обычно наблюдаем, когда смотрим на дно сквозь спокойную, чуть колыхающуюся, прозрачную воду. Я выбрал вариант Thin Wall Refraction с параметрами Thickness 0 и Bump Map Effect 0,5. Сила воздействия этой карты - 25%. Таким образом, материал поверхности воды составлен из карт следующих текстур; их параметры я уже описал.

Пожалуй – пока не забыл – поменяю цвета материала «море»: ведь я моделирую не ласковое Терренское, не знойное Карибское, а прохладное, хоть и летнее, Балтийское море. Поэтому цвета материала я меняю с изумрудного на серый.

Чтобы в соответствующих ракурсах на волнах появились солнечные блики необходимо, натурально, светило. В качестве солнца использую стандартный точечный источник света, размещаю его приблизительно там же, где находится источник бликов на дне. Тени, интенсивность, цвет «солнца» оставляю – по умолчанию (только тени надо будет включить). Ну и исключаю из действия «солнца» всё, кроме «моря». Вот теперь настало время для визуализации. На всякий случай откройте закладку Renderer в окне Render Setup и убедитесь, что в установках визуализатора активен режим Auto-Reflect/Refract and Mirrors. А вот птичку в Antaliasing можно снять. Если понадобится увеличить качество картинки, используйте отключенные по умолчанию режимы Super Sampling: время визуализации возрастёт, зато качество результата вас наверняка приятно удивит.

Благословясь, учиняем рендеринг.

Вроде сносно получилось. Заняло всего семь секунд на компе с 2GHz процессором далеко не «навороченной» сборки минимум трехлетней давности. Обратите внимание на живописные сочетания «зеркальности» с придонными бликами в пограничных (на рубежах отражения и проницаемости) областях изломанной рябью морской поверхности. Игра света, теней и солнечных зайчиков вкупе с разбитым волнами отражением небес создаёт удивительное ощущение достоверности (не смотря на примитивные средства, использованные при моделировании).

Чтобы продемонстрировать адекватное действительности изменение свойств материала в зависимости от ракурса я поместил пару камней и анимировал положение камеры. Вот что вышло:

Модель можно использовать как своего рода исходную «болванку», варьируя характеристики освещения и теней, а равно и материалов, добавляя атмосферные эффекты и тп. В итоге можно получить, как я уже говорил, самые разнообразные результаты. Наконец, применяя известные приёмы преобразования анимируемой геометрии поверхности воды, можно дополнить её настоящими волнами и проч.

Но это уже за пределами темы… Впрочем, я, кажется, повторяюсь? Значит, самое время закругляться.

alt

Материал воды достаточно легко настраивается. Например, в CoronaMtl для этого понадобится изменить всего несколько основных параметров. Для большей реалистичности можно добавить одну стандартную процедурную карту. И после таких несложных действий можно получить отличный финальный результат. Но в статье будут описан и другой, более сложный метод настройки прозрачного материала воды.

Поверхность воды можно создать из одного полигона. В качестве геометрии для воды можно использовать Plane или Box. Они находятся в меню Create – Geometry – Standard Primitives.

Plane

1. Основные настройки материала

Откройте Material Editor (горячая клавиша «M») и создайте материал Materials – Corona – CoronaMtl. В материале нужно задать следующие параметры:

Изменять цвета и снижать Diffuse Color не обязательно. При полной прозрачности влияние цветов мало заметно. По настроенным свойствам материал напоминает стекло. Но отличие от стекла заключается в параметре IOR, величину которого можно найти в Сети.

С помощью указанных настроек получится материал чистой воды. А как отрендерить получившийся материал вы узнаете из статьи «Как сделать рендер в 3ds Max».

CoronaMtl

2. Bump и Volumetric

Для большей реалистичности можно создать рябь на поверхности воды.

Волны или рябь можно сделать, назначив процедурную карту Noise к параметру Bump. В зависимости от сцены, может понадобиться изменить интенсивность выдавливания в CoronaMtl – Maps – Bump. Также понадобится изменить размер карты Noise – Noise Parameters – Size.

Bump

Карта Noise создаст неровности, которые можно увидеть на рендере.

В зависимости от угла обзора вода может иметь разный цвет. Например, при наличии Corona Sky, если опустить камеру ниже, то вода будет выглядеть более синей.

Noise

Если вода должна иметь более насыщенный цвет или быть грязнее, то это можно установить с помощью Volumetrics and SSS. Для этого понадобится установить Mode: Volumetric scattering, затем установите нужный цвет Absorption Color. Для включения эффекта нужно увеличить значение Distance.

Distance нужно делать достаточно большим, чтобы материал был не слишком темным. Универсального значения Distance нет. Для каждой сцены и каждого материала жидкости придется подбирать его самостоятельно.

На рендере слева – вода с включенным свойством Volumetrics scattering, слева – материал без указанного свойства.

Volumetrics scattering

3. Особенности Refraction Color и Caustics

Refraction Color может придать цвет толще воды, как Absorption Color. Однако Refraction Color не создает объемного цвета. Он будет одинаковым по всему объему воды. Volumetrics and SSS усиливает интенсивность цвета в зависимости от «глубины».

Refraction Color

Установка флажка Caustics включает физически корректный расчет каустики для всего, что имеет прозрачность. Настраивать каустику практически нельзя. Более того, изменение параметров типа Volumetrics scattering или Refraction Color могут практически не влиять на материал.

Caustics

Для улучшения каустики можно установить несколько скрытых настроек Corona Renderer. Для этого нажмите Render Setup – System – System Settings – Enable devel/debug mode. Затем нужно установить Performance – Development/Experimental Stuff – Render engine: Bidir/VCM. Установив этот движок, перейдите в Bidirectional Pathtracing/VCM Render Engine – Use MIS – Mode: [VCM] Vertex connection and merging.

Экспериментальные настройки

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

Если видео ниже не отображается, отключите блокировку рекламы на этом сайте и обновите страницу. Все уроки тут встраиваются с Youtube и почему-то блокировщики считают их рекламой.

В этом уроке разберем, как быстро и просто настроить материал воды в 3ds Max (Corona Renderer).


Разновидностей воды существует много: чистая вода в стакане, голубая вода в бассейне, морская вода насыщенного синего цвета, речная вода, имеющая зеленоватый оттенок и т.д.

Способов создать воду также существует довольно много: от простой настройки материала до использования скриптов, которые генерируют волны по заданным параметрам.

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

Я смоделировал небольшую тестовую сцену. В ней есть небольшой бассейн, поручни и подсветка (чтобы были видны преломляющие свойства воды).


В качестве объекта, к которому я буду применять материал воды, создал обычный Box (куб), по размерам чуть больше объема бассейна. Важно использовать именно объемный объект для создания воды. Плоские объекты не дадут эффекта глубины.


Таким образом мы получим материал обычной чистой прозрачной воды


Чтобы придать воде какой-либо оттенок, нужно регулировать настройки блока Volumetric absorbtion and scattering (объемное поглощение и рассеивание света).

Например, у меня толщина воды составляет 2000 мм, и чтобы получить прозрачную воду с легким оттенком, я задал параметр Distance 5000 мм, то есть в 2,5 раза больше толщины объекта.

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


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


С другой стороны, метровые волны при визуализации архитектурных проектов тоже далеко не всегда уместны.

Так что остановимся на создании именно легкой ряби на глади воды.



Вот так будет выглядеть рябь на воде (на рендерах выше она также присутствовала):


Вот так выглядит материал воды для бассейна в 3ds Max днем и ночью:



5 октября, 2010 3Dfox

Не большой урок по 3ds max как можно быстро и без проблем создать водную поверхность 3d max. Для создания 3d воды я использовал 3Ds Max и немного свободного времени. И так приступим к созданию нашей 3d воды.

Поверхность воды в 3ds Max

Откроем наш 3Ds Max и установим Mental Ray в качестве рендеринга. Нажмем на клавишу F10, чтобы открыть окно Render setup. Откроем в свитке закладку common и Assign Renderer и установим Mental Ray в качестве основного рендера.

Поверхность воды в 3ds Max

Далее настроим систему координат.

Поверхность воды в 3ds Max

Далее откроем редактор материалов (клавиша М). В Material/Map Browser выберем Arch & Design.

Поверхность воды в 3ds Max

В Main material parameters вкладке Diffuse установим цвет с параметрами R = 0.439, G = 0.522 and B = 0.486 и Reflectivity to 0.7.

Поверхность воды в 3ds Max

Далее откроем Special Purpose Maps, затем в параметрах Bump откроем Material/Map Browser и выберем Ocean (lume).

Поверхность воды в 3ds Max

Установим параметры Ocean (lume):

Largest = 0.25m
Smallest = 0.005m
Quantity = 5
Steepness = 6.25
Plane Distance = 25 m
Directed = Yes
Direction angle =150
Wave Speed = 0
Flats = No

Поверхность воды в 3ds Max

Затем откроем Environment и перетащим созданный градиент карты на Environment Map.

Поверхность воды в 3ds Max

Поверхность воды в 3ds Max

Читайте также: