Море, волны...

На сей раз речь пойдет о море. Я протяну руку помощи всем заблудшим душам, которые стремятся cмоделировать воду.

Вот готовый видео клип...

Если же вам невмоготу ждать, пока он загрузится, взгляните на эту картинку:


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



У вас получится нечто в этом роде, фактически, то же самое. Мы еще недостаточно продвинулись, чтобы можно было что-нибудь напутать. Затем следует применить модификатор mesh edit. Теперь нужно сделать волны. Прежде всего, нужно выбрать грани, которые будут для этого нужны. Конечно, можно выбрать их и вручную, но это доставит большое неудобство в случае, если захочется поменять положение камеры. Воспользуемся для этого модификатором volume select. Таким образом, мы сможем динамически выбирать грани, содержащиеся в контуре (gizmo). Установите параметры модификатора select faces и cylinder selection. Поскольку мы имеем дело с плоским объектом, вы можете обнаружить, что если установите гизмо слишком маленьким, то ничего не выберется. Если вы проведете 2D масштабирование в плоскости X/Y, то получите следующее изображение:

Теперь у нас выбран небольшой участок, состоящий из граней. Перед использованием модификатора volume select, я установил видимость всех граней сетки, чтобы видеть все происходящее. Затем я применяю к выбранной области модификатор tesselate с 2-мя или 3-мя итерациями. У вас должно получиться следующее:

Посередине круга появится густая сетка. Наступила пора сделать волны. Это можно было бы сделать при помощи модификатора wave, но, боюсь, тогда придется слишком много думать. Итак, воспользуемся пространственными волнами. Сейчас я собираюсь пристегнуть три волны- одну очень большую, которая изобразит движение типа прилива, и еще две маленькие почти одинаковые волны, повернутые на разные углы относительно большой волны. Не забудьте анимировать фазу волн, чтобы было видно, как они движутся. Я использовал очень небольшую фазу- до 3 на 500 кадров. Постфактум, мне кажется, что это слишком долго, но, в общем, получилось ничего. Фаза большой волны должна быть совсем маленькой. Имейте в виду, что объекты, движущиеся медленно, кажутся больше.

Это картинка с волнами.

Не забудьте связать волны с поверхностью воды, - воспользуйтесь для этого кнопкой . Поскольку воздействие будет оказано только на мозаичные участки (tesselated), внешняя область круга останется ровной, то есть горизонт будет спокойным. Если же вы хотите увидеть волнение и по краям, как в пруду, то ничто не мешает вам применить tesselate после mesh select.

Чтобы добиться натурализма, добавим текстуру. Итак, какие же у воды свойства? Только не говорите, что она мокрая. Она прозрачная, зеркальная, и искажает предметы, когда смотришь сквозь нее. Включаем редактор материалов. Создаем новый материал water. Задаем прозрачность 20%- не стоит задавать 0, поскольку вода, все-таки, не совсем прозрачна. Теперь установим цвета для diffuse и ambient- темно синий и очень темно синий соответственно. Чаще всего вы не будете видеть эти цвета, но все равно нужно их определить. Для цвета specular назначьте белый . Вода блестит, поэтому определите нужным образом параметр shineness. Пусть у графика яркости будет такой же высокий пик, как на рисунке ниже.

Скопируйте все установки с картинки, за исключением supersample.

Созданные нами пространственные волны создадут движение воды, но у реальной воды бывает куда более сложная текстура поверхности. Чтобы решить эту проблему, прибегнем к помощи bump mapping. Для тех, кто не знает, что это такое, - bump mapping- это создание иллюзии текстуры для бедных- то есть без реального ее моделирования. Классический метод создания текстуры воды, - использование карты шума (noise). Мы воспользуемся этим приемом в несколько переиначенном виде. Мы построим двухуровневую карту. Для этого я взял карту mix, нажав на кнопку рядом c надписью bump и выбрав ее из списка. Карта типа mix предназначена для смешивания между собой двух исходных карт. Перейдите к первой компоненте и выберите шум. Назовите эту карту "Big noise". Установите размер для шума приблизительно 25. Затем перейдите ко второй компоненте, снова выберите шум и назовите карту "small noise". Установите размер этого шума в 1 и поднимите нижний порог до 0.4. Это нужно, чтобы изменить разницу между белым и черным. С такими параметрами мы получаем очень темный фон с ярко-белыми вкраплениями. Вернитесь к смешанной карте и установите соотношение между двумя типами шума. 0 означает присутствие только шума "big noise", а 1- что у вас используется только "small noise". Я воспользовался величиной в районе 0.1- много "big noise" с едва заметным налетом "small noise".

С этим материалом осталось сделать еще пару фокусов, - добавить немного отражающей способности и пустить рябь. В реальности отражающая способность зависит от угла, под которым мы смотрим на воду. Если вы смотрите прямо сверху, то она вообще почти ничего не отражает. Но если вы посмотрите под углом, то отражающая способность возрастет. Я мог бы написать выражение, связывающее отражающую способность с углом, под которым размещена камера, но поленился. Это была бы довольно трудная работа, поэтому я решил выбрать такое значение параметра, которое подошло бы во всех случаях. Прежде всего, необходимо чтобы синий цвет отчетливо просматривался во всех случаях, поэтому я установил значение 20%.Для отражения я собирался воспользоваться готовой картинкой, но, потом решил, что сгенерированное отражение будет иметь лучшую детализацию. На этом этапе нужно выбрать, что именно будет отражаться, и настроить окружение. Я выбрал в редакторе материалов пустой слот и нажал кнопку "get material". Затем я выбрал из списка bitmap и взял для отражения картинку с облаками. Стоит удостовериться, что mapping type имеет параметры environment и spherical. Чтобы усложнить картинку, я несколько раз ее размножил. Теперь надо перейти в environment setting в меню render. Нажмите на кнопку рядом с надписью background и перейдите в редактор материалов. Выберите текстуру облаков. Это означает, что в воде будут отражаться облака. Теперь надо сделать рябь. Это называется рефракцией. Существует (по крайней мере, в 3dmax 2.5) три вида рефракции:
1. refelect/refract
2. thinwall refraction
3. raytraced.
Поверьте, я перепробовал все, причем неоднократно. Но лучшим в этой ситуации оказалась thinwall. Этот вид хорош еще и тем, что у него мало настроек. Я просто установил bump effect =3, чтобы больше внимания уделялось карте неровностей. Уровень рефракции я установил равным 50%, а IOR (индекс рефракции)- равным 1.8. Я знаю, что это- не IOR воды, но выглядело все прилично.

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

Затем я поместил внутрь камеру. Вод вид из этой камеры:

Вот и все. Еще я добавил немного motion blur для воды, взяв стандартные значения. Затем запустил рендеринг через video post, воспользовавшись фокусом lensFX (который обламывается 9 раз из десяти, но на этот раз все прошло гладко). Возможно, если бы я переделывал это сейчас, то сделал бы волны немного побыстрее, но в остальном все получилось вполне прилично.

358 0 850 3
2
2008-07-01
норм
2009-11-11
сенкс, помогло
RENDER.RU