Всем привет!

Меня зовут Денис и я занимаюсь 3д и моушн графикой. Я давно читаю Хабр, но ещё ничего не писал сюда. Пару месяцев назад я выложил на ютюб видео с созданием рекламы Яндекс GO. Сразу оговорюсь, что этот ролик никем не проплачен, мне просто захотелось повторить то, что я когда-то не умел. Я решил написать текстовую версию для Хабра, а если вам больше нравится смотреть на видео, я оставлю ссылку в конце статьи.

Когда-то давно я открыл программу для 3д моделирования и... закрыл через 10 минут, а потом не возвращался к ней несколько лет. Она показалась мне тогда чем-то нереально сложным и непонятным.

Но спустя время я увидел на ютюбе рекламу Яндекс GO. Я тогда и понятия не имел, как это сделано. Человечки, машины, здания, плавная анимация и всё это в 3д. Я обещал себе, что когда-нибудь сделаю такую же но конечно же не думал, что вообще научусь чему-то подобному. Настолько нереально сложным это мне казалось.

Шло время и я снова вернулся к 3д. Прогресс пошёл, а уже меньше чем через пол года я мог создавать low poly модели и не очень сложную анимацию. Именно тогда я вспомнил о рекламе Яндекс, которой так восхищался. А чтобы было интереснее, я решил повторить её за 24 часа. Получится ли у меня хоть что-то, из того, что я задумал? Об этом вы узнаете уже в конце статьи.

Сразу оговорюсь, что я не учитывал время на сон и еду, так как во сне я могу лишь только мечтать о ещё более крутых проектах. Итак, время пошло.

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

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

Я насчитал около десяти разных видов домов и быстро набросал их на плоскость. Мне нравится Blender тем, что в интернете огромное количество туториалов и примеров, на которые можно посмотреть, если появляются какие-то трудности. Трудностей при создании видео было много, поэтому я часто гуглил что-то вроде "Как быстро сделать звезду в Blender" или "Как стать про в анимации за 10 минут." Ютюб, Скорость 2x, Вы знаете что делать.

Кроме обычных геометрических фигур, на сцене есть также две "спешл" фигуры. Слоёное здание с жёлтым центром и ларёк с табуретками. Со слоёным зданием проблем не возникло. А вот над ларьком нужно было подумать.

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

Чтобы всё выглядело более красочно, я решил покрасить уже созданные элементы карты. Судя по видео, у каждого дома есть сглаживание. Ещё 20 минут ушло на создание сглаживания и всё стало выглядить более-менее прилично.

Сначала я подумал, что в ролике используют несколько моделей машин. Поэтому начал с "первой" модели на скриншоте, но потом присмотрелся и понял, что моделлеры яндекс тоже не любят сильно запариваться и что они клонировали одну модель и по-разному её раскрасили. Уже после того, как я сделал финальный вариант машины, вспомнил, что можно было скачать фото, например, форда фокус и сделать модельку по нему. Но я же не ищу лёгких путей.

Спустя час и множество проклятий, у меня получилось более менее вменяемая моделька машины, на которую вы смотрите. Если сравнивать с машиной в ролике и машиной из Вспомнить всё, то мне кажется моя машина больше похожа на второй вариант.

Как хорошо, что в Blender можно просто скопировать объект и поменять в нём то, что нужно. Именно так я и сделал с машинами. А судя по оригиналу, они отличаются только краской корпуса.

В этом видео есть одна моделька, которую не так просто увидеть. Она появляется в кадре всего на 3 секунды. Как вы могли угадать - это автобус. 30 минут и моделька на 3 секунды готова.

Тележка. Хм, с виду выглядит просто. Почему-же тогда на YouTube десятки видео "Как сделать тележку для продуктов в Blender?". Оказывается есть свой способ, который сильно экономит время и нервы. Я взял куб, разделил его на полигоны, удалил ненужные грани и связал с кривой в виде круга. И конечно не забыл добавить колёса и ручку. Готово, не так и сложно. Но чтобы было поменьше полигонов, всё равно пришлось переделывать тележку заново.

