Как сделать скелетную анимацию

Обновлено: 07.07.2024

В общем случае, к анимации относятся изменения параметров объектов во времени. Движком поддерживаются следующие типы анимации:

Объектная анимация. Заключается в трансформации объекта в пространстве как единого целого.

Скелетная анимация, то есть деформация геометрии объекта с помощью системы костей (скиннинг). Сюда же относится анимация костей в арматурном объекте с целью прикрепления объектов к костям.

Вертексная анимация. Заключается в покадровой записи деформаций объекта с их последующим воспроизведением.

Параметризация источников звука. Изменяемые параметры: громкость ( Volume ) и высота звука ( Pitch ).

Анимация выходного значения ноды Value в нодовом материале.

Процедурная анимация в виде колебаний объекта под действием ветра. Описано отдельно .

Эмиссия частиц из источника. Описано в соответствующем разделе .

Управление анимацией¶

Управление анимацией в движке осуществляется одним из двух способов:

Автоматически, с помощью активации панели Animation и указания поведения анимации Behavior в свойствах объекта. В данном случае будет осуществлён поиск доступного метода и в случае положительного результата, объект анимируется с момента загрузки сцены. В случае скелетной анимации, по умолчанию воспроизводится актор, назначенный на объекте в окне Action Editor .

Программно, используя функции модуля движка animation .

Для отладки анимации имеет смысл использовать интерфейс Animation программы-просмотрщика, рассмотренный в соответствующем разделе .

Объектная анимация¶

Изменяемые параметры: координаты центра ( Location ), поворот ( Rotation ) и масштабирование ( Scale ).

_images/wind_generator.jpg

Осуществляется с помощью добавления ключей анимации для движения объекта в программе Blender и их последующего воспроизведения в движке.

Поддерживаются следующие типы ключей:

Rotation – необходимо осуществлять в режиме Quaternion(WXYZ) либо XYZ Euler .

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

LocRot – комбинация Location и Rotation.

LocScale – комбинация Location и Scale.

LocRotScale – комбинация Location, Rotation и Scale.

RotScale – комбинация Rotation и Scale.

В случае анимации объекта-меша, необходимо включение опции Force Dynamic Object панели Rendering Properties на вкладке свойств объекта.

Скиннинг и скелетная анимация¶

_images/rig.jpg

Для осуществления скелетной анимации, кроме деформируемого объекта-меша требуется объект-арматура. Осуществляется в четыре этапа:

Создание скелета объекта в арматурном объекте.

Назначение вертексных групп в объекте-меше и их привязка к костям. Может быть осуществлено, например, методом “раскраски” весов (weight painting).

Анимация костей в арматурном объекте. Используются те же ключи, что и в случае объектной анимации.

В случае нетривиальных видов скелетной анимации, включающих инверсную кинематику, требуется стадия запекания анимационных акторов (блок Action в Blender). Запекание производится с помощью интерфейса Bake Skeletal Animation , расположенного на панели инструментов Blend4Web :

Параметры запекания¶

Запекание производится при выделенном арматурном объекте.

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

Имя текущего актора из списка запекаемых акторов.

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

Use Blender’s Native Baker

Использовать для запекания анимации средства самого Blender (возможность Bake Action), а не Blend4Web. Настройки средства запекания Blender отличаются от настроек Blend4Web.

Произвести запекание. После успешного окончания процесса на сцене появляются акторы с именами вида B4W_BAKED_ИМЯ_АКТОРА. Данные акторы будут автоматически назначены на арматурном объекте и воспроизведены в движке. Стоит отметить, что работа подобных акторов в Blender не гарантируется.

Движок поддерживает не более 4-х вертексных групп на каждом из вертексов, эти группы отбираются по величине влияния или “веса” вертекса. В процессе загрузки исходного файла со сценой “веса” вертексов проходят через процедуру нормализации, т.е. их сумма приводится в единице.

Для удаления вертексных групп, которые не используются арматурой, можно воспользоваться кнопкой Clean Unused Vertex Groups в одноименной панели.

_images/vgroups_cleaner.jpg

В Blend4Web присутствует начальная поддержка ограничителей для костей. На сегодняшний день поддерживается несколько типов ограничителей, в том числе Copy Transforms , который позволяет привязывать арматуру к различным объектам, в том числе физическим (эффект ragdoll). Поддержка других ограничителей ожидается в будущих версиях.

Полный список поддерживаемых ограничителей и их описания доступны в соответствующем разделе .

Смешивание анимации¶

Движок также поддерживает смешивание анимации. Для использования этой возможности должна быть включена опция Animation Blending (находится на панели Animation вкладки Object ).

Одновременно могут быть смешаны не более двух анимаций.

Для того, чтобы смешать анимации, необходимо сперва разрешить смешивание двум анимационным слотам:

Вертексная анимация¶

_images/flag.jpg

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

Для запекания вертексной анимации предусмотрен инструмент Bake Vertex Animation , расположенный на панели инструментов Blend4Web .

_images/animation_vertex_baker.jpg

Параметры запекания¶

Имя, которое будет присвоено запеченной анимации.

