Суббота, 30.11.2024, 06:57

Меню сайта
Категории раздела
Моделирование [50]
Уроки по моделированию в 3ds max
Текстуры/Материалы [8]
Уроки по работе с текстурами/материалами в 3ds max
Анимация [12]
Уроки по созданию анимации в 3ds max
Освещение [4]
Уроки по освещению в 3ds max
Рендеринг [10]
Уроки по визуализации в 3ds max
VRay [20]
Vray уроки для 3ds max
Плагины [6]
Уроки по работе с плагинами в 3ds max
3ds max уроки:
Опрос
Какой программой 3d моделирования вы пользуетесь?
Всего ответов: 139
Статистика

Уроки

Главная » Уроки » 3Ds Max » Анимация

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


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


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


За пределами темы остаётся и моделирование геометрии поверхности моря (а, следовательно, и крупных волн, «барашков» и проч). Тем не менее получилась, на мой взгляд, довольно живая картинка.


Анимированное море *


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


Анимированное море *
Анимированное море *

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


Анимированное море *
Анимированное море *

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

Анимированное море *

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

Анимированное море *
Анимированное море *

Короче... понадобится морской клип - не обязательно отправляться на Карибы: если не всё, то многое можно нарисовать
дома wink.gif

Тут бы я разместил для иллюстрации flv-ролик, но, видать, тега нет под это... Впрочем, по вот этой ссылке
Ссылка удалена
ролик можно скачать и посмотреть любым flv-проектором - только не бейте за внешнюю ссылку в тексте. Хм.

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


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


Небо

Заводим геосферу радиусом 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 с анимированными фазами. Поскольку
солнечные блики на дне – очень важная часть модели, расскажу об этом подробно (впрочем, тем, кто освоил приёмы
составления и анимации сложных материалов, львиную долю моих дальнейших словопрений можно смело опустить, обратив
внимание лишь на структуры карт и параметры текстур).