А тем временем прошло уже целых 4 часа. В видео 9 человечков, 3 курьера на самокате, 1 курьер на велосипеде, 1 пассажир такси, 1 курьер с коробкой, 1 человечек, который получает коробку и 1 водитель, который садится в машину. Ах, да, ещё один человечек, который стоит на другом берегу реки, но похоже он хотел топиться, поэтому в видео участвовать не будет. Ещё 15 минут работы и человечек готов. Человечки в видео различаются только по цвету одежды. И забегая вперёд скажу, что придётся красить их ещё раз. Но сейчас я продолжаю наслаждаться покраской клонов.

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

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

Самое время приступить к созданию экипировки для курьеров. На спину курьеру я закрепил квадратную желтую сумку. А под ноги поставил самокат. Когда-нибудь яндекс захватит всё и по городу будут разъезжать курьеры такого размера, но пока этого не случилось продолжаем наводить порядок на сцене.

Я как мог долго откладывал создание курьера на велосипеде. Но без этого никуда. Хоть он и появляется в видео, как и автобус всего на несколько секунд, без таких мелочей, всё будет выглядеть совсем по-другому. Вообще создавая подобные low poly модельки можно было делать всё ещё проще и не тратить столько времени на их проработку. Но я ориентировался на оригинальное видео, а в нём модельки выглядят достаточно качественно. Ещё 30 минут и велосипед готов.

В реальной жизни такое видео можно было бы снять например с дрона. Но возможности blender позволяют сделать вообще какой угодно ракурс и перемещение камеры без всяких ваших дронов. Да, в Blender также используется камера, для которой можно настроить тип, глубину резкости, размер, апертуру и много чего ещё. Я выбрал ортографическую камеру и по кадрам анимировал её перещение так же, как в оригинальном видео.

Дело в том, что для создания изометрических сцен в Blender нужно выставлять определённые настройки камеры. Но почему-то с такими настройками я никак не мог получить нужный ракурс. Потратив ещё 40 минут, я всё таки настроил ракурс и перемещение камеры по сцене.

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

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

Для этого я создал кривые для каждого объекта, которые нужно перемещать не по прямой линии. Если посмотреть видео, можно заметить, что пути объектов могут пересекаться с другими, но построены они таким образом, чтобы всё выглядело гармонично и чтобы объекты не врезались друг в друга.

Для анимации большое количество моделлеров используют замечательный сервис Mixamo от Adobe. Если вкратце, то любой пользователь может загрузить в этот сервис свою 3д модельку человека, монстра или любого другого героя и анимировать её. А что ещё круче, для модельки будет автоматически создан скелет. Да-да, для движения моделек используется скелет, почти к у обычных людей.

Я загрузил уже готовую модельку курьера, выставил точки для подбородка, локтей, запястьев, паха, коленей и... из-за особенностей геометрии курьера, у него стали просвечивать бока. Я провёл ему несложную, но болезненную операцию и слегка увеличил их толщину. Ура, всё получилось.

В Mixamo огромное количество уже готовых анимаций, и мне нужно было выбрать только то, что подойдёт. Курьер передаёт коробку другой модельке, поэтому я искал анимацию по слову box - коробка. Но в mixamo была только анимация бокса. И я решил остановиться на анимации походки. Она подошла, так как в дальнейшем я её отредактировал.

При создании анимации, каждая кость может перемещаться отдельно. В моём случае курьер должен передвигаться с коробкой в руках. Я добавил коробку и поменял расположение рук. И получилось то что нужно. Оставалось добавить анимацию передачи коробки и поставить курьера на нужно место. Только сейчас я понял, что проще было взять уже готового курьера со скелетом, из Mixamo, а не загружать и настраивать нового человечка каждый раз. В этом случае нужно было просто перекрасить каждую модельку в нужный цвет.

Курьер должен вернуться обратно к машине, поэтому я добавил и это его перемещение.
Вся эта небольшая анимация отняла целых три часа. Курьера с сумкой всё таки пришлось загрузить в Mixamo. И хорошо, что анимация поездки на скейте, считай на самокате, здесь уже была.