Кадр, с которого начнётся запекание анимации.

Кадр, которым закончится запекание анимации.

Позволяет управлять запечённой анимацией при помощи NLA .

В этой строке приводится количество кадров, из которых состоит запечённая анимация. Если запекание ещё не было произведено, вместо количества кадров приводится слово Empty .

Запекание анимации производится при нажатии на эту кнопку.

Для корректной работы вершинной анимации следует активировать опцию Export Vertex Animation (раздел Export Options панели Object ) у соответствующего объекта.

Анимация по умолчанию¶

В Blend4Web присутствует возможность автоматически проигрывать анимацию объекта. Для этого нужно активировать параметр Apply Default Animation на вкладке Animation панели Object того объекта, анимацию которого требуется включить. Поддерживается скелетная и объектная анимация.

_images/animation_apply_default_animation.jpg

Проигрывание анимации начинается сразу после запуска приложения и осуществляется аналогично ноде Play Timeline , но без возможности задать начальный и конечный кадр (в качестве таковых всегда выступают первый и последний кадры таймлайна). Также присутствует возможность задать поведение анимации, аналогично ноде Play Animation .

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

Смешивание анимаций описывается в соответстующем разделе .

Нелинейная анимация¶

Редактор NLA¶

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

_images/simple_machinima.jpg

Движком поддерживается управление следующими сущностями:

Любая анимация, параметры которой могут быть представлены с помощью действий (Action)

Эмиссия частиц (в виде привязки к глобальной шкале времени)

Использование¶

Во вкладке Scene активировать панель NLA .

В редакторе NLA Editor задать необходимую конфигурацию поведения сцены.

На панели Timeline выбрать интервал времени анимации.

Дополнительные настройки¶

Настройка сцены NLA > Cyclic NLA позволяет активировать режим циклической NLA-анимации.

Для использования вертексной анимации необходимо выставить опцию “Allow NLA” на панели запекания вертексной анимации .

Ограничения¶

Одновременное проигрывание различных видов анимации для одного объекта не поддерживается.

Управление через API¶

Для управления нелинейной анимацией через API существует модуль nla.js .

При использовании Logic Editor функции set_frame , play , stop недоступны.

Параметризация источников звука¶

На объектах-спикерах дополнительно поддерживаются следующие типы анимационных ключей:

Volume – громкость звука источника.

Pitch – высота звука источника.

Параметризация источников звука по своей сути повторяет объектную анимацию.

Анимация нод Value и RGB¶

В нодовых материалах поддерживается воспроизведение анимационных ключей, проставленных на нодах Value и RGB .

_images/node_value_anim.jpg

_images/node_RGB_anim.jpg

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

Может быть также использована для создания треков в редакторе нелинейной анимации . Поддерживается несколько анимированных нод Value и RGB в одном материале. Значения нод могут быть также установлены программно с помощью методов set_nodemat_value и set_nodemat_rgb модуля objects .


Создавайте плавную скелетную анимацию напрямую в Sprite Editor с помощью риггинга, тесселяции и создания костей. Воспользуйтесь PSD Importer, чтобы импортировать части персонажей напрямую из многослойной графики, и анимируйте их с помощью опорных кадров или кривых во временной шкале воспроизведения анимации. 2D Inverse Kinematics (IK) упрощает процесс анимации, автоматически рассчитывая положение костей и вращение, необходимое для достижения целевого положения.

Зачем использовать 2D-анимацию


Экономить время

С помощью основанной на использовании костей системы 2D-анимации вы сможете повторно использовать спрайты, чтобы оживлять персонажей, изменять частоту обновления кадров или мгновенно изменять анимацию. Экономьте время, импортируя многоуровневые изображения с помощью PSD Importer, ведь так вам не придется экспортировать спрайты по одному и пересобирать детали.


Плавная и адаптируемая анимация

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


Большее анимаций при меньшем количестве ассетов

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

Основные характеристики

Создание мешей и костей

Sprite Editor позволяет автоматически или вручную создавать меши для ваших спрайтов, устанавливать иерархию костей и задавать их вес в вершинах мешей.

Нативные решения для всех платформ

2D-анимация совместима с новыми версиями редактора и экосистемой инструментария. Разработка для нескольких платформ одновременно и бесшовная интеграция помогают сократить количество проблем с зависимостью и объем работы по импорту и экспорту.

Инструменты анимации

Создавайте анимацию прямо в окне Scene с помощью окна Dopesheet или кривых анимации и запускайте события. Используйте Animator для управления переходами анимации или Timeline для создания кат-сцен из нескольких анимационных клипов. Система частиц добавляет эффекты или 2D-физику, что делает поведение персонажей более реалистичным.

Атлас спрайтов

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

Продвинутые функции и API

IK добавляет анимацию, рассчитывая цепочку движений костей, необходимых для достижения целевой позиции. С помощью Sprite Swap вы можете изменять персонажей целиком или только их части, используя ту же самую анимацию и риггинг. И делать многое другое.

Новые возможности графики

