Море волнуется два — создаём движущиеся по морским волнам корабли
Урок добавлен 23.04.2023
К этому уроку прилагается 3D-сцена
Возможно, вы уже ознакомились с предыдущим уроком под названием «Море волнуется раз — моделируем морские волны». Возможно, он вам даже понравился (хотя, скорее всего, вы не стали этого открыто афишировать — ведь комментировать бесплатные уроки дело исключительно трудное, тяжёлое и сложное, не то что создавать их, в силу чего урок есть, а комментариев к нему — нет). Но зато я почти наверняка уверен, что вы сразу же почувствовали, чего ещё не хватает в этом уроке, кроме комментариев. Конечно же, кораблей! Без них море выглядит слишком пустым.
Терпение. Как моделировать морские волны, мы с вами разобрались. А сейчас у нас будут и корабли. Сколько вам надо? Десять, двадцать? И чтобы все двигались по поверхности моря с непрерывно меняющейся геометрией?
«Коли поняли приказ, исполняйте сей же час! — Не извольте сумлеваться: чай, оно не в первый раз!»
Видео. Анимация умышленно замедлена в два раза — воспроизведение со скоростью 12 кадров в секунду.
Как видно из видео, корабли не только движутся по поверхности моря, но и перемещаются вместе с волнами вверх-вниз.
Вам интересно, как это сделано? Разберём по шагам. В процессе описания способа создания этого эффекта я открою вам маленький секрет, связанный с работой модификатора «Wind».
В предыдущем уроке мы с вами изгибали плоскость, изображая с её помощью морские волны.
В данном уроке мы с вами добавим ещё один элемент — траекторию движения кораблей. Сделаем мы это точно так же, как делали в уроке «Создаём анимацию движения объекта по сложной траектории над местностью» — то есть нарисуем некий изломанный сплайн, лежащий строго в той же плоскости, что и исходный объект «Plane», трансформируемый модификаторами «Wind», и превратим изломы сплайна в изгибы. Точно так же, как в упомянутом уроке, мы с вами увеличиваем количество точек на сплайне.
Возможно, вы скажете: постойте, но в уроке по созданию сложной траектории на местности мы «роняли» сплайн на объект с заведомо известной, заранее подготовленной геометрией, а здесь в нашем распоряжении плоскость, которую модификаторы «Wind» будут изгибать невесть каким образом!
Совершенно верно. Мы с вами не имеем ни малейшего представления, какой будет геометрия «морской поверхности» в каждом следующем кадре — мы можем лишь скорректировать параметры воздействующих на неё модификаторов «Wind» и сделать вывод, устраивает ли нас полученная геометрия. А раз так — так пускай те же самые модификаторы трансформируют не только «морскую поверхность», но и сплайн траектории, по которой будут двигаться корабли. Изначально наша «морская поверхность» абсолютно плоская. И сплайн-траектория — тоже плоский. Ронять его на «поверхность моря» нет никакого смысла — он уже лежит на плоской поверхности, а потому в его геометрии попросту ничего не изменится.
Зато геометрия сплайна сразу же изменится, как только мы сделаем его подчинённым по отношению к изображающей морскую поверхность плоскости, при условии, что на последнюю воздействует один или несколько модификаторов «Wind».
Секрет, который в начале урока я обещал открыть вам, заключается в том, что модификатор «Wind» трансформирует не только объект, которому подчинён, но и все объекты, подчинённые объекту, которому подчинён модификатор. Причём трансформирует, если можно так выразиться, когеррентно — то есть старается создать складки одинаковой формы на всех трансформируемых объектах. Чтобы убедиться в этом, достаточно создать копию плоскости, имитирующей морскую поверхность, и подчинить копию оригиналу — и та и другая, изогнутые одним и тем же набором модификаторов «Wind», подчинённых оригиналу плоскости, совпадут точка в точку.
Ну, а всё остальное, как вы, вероятно, смутно догадываетесь — дело техники. Создаём мультипликатор (то есть объект «MoGraph Cloner»), подчиняем ему одну-единственную модель корабля, выбираем в настройках мультипликатора режим «Object», в появившееся ниже одноимённое поле перетаскиваем название сплайна-траектории, корректируем у мультипликатора значение параметра «Rate» (чтобы корабли двигались вдоль сплайна, а не плавали на месте).
Запускаем анимацию и... дальше, как вы понимаете, набор модификаторов «Wind» динамически трансформирует поверхность «моря». Этот же набор трансформирует сплайн-траекторию. Мультипликатор размножает копии кораблей — однако не вдоль исходного сплайна, а вдоль его трансформированной набором модификаторов «Wind» копии, и каждый раз, когда геометрия динамической копии сплайна меняется, мультипликатор корректирует положение кораблей таким образом, что их днище всегда правильно располагается относительно поверхности волн.
Согласен, наши корабли всё ещё чем-то смахивают на бумажные кораблики... ах да, они же не оставляют на поверхности воды никаких следов — бурунов, пены и т. п.! Тем лучше — нам с вами будет что обсудить в следующем уроке.