При перещениии кости в Blender, она действует на всю модельку. Для контроля этого поведения в программе существует возможность указать вес каждой кости.
Если описать одним словом работу с весами в Blender, то для меня это слово будет боль. Это само по себе сложно, но как вы сможете узнать в конце статьи, этот опыт мне сильно помог. Несколько раз я перекрашивал веса для курьера и в итоге получилось, то, что меня устроило. Я в прямом смысле привязал ногу курьера к самокату и нарисовал для него свой путь, по которому он будет проезжать. Как хорошо, что для других курьеров не нужно будет настраивать веса.

В Mixamo я нашёл только анимацию упражнения велосипед, поэтому пришлось создавать анимацию езды с нуля. Я посадил курьера на велосипед, слегка изменил положение рук и тела и анимировал ноги, чтобы они двигались по пути следования педалей. Гораздо проще сначала анимировать поворот педалей, а уже потом подстраивать под их положение ноги, как я и сделал. И конечно же я не забыл анимировать движение колёс.

После добавления пути для велосипедиста, из-за смещённого центра он поворачивал с заносом. Это бы подошло для игры про велосипедистов дрифтеров, но не для моего видео.

Прошло уже целых 14 часов, но хорошо, что большая часть работы позади.

Следующий на очереди - пассажир такси. Его можно видеть в самом начале видео. Когда такси подъезжает, он открывает дверь, садится в такси и уезжает в нём. Вы же знаете что такое магия кино? Вот ей я и воспользовался.

Конечно нет никакого смысла в том, чтобы рисовать полную анимацию посадки пассажира, а потом ещё и перемещать его в машине. Для этой сцены будет достаточно того, чтобы пассажир открыл дверь,наклонился и сделал вид, что садится внутрь, а потом закрыть дверь такси, а отображение человечка выключить. Так я и сделал, предварительно разрезав кузов такси, чтобы была возможность открыть дверь. Да и куда, в конечном счёте он сядет, если в такси и пола то нет. С технической точки зрения он просто открыл дверь и спрятался за машиной, чтобы его не видела камера.

С водителем похожая ситуация, но здесь камера направленна точно на него, поэтому сесть в машину ему всё таки придётся. Аниматоры из яндекс решили, что человечку проше протянуть руку к рулю, чем наклонить тело вперёд. Ну ладно. Может никто и не заметил? А я просто запихнул водителя в машину.

Последняя моделька для анимации водитель-курьер. Так как в этом кадре камера находится высоко, то можно было ещё больше упростить анимацию, ведь зритель просто не увидит каких-то мелочей.

На красную метку наезжает камера и она переводит на себя внимание зрителя. Здесь ничего сложного. Для неё я изменил размер, положение и поворот в соответствии с движением камеры.

Если присмотреться, при приближении камеры, меняются некоторые элементы карты. Например исчезают дороги и появляются пешеходные зебры. Я изменил тип наложения и прозрачность материалов и анимировал их. С 3д частью закончено, ура.

Да, одним блендером тут не обойтись. Титры и кадры с телефоном в конце я сделал через программу After Effects. Тут всё по старой схеме. Кинул на сцену оригинал видео и ориентировался на него.

Основа заставки - это три анимированных прямоугольника со скруглёнными углами. Когда я думал, что всё будет проще простого, появилась новая проблема. У каждого объекта есть так называемая якорная точка, от которой афтер эффектс отсчитывает изменение размера. Проблемы нет, когда нужно изменить размер прямоугольника, но у меня никак не получалось уменьшить размер прямоугольника со скруглёнными углами, чтобы сохранить правильные пропорции. Провозившись битый час в поисках решения в гугле, и перепробовав несколько вариантов, я всё таки нашёл нужное решение. А именно - скрипт, который прописал для изменения точки. В After Effects можно использовать код для создания анимации и других полезных вещей. Для этого используется специальная версия языка JavaScript, созданная компанией Adobe.

Вот такая маленькая задача может вылиться в большую проблему. И я был очень рад, когда получилось её решить. Тем более, что время поджимало.

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

Я закончил даже слегка раньше.

Это были тяжёлые 24 часа, но я справился и очень этому рад. И по-моему получилось близко к оригинальному видео. Я получил огромное количество нового опыта и ещё больше прокачал свой скилл в 3d и моушн графике.

Я всегда знал, что чем сложнее задача, тем больше прогресс. Лишний раз убеждаюсь, что если чего-то действительно захотеть, то всё обязательно получится.

Пишите комментарии, если эта статья и видео были вам интересны. И до встречи.

Ссылка на видео

Комментарии (14)


  1. dmandreev
    26.07.2021 20:41
    +6

    Замечательно! Напомнило



  1. engine9
    26.07.2021 21:27
    +2

    Красавчик, такие марафоны отлично бустят умения.



  1. Maevv
    27.07.2021 00:52
    +2

    Молодец! Комментарий не по Блендеру, а по АЕ.

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

    А надо просто:

    1. Создать прямоугольный шейп

    2. В настройках Rectangle Path выкрутить параметр Rounded до нужного скругления

    3. Анимировать размеры через параметр Size именно этого ректангла, а не самого слоя

    4. Анимировать положение через Position именно слоя

    5. Ну и анимировать параметр Rounded, который в начале равен нулю

    Все, скругление остается идеальным в любом размере, радиус автоматически будет сохранятся вне зависимости от размеров ректангла или соотношения его сторон (и автоматом уменьшаться, если высота/ширина прямоугольника станет меньше двух радиусов). Никаких экспрешенов прописывать не надо.


    1. dendead Автор
      27.07.2021 00:58
      +1

      Проблема была в том, что увеличение/уменьшение скруглённого прямоугольнка нужно было делать в один из углов, а не по центру. В тот момент это не получалось сделать)


      1. Maevv
        27.07.2021 01:07
        +2

        А, значит, я не понял проблему. Но тут тоже просто: «центр» слоя — это его Anchor Point, параметр в списке Transform слоя рядом с позицией, размером, прозрачностью и т.д. Его можно сместить:

        1. Меняя значение параметра, но в процессе существующий слой будет смещаться

        2. Двигая сам якорь инструментом Pan Behind Tool (автоматом включается при зажатой клавише Y), при этом слой останется на месте, но изменится значение Position (потому что меняется точка отсчета, а слой визуально остается на месте)

        3. Простым удобным расширением RepositionAnchorPoint, которое умеет автоматом перемещать якорь в любой из углов, серединой сторон или в геометрический центр слоя, не меняя тому визуальное положение

        Соответственно, если выставить Anchor Point в угол, то изменение размера будет происходить относительно угла.


        1. dendead Автор
          27.07.2021 09:10

          Насколько я помню у шейпа и у обычных объектов Anchor Point настраивается по-разному)


  1. QDeathNick
    27.07.2021 01:12
    +1

    Если не сложно, расскажите как вы у велосипеда спицы делали. Я тоже пытаюсь на досуге блендеру научится.


    1. dendead Автор
      27.07.2021 09:17

      Именно здесь по-моему я создавал кривую через Curve->Path. В её настройках увеличивал Bevel->Depth. Потм ставил курсор в центр колеса, выравнивание (Transform Pivot Point) выставлял по 3д курсору и копировал спицу. Shift+D - копирование, потом сразу на клавиатуре R и 45 - поворот на заданный угол. Так скопированная спица перемещалась на угол 45 градумов относительно 3д курсора.


    1. lgorSL
      27.07.2021 09:58
      +1

      Ещё можно сделать одну спицу (да и часть колеса) и модификатором array размножить. В качестве относительного смещения указать объект и повернуть его на нужный угол (например, 30 градусов и 12 объектов в array)


      1. QDeathNick
        27.07.2021 16:11

        За array спасибо.

        А скрипты для этого мало кто использует?

        Что-то у меня голосование за комментарии не доступно стало :(


    1. dendead Автор
      27.07.2021 10:09

      На самом деле много чего уже сделано до нас, поэтому всегда работает поиск в youtube по типу: how to create bicycle spokes blender)


  1. Dimsml
    27.07.2021 10:16
    +1

    Хотел предложить сделать симулятор доставщика, но потом вспомнил что Blender Game Engine больше не поддерживается.


    1. dendead Автор
      27.07.2021 10:19

      Его если только в Unity или UE)


  1. MomentomVmori
    27.07.2021 16:17

    Еще бы потратить нное время на свет в сцене и настройку материалов.