Добрый день, читатель! В этой статье рассмотрим процесс разработки типичного персонажа нашей дебютной игры Kidarian Adventures. Я продемонстрирую свою привычную структуру работы, однако, заострю внимание на создании анимации в Dragon Bones, приложу пояснения и самописные видео-туториалы.



Итак, начнем.

Текущая задача: Редизайн морально устаревшей модели стандартного летающего монстра полугодовой давности. Летучая мышь не успела за нашим скилом и стала не актуальной в рамках выбранного нами графического стиля.

image
Модель которую будем переделывать

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

Этап 1: Работа с референсами


Среди людей, производящих графический контент, ничего не берется на пустом месте. Никогда не верил тем людям, которые сидя на стуле кричат: “О вдохновение!”, и начинают малевать шедевры.

И этому есть самые простые объяснения: “Черт возьми, моя мышь такая дурацкая, потому что я даже не знаю как выглядят летучие мыши! Без референсов я нарисовал просто шарик с крыльями!”.

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

image

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

image


Этап 2: Наброски


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

image
Несколько рабочих вариантов

image
Краткая выдержка из процесса

Этап 2: Отрисовка/Векторизация


После набросков и утверждения финального результата, я перехожу в Adobe Illustrator. Изображения отрисовываются в векторе — это позволяет всегда легко задать нужный размер без потери качества. Стоит отметить, что в результате я выгружаю растровое изображение в формате .png. В качестве дополнительных материалов для разных игровых уровней, летучая мышь будет иметь две цветовых схемы для разных уровней.

image

Этап 3. Анимация


Анимировать будем в Dragon Bones. Это бесплатный китайский аналог Spine, предоставляющий понятный интерфейс и возможности скелетной и mesh-анимации. Dragon bones распространяется бесплатно и его можно скачать с оф. сайта.

К сожалению сейчас комьюнити у данного ПО не слишком широкое, и даже на английском языке туториалов не много, в основном вся информация на китайском.

Первый шаг, который стоит сделать — разрезать модель таким образом, чтобы каждая подвижная деталь, была отдельно. Сохраняем картинки в формате .png и без фона.

image

После этого загружаем готовые .png в DragonBones, собираем согласно задумке. Необходимо также задать некоторые параметры. Draw order — это отображение по слоям, работающее по принципу слоев в фотошопе. Чем выше объект стоит в иерархии, тем выше он находится над другими слоями.(прим. первый в иерархии — самый дальний)


Сборка персонажа

image

Краткая выписка происходящего на видео выше

Далее нужно преобразовать объекты в mesh, чтобы появилась возможность изменять их форму так, как нам нужно. Для этого выделяем объект на сцене, слева ставим галочку напротив mesh, после этого нажимаем Edit mesh и начинаем отрисовывать сетку таким образом, чтобы изображения нигде не искажалось и не обрезалось. Особое внимание уделяем ребрам жесткости, таким как кости в крыле, которые будут сгибаться.

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

Эту операцию мы проделываем со всеми частями, которые будут морфиться. В основном это крылья и голова. Для тела будет достаточной одной только галочки mesh, сетка не требуется, так как объект будет статичен.

Когда все готово, можно прокладывать кости. Для этого используем инструмент кость (bone) в правом верху экрана. На экране всегда присутствует изначальная точка — root.
Это базовая кость, к которой по умолчанию привязана вся композиция, она является первой родительской костью. Привязки к родительским костям показаны стрелочками.

image

Сетка костей

image

Расшифровка родительских костей

Проложив кости, нужно привязать их к мешу, для этого нажимаем кнопку Add bones to bind, выделяем все кости которые принадлежат к спрайту и жмем правой кнопкой мыши, либо по пустой части экрана, либо на Auto Generate Weight. Кости автоматически привяжутся к спрайту, им задастся значение Weight. Величина Weight или в народе “веса” отвечает, как кость влияет на спрайт. Это важно в случаях, когда к одному спрайту одновременно привязано несколько костей. Регулировка происходит при помощи ползунков, определяющих “зону ответственности” каждой кости.

image

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


Построение ключевых кадров на примере крыла

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

image

TIPS: Некоторые моменты, которые могут прояснить работу, и то что я показал:

1. Ключевые кадры создаются автоматически, если вы сделали какое то действие с костью. (При условии что нажат соответствующий флажок)

image

2. С одной из последних версий в Dragon bones появились отдельные таймлайны для таких переменных как Move, Rotate и Scale. Чтобы принудительно поставить ключевую точку по одной из них, следует нажать на флажок.

image

3. Для того, чтобы изменять скины для персонажа, нужно добавлять спрайты в соответствующие подпапки (displays). Предварительно их нужно превратить в mesh, отрисовать сетку и привязать кости, так как делали с основными спрайтами, чтобы при той же анимации, все отображалось корректно. Чтобы добавить спрайт, просто перетаскиваем драг’н’дропом в соответствующий раздел.

image

4. В Dragon Bones имеются кривые, которые слегка изменяют пропорции воспроизведения анимации, задержки и акценты на каких то ключевых кадрах. На словах сложно объяснить как они работают, но очень наглядно сразу становится понятно какой это волшебный инструмент. ВАЖНО: На каждый ключевой кадр можно повесить свою кривую, и он будет действовать до следующего правила по искривлению.

image

Что мы получили в итоге?

Получилась несложная анимации в двух цветах.

image

image

Полученный результат мы можем выгрузить в различных форматах, которые скушает любой игровой движок.

Спасибо за внимание!

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


  1. KeySVG
    05.03.2018 18:07

    Спасибо за публикацию! Интересный продукт, захотелось то же попробовать сделать что то подобное. Качнул китайскую софтину, тем более есть версия для мака. Ссылка кстати выдала у меня 404-ю ошибку. Лечится удалением точки в конце адреса.


    1. HARDSLIME Автор
      05.03.2018 18:31

      Спасибо, поправили!


  1. fryette
    05.03.2018 18:31

    Здорово получилось!
    Такой вопрос, а есть ли нечто подобное в Unity и как подобные проблемы решают на этом движке?


    1. HARDSLIME Автор
      05.03.2018 18:33

      У Dragon Bones есть настройки экспорта под Unity + свой API для него же. Вы про это спрашивали, я правильно понял?


      1. saw_tooth
        05.03.2018 20:25

        Если я правильно понимаю вопрос, у Юнити есть свой редактор анимаций и скелетных и тайловых, правда не знаю есть ли там еффекты растягивания/сжатия изображений базовых (как на видео с крылом)


        1. JohnPilot
          06.03.2018 10:34

          Anima2D называется


  1. Vitter
    05.03.2018 22:46

    1) Как туториал — хорошо
    2) Как улучшение персонажа после редизайна — налицо.
    3) Персонаж хоть и стал более реалистичным, но ему ещё очень далеко до летучей мыши. Больше смахивает на волосатого дракона
    3+) и да, никто не летает сворачивая и разворачивая крылья. Почти все летают махая крыльями (без учёта планерного движения, где крылья неподвижны и лишь корректируют курс)


    1. Insane161
      06.03.2018 10:34

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


  1. TheShock
    06.03.2018 01:34

    А мне предыдущая версия кажется поинтереснее. Я понимаю, что она меньше похожа на мышь, но в играх с таким стилем это ведь не так важно


  1. Torvald3d
    06.03.2018 15:08

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

    Заголовок спойлера
    image


    1. HARDSLIME Автор
      07.03.2018 13:32

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


      1. HARDSLIME Автор
        07.03.2018 14:38

        Проверил — количество полигонов и вершин в Dragon Bones и Unity совпадает. Если в камере одна мышь, то разницы по производительности почти нет. Но на большом (>=100) количестве мышей разница весьма ощутима. Очень ценное замечание, спасибо.