Улучшите своих 2D-персонажей с помощью новой системы 2D-освещения для объемных эффектов с картами нормалей, инструмента Shader Graph, позволяющего создавать шейдеры в графическом интерфейсе, или Burst, значительно повышающего производительность.


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

Скелетная анимация в Blender – мощный инструмент анимирования, позволяющий создавать самые разнообразные деформации объектов. Для начала работы со скелетной анимацией в Blender быстренько создадим простенький объект, пропорциями напоминающий человека (например, как на картинке ниже). Теперь с помощью добавления костей попробуем сделать простую анимацию основных человеческих движений – движения руками, ногами и туловищем. Добавим в сцену кость – Schift A- Armature- Single Bone. Это будет главная кость нашего скелета, расположим ее посередине туловища человечка. Для удобного отображения выделим кость и войдем в панель Object Data. Затем активируем опцию X-Ray в панели Display. Теперь созданные кости будут просвечиваться сквозь мэш. Все возможности по перемещению кости аналогичны с другими объектами – пользуемся клавишами G и R.

После правильного расположения главной кости попробуем воссоздать остальной скелет. Чтобы результат был удачным, стоит припомнить школьные уроки математики и физики (в особенности разложение сил на составляющие). Для создания сложных движений требуется создания большого количества костей, мы же для простоты создадим лишь несколько, для пояснения основных принципов скелетной анимации в Blender. Выделим кость и перейдем в режим редактирования. Экструдируем из верхней и нижней части другие кости, у вас должно получиться что-то на подобие представленного на картинке. Также новые кости можно добавлять комбинацией Ctrl- E. Для удобства можно думать о костях как о суставах скелета. Начинайте экструдировать новую кость в тех местах, где вы предполагаете делать изгиб модели. Управляйте костями так же, как вы управляете и другими объектами.

После создания скелета нам нужно создать связь между объектом и скелетом. Это делается путем присвоения каждой кости определенной группы вершин. Позднее с помощью этой кости можно будет управлять именно этой группой. Тут существует несколько вариантов создания связей. Рассмотрим самую простую – автоматическое присвоение групп вершин. При создании несложной анимации это очень даже эффективно. Итак, выделим сначала объект, а затем арматуру и нажмем Ctrl-P. В появившемся меню выберем With Automatic Weights. Таким образом мы создали связь между арматурой и объектом.

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

Если человечек двигается не совсем так, как вы рассчитывали, то, возможно, вершины распределились не правильно. Вы всегда можете вручную перераспределить вершины. Выделите объект и зайдите в Object Data в панель Vertex Group. Здесь вы сможете просмотреть все созданные группы вершин и закрепленные за ними кости (обратите внимание на то, что для удобной ориентации хорошо давать название каждой кости). Если расположение вершин в какой либо кости вас не устраивает, то выберете нужную кость, и удалите ненужные вершины (Remove) или добавьте новые (Assign).

В скелетной анимации в Blender имеется много дополнительных возможностей для решения тех или иных задач, которые будут рассмотрены в других уроках. Например, очень важную роль играют ограничители (панель Bone Constraint). Инверсная кинематика, к примеру, позволяет создавать реалистичную анимацию, когда при движении одной кости, все другие следуют за ней. С помощью других ограничителей можно настраивать множество различных ограничений для вращения, масштабирования и много всего другого. Все это помогает создавать реалистичные позы. Но приступать к их изучению стоит только после уверенного освоения базовых принципов скелетной анимации на практике.

Cкелетная анимация в Blender: основные правила и простейший пример

Создания ключевых кадров для скелетной анимации в Blender в целом очень похоже на создание обычных ключевых кадров. Также как и в обычной анимации можно устанавливать ключевые кадры с помощью клавиши I. Стоит отметить удобство использования автоматического создания ключевых кадров при работе с арматурой. Нажмите в нужном кадре иконку с красной кнопочкой в нижней части интерфейса (под Timeline). Все производимые вами манипуляции в этом кадре будут автоматически записаны в ключевой кадр.

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

1. Спрайтовая анимация

2. Скелетная анимация

3. Tween-анимация

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

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


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


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

Технический фундамент

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


Промежуточные значения генерируются автоматически, посредством математической интерполяции. Что это такое? Уложусь в пару строк. Предположим есть условная группа вершин, челюсть например, и, увидев эту статью, он отвисает на 100 условных единиц, пусть будут миллиметры. Влияение шейпа на геометрию измеряется от 0 до 1, вплоть до сотых, получается где-то на 0.65, челюсть будет свисать на 65 миллиметров.

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

Скелетная анимация для поговорить

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


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

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

Захват движений и прочая магия

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

Motion Tracker

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


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

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

MotionScan

Приведу самый совершенный на сегодня пример: L.A. Noire. Игра имеет поразительно реалистичные анимации лица, основанные на сканировании лиц актеров.


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

Колхозный MotionScan

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


Работает не точно, но работает. Для начала так же определяется лицо индивида с веб-камеры, после оно делится на зоны : рот, глаза и т.д. Технически софт делает то же, что и motion tracker, только для его работы не надо себя разукрашивать.

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

Читайте также: