Spine — опыт использования

features-meshesSpine — программа для создания 2d анимаций, заточенная под игры. Основными фичами программы являются продвинутая костная анимация и анимация мешей.

На этой неделе сразу 4 человека спрашивали меня о работе с этой программой. Потому я решил написать о своих впечатлениях в блог.

Для полноты картины, я попросил аниматора, с которым работаю (Вячеслав Боровик), рассказать о своем опыте использования Spine. С него и начнем.

За время работы со Spine, у меня сформировалось положительное впечатление. Это замечательная тулза по работе с  анимацией для игр.

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

Основные плюсы, которые я отметил:

  • Очень удобный  риг. Быстро и просто вы можете создавать систему костей и пэрентить к ней ваши текстуры, создавая полноценный скелет.
  • Меши (meshes and FFD transform). Вы можете нарисовать любой меш, анимировать его или привязать к костям, при этом weights тоже можно настраивать вручную, и это радует.
  • Программа очень простая, и что бы полностью ее выучить необходимо совсем не много времени. При этом тех туториалов от разработчиков, что есть на ютубе, будет вполне достаточно.

Теперь немного про ограничения в программе ( чего, так сказать, не хватает):

  • первое, что бросается в глаза — это отсутствие пространственной интерполяции ключевых кадров, т.е. она везде линейная, и криволинейную траекторию движения какого-либо объекта приходится делать почти покадрово.
  • с временной интерполяцией дела так же обстоят не очень. В распоряжении есть очень простенький граф эдитор, позволяющий редактировать лишь относительное изменение свойства от 0 до 100% и лишь между двумя ключевыми кадрами. Конечно, хотелось бы видеть полноценный граф эдитор в виде кривых Безье, с возможностью работать именно с реальными цифровыми значениями параметров и для любого количества ключевых кадров, с возможностью  редактировать график скорости.

features-graph

 

 

 

 

  • в программе напрочь отсутствуют инструменты рисования. В принципе, они там незачем, но рисовать гайд слои все же бывает нужно
  • из логических недостатков можно заметить, что  нельзя копировать ключи одних объектов и вставлять в другие. К примеру, нельзя скопировать позицию от одной кости к другой.
  • отсутствует вложенность композиций (аналог символ во Flash и прекомпоз в After Effects), что иногда ограничивает в возможностях.
  • было бы здорово иметь возможность держать открытыми сразу несколько проектов и копировать что-либо из одного в другой при необходимости, как это можно делать в продуктах Adobe.
  • возможно, для Spine это из области фантастики, но, как правило, в любых серьезных редакторах можно кодить, как например в Adobe After Effects с его экспрешенами. Зачастую, это очень существенно ускоряет работ, Взять хотя бы распространенный скрипт для создания затухающих колебаний и т.п.

О критических ошибках, которые возникают:

  • если сделать reset меша, на котором есть weights (лечится тем, что вы сначала удаляете все кости из панели Bind, и потом делаете reset меша и заново настраиваете weights)
  • если удалить кость привязанную к IK (лечится предварительным удалением IK)

Еще хочется добавить, что если в анимации используется меш, тогда размер текстуры по длине и ширине должен строго соответствовать  размеру меша. Не должно быть никакого лишнего и пустого пространства, иначе при экспорте в unity возникнут проблемы, меш не ляжет на текстуру правильно. Об этом можно прочитать в FAQ, чего мы изначально не сделали и потратили время.

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

У Spine очень много рантаймов, только официальный список содержит 14 различных технологий, а неофициальный просто огромный. Подробнее можно прочитать тут.

Мы сейчас работаем на Unity и используем официальный runtime для этих целей. Интеграция с Unity достаточно хорошая. Анимации отображаются по средствам Mesh Rendrer и Skeleton Renderer. Производительность меня полностью устраивает. На первом айпад мини, я выводил около 150 анимаций с мешами, без значительной просадки фпс и в 1-2 DrawCalls.

В один клик, можно создать стандартный unity animator и настроить работу анимаций привычным способом. Честно говоря, я этим не пользовался, т.к. unity animator мне кажется достаточно тяжеловесным (особенно инициализация, по крайней мере в unity 4.6.*). Поэтому анимациями управляю кодом и это мне чертовски нравится.

Вот небольшой пример:

Если анимация blink настроена правильно, то не зависимо от того, что происходит в анимации idle (положение головы, положение глаз) моргание отыграется без проблем. Через 5 секунд запуститься run вместо idle, а blink будет дальше работать как ни в чем не бывало (так же можно смешивать атаку во время бега и во время ходьбы и т.д.).

Так же есть mix, который избавляет от необходимости возиться со стыковкой анимаций. Например, можно настроить mix между run и walk анимациями в течении 0.5 секунд. И в это время при переходе с одной анимации на другую кости будут плавно перемещаться из текущего положения в следующее. Этакий скелетный твин.

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

Есть событие Complete анимации, а так же в самом редакторе, аниматор может расставить свои события, подобно тому, как это делается в unity.

То что уменьшается размер билда и кол-во потребляемой памяти и так понятно — это очень приятный бонус.

Из минусов, которые я отметил:

  • повторю за Славой — очень не хватает вложенной структуры анимаций (аналог MovieClip во Flash). Есть возможность приаттачить скелет одной анимации к кости в другой, но это не покрывает всех потребностей.
  • аниматор не может просмотреть в редакторе миксы, запуск анимаций в разных трэках (пример с морганием)  и аттач скелета к кости другой анимации. Эти вещи доступны только в runtime и аниматору приходится просить программиста проверить/показать или нужно задумываться о написании каких-то своих кастомных вьюверов для этих целей.

Несмотря на то, что мы привели огромный список минусов, утилита нам очень нравится. Эти минусы мы описали скорее для того, чтобы вы понимали, что это не «серебряная пуля», которая умеет все и сразу избавить вас от проблем. Но разработчики стараются и не останавливаются на достигнутом.

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

 

  • Cadmus

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

    • AGulev

      Спасибо. =)

  • Tramp Ninja

    Добрый день! Нахожусь на стадии выбора профессии и хочу попробовать себя в 2д анимации и в большей степени для игровых движков. Возник вопрос, в каком формате в основном требуется исходный файл для заказчика и что сегодня более популярно на рынке среди 2д редакторов анимации, знаю неплохо Блендер и что он может также делать 2д анимацию, но подходит ли его исходники для экспорта в Юнити? Что посоветуете мсье?

    • Привет.
      Я никогда не сталкивался с 2d анимациями сделанными на blender. Поэтому тут мне и сказать особо нечего, к сожалению.

      Что касается spine, то, на сегодняшний день, это стандарт 2d анимации в игровой индустрии. Очень большое количество крупных компаний используют spine в своих проектах, да и мелкие инди не отстают.
      У spine есть большое количество рантаймов под самые разные движки (http://ru.esotericsoftware.com/spine-runtimes), что позволяет использовать сделанные на нем анимации практически на любой технологии.
      Есть бесплатные аналоги, вроде DragonBones. Но тут опять же, я с ним не работал и ничего сказать не могу. Некоторым знакомым он нравится, другие попробовав бросили и ушли в spine ссылаясь на нестабильность и забагованность DragonBones. Но тут я советую найти реальных пользователей и спросить у них, все таки я не аниматор.
      Попробую позвать сюда, в комменты, Вячеслава, может он сможет рассказать что-то более внятное по теме.

      • Tramp Ninja

        А таких пользователей искать следует в определенных пабликах в вк видимо(прошу прощения за мое нубство) и напоследок, работа на удаленке именно с 2д анимацией хватает или все эт о5 таки на студиях востребовано, чем на фрилансе?

        • Насколько я знаю работы много.

    • Вячеслав Боровик

      Привет, если ты находишься на стадии выбора профессии то софт это не совсем то о чем тебе надо думать в первую очередь. Аниматор как профессионал должен обладать большим багажом знаний в области анимации различных существ, а также иметь скилы в чувстве физики, ритма движения, выражения эмоций персонажа и актерского мастерства. По части 2д к этому добавляется умение рисовать, т.е. чувство формы, объема, анатомии, умение выставить свет и прочее. Это только основное. Как видишь, тут лет на 6 работы, что бы во всем этом разобраться, а выучить спайн от корки до корки — от силы 2 недели времени, еще столько же что бы закрепить знания.

      По части софта, для игр в основном Spine, покадровка делается в флеше, эффекты, если их нельзя сделать системами частиц в движке то в after effects. Экспорт для заказчика — Json + текстуры.

      Блендер можно сразу выкинуть, никто в нем не работает. По части 3д — стандарт Maya.

      Технически, в трехмерном редакторе можно делать 2д анимацию, и я даже видел как одна команда так работала, аргументировав такой подход тем что это дает ощутимый выигрыш в производительности, в сравнению со спайном. Но это жуть как топорно, т.к. при необходимости добавить одну небольшую текстурку (что в спайне делается за 5 секунд) в 3д редакторе придется:
      а) создать геометрию правильной формы
      б) скорректировать UV развертку для всей модели
      в) скорректировать текстуру для всей модели

      • Tramp Ninja

        Привет! Вы правы конечно насчет базы и основ, т.к. есть небольшой опыт в 3д моделировании(но к счастью я понял, что это не мой путь, ну не лежит к этому сердце и все), А за плечами уже 35 лет бестолковой жизни, хотелось бы иметь и заработок и занятие по душе, и конечно же мечты о фрилансе, и есть мнение, что для аниматоров, в частности для 3D, фриланса как такогово не существует, в основном на студиях, поэтому я решил податься в 2д анимацию и насколько мне кажется, это проще, чем 3D и больше вариантов работы на удаленной основе. Вот как то так, основы само собой надо учить, куда жеж без них))