Итак, выделяю любую свободную ячейку в окне редактора. В моём случае это - неиспользуемый покуда материал
Material #15 (вокруг ячейки появляется яркая белая рамка). Щелчком открываю свиток Maps. В раскрывшемся свитке
выбираю любую карту – например, Diffuse Color:
Анимированное море *
Щелкаю по клавише 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, одним из компонентов которого является уже созданный мной Map #217 (Noise).
В свитке Mix Parameters меняю установки как показано. Щелкаю по свитку Output и изменяю характер кривой
приблизительно так, как показано на рисунке.
Именно эта кривая определит в будущем нам вид и яркость границ сетки бликов на поверхности дна.
Анимированное море *
Возвращаюсь в свиток Mix Parameters, чтобы добавить второй компонент карты Mix, для чего щелкаю по кнопке None,
в окне материалов Material/Map Brouser выбираю вариант Noise и подтверждаю выбор кнопкой OK; установки по умолчанию
изменяю следующим образом:
Анимированное море *
Цвета Color#1 и Color#2 для шума устанавливаю на уровне 92 и 144 соответственно. Щелкаю по кнопке навигатора карт
редактора материалов, получаю блок-схему нашей будущей карты освещенности дна.
Надеюсь, у вас получилось то же самое... если вы, конечно,не заснули.
Анимированное море *
Стоит сразу же и анимировать этот материал. Проще всего это сделать так. Возвращаюсь в свиток Noise Parameters
какой-нибудь из компонент нашего материала Mix (например, Color 1, в моём случае это материал Map #217 (Noise)) –
щёлкаю по полю Phase и выбираю в раскрывающемся меню пункт Show in Track Vew
Анимированное море *
Раскроется редактор построения графика анимации. Каким-нибудь инструментом (например, карандашом) рисую кривую из
двух точек. Затем, выделяя их, устанавливаю значения для первой, например, точки номер кадра – 0,
величина фазы – (-9); для второй – 100 и 0 соответственно.
Анимированное море *
Пользуясь инструментами, которые я выделил на рисунке (не забудьте выбрать режим анимационной кривой таким,
чтобы фаза менялась в области за опорными точками графика, иначе море будет "играть" только в кадрах с номерами
от 0 до 100), получаю график анимации фазы для шума примерно в следующем виде:
Анимированное море *
Такой график изменения фазы шума при проекции со скоростью 15 – 30 кадров в секунду отвечает достаточно естественному
изменению бликов и волн нашего будущего моря. Теперь анимационное окно Selected можно закрыть.

Следует анимировать и вторую компоненту материала. В окне редактора материалов в свитке Noise Parameters только
что анимированного компонента Color 1 (материал Map #219 (Noise)) окошко Phase теперь содержит красную окантовку –
признак анимации фазы шума, лежащего в основе текстуры компонента.
Щелкаю в поле Phase и выбираю из выпадающего меню строчку Copy Animation.
Перехожу ко второму компоненту (в моём случае - это Color 2, материал Map #217 (Noise)), щелкаю правой кнопкой
мышки в поле Phase и выбираю пункт Paste Animation – Instance.
Анимированное море *
Теперь у меня анимированы оба компонента сложного материала Mix. Если мне не понравится темп анимации, достаточно
поправить её для одного компонента – и анимация второго претерпит аналогичные изменения (поскольку я использовал
вариант копирования Instance).

Создаю новый стандартный точечный источник света, ради которого я и корпел над картой только что приготовленного материала. Называю источник света «грунт».
Координаты – 160, 56, 165, розоватый цвет (255, 227, 190), тени включены, тип теней – Adv. Ray. Traced,
интенсивность – 0,2.
Мне нужно, чтобы этот источник рисовал блики на дне, причем чтобы они играли.
В редакторе материалов я перехожу на уровень списка карт (свиток Maps), щелкаю правой кнопкой мыши по карте, где
находится материал солнечных бликов (в моем случае Map 217 (Mix) в карте Diffuse Color ячейки текстур Material #15)
и в выпадающем меню выбираю строчку Copy. Материал для бликов теперь находится в буфере обмена; сейчас я присвою его
источнику света.
Анимированное море *
Теперь перехожу в свиток Advanced Effects источника света «грунт», щелкаю правой кнопкой мыши по кнопке None в
области Projector Map и выбираю команду Paste (Instance) в выпадающем меню.
Вуаля, наш источник содержит анимированную карту Map#217 (Mix), которую я создавал в редакторе материалов. Если
картина бликов мне не понравится, я смогу отредактировать её в окне редактора материалов; при этом анимация источника
освещения преобразуется автоматически.
Анимированное море *
Дно есть, блики есть, осталось позаботиться, чтобы источник освещения неба освещал только небо, а источник освещения
дна – только дно.
В свитке General Parameters источника света «грунт» в поле инструментов Shadows щелкаю по кнопке Exclude… и в
раскрывающемся окне Exclude/Include выделяю объект «небеса»: мне вовсе ни к чему блики на сфере, имитирующей небо.
Потом щелкаю по кнопке >> (убирая из сферы действия наших бликов небесную сферу) и по OK.
Анимированное море *
Окно свернётся.

Далее ту же процедуру произвожу с источником света «небо», потому что мне вовсе ни к чему засвечивать дно лишним
светом, предназначенном для неба.

Проведу пробный рендеринг.
У меня получилось вот что:
Анимированное море *
Варьируя параметры компонент материала Map#217 (Mix), я могу менять характерные размеры бликов, а трансформируя
кривую распределения интенсивности компонента Color#1 (Map#217(Noise)) – толщину и яркость сетки. Вообще, есть
смысл самостоятельно поменять некоторые параметры (включая коэффициент смешивания компонент) и выбрать то, что
покажется вам наиболее подходящим.

Теперь нужно «накрыть» дно с анимированными бликами анимированной водной гладью.
Создаю плоскость размерами 2000м на 2000м и координатами 0, 0, 0. Назову её «море». Исключаю этот объект из
воздействия источников света «небо» и «грунт» так, как уже описывал ранее.

Море

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

Волны и рябь

на воде. Чаще всего для этого пользуются текстурой Noise, либо смесью таких текстур.
Анимированное море *
Щелкаю по кнопке None карты Bump и вызываю броузер карт и материалов. Выбираю вариант Mix.
Анимированное море *
Установки по умолчанию меняю следующим образом: клавишей Swap реверсирую цвета компонент и устанавливаю 50% смешивание будущих карт шумов, имитирующих волны и рябь морской поверхности.
Щелкаю по кнопкам None компонент материала Color#1 и Color#2 выбираю в редакторе карт и материалов варианты Noise. Характеристики шумов для имитации волн и ряби указаны на рисунке: в данном случае выбран режим Fractal, цвета карты шумов Map#221 компоненты Color 2 устанавливаю на уровне 92 и 144. После этого остаётся анимировать материалы, составляющие карту Bump – чтобы поверхность моря ожила.

Честно, мне лень подробно рассказывать, как это делается, тем более, что приёмы там те же, что и в анимации карты бликов на дне, а о ней я уже говорил. В этом примере я просто скопировал анимацию фазы одного из компонентов материала Map 217 (Mix) и перенёс её в компоненты материала Map 215 (Mix), формирующего текстуру Bump поверхности материала «море».

Покончив с анимацией Bump'а, займусь оптикой - поглощением, отражением и преломлением.
Анимированное море *

Прозрачность.

Перехожу на 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 процессором далеко не «навороченной» сборки минимум трехлетней давности.
Обратите внимание на живописные сочетания «зеркальности» с придонными бликами в пограничных (на рубежах отражения и проницаемости) областях изломанной рябью морской поверхности.
Игра света, теней и солнечных зайчиков вкупе с разбитым волнами отражением небес создаёт известное ощущение достоверности (не смотря на примитивные средства, использованные при моделировании).

Чтобы продемонстрировать адекватное действительности изменение свойств материала в зависимости от ракурса я поместил пару камней и анимировал положение камеры. Вот что (http://toft.pisem.su/exerc/intro.files/dlinn.flv) вышло:
Анимированное море *

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

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

Удачи!

Автор: Сокорнов Александр (toft)
Читайте также:
Категория: Анимация | Добавил: M@X (12.09.2010)
Просмотров: 2516 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: