Анимация¶
Содержание
В общем случае, к анимации относятся изменения параметров объектов во времени. Движком поддерживаются следующие типы анимации:
Объектная анимация. Заключается в трансформации объекта в пространстве как единого целого.
Скелетная анимация, то есть деформация геометрии объекта с помощью системы костей (скиннинг). Сюда же относится анимация костей в арматурном объекте с целью прикрепления объектов к костям.
Вертексная анимация. Заключается в покадровой записи деформаций объекта с их последующим воспроизведением.
Параметризация источников звука. Изменяемые параметры: громкость (
Volume
) и высота звука (Pitch
).Анимация выходного значения ноды
Value
в нодовом материале.Процедурная анимация в виде колебаний объекта под действием ветра. Описано отдельно.
Эмиссия частиц из источника. Описано в соответствующем разделе.
Управление анимацией¶
Управление анимацией в движке осуществляется одним из двух способов:
Автоматически, с помощью активации панели
Animation
и указания поведения анимацииBehavior
в свойствах объекта. В данном случае будет осуществлён поиск доступного метода и в случае положительного результата, объект анимируется с момента загрузки сцены. В случае скелетной анимации, по умолчанию воспроизводится актор, назначенный на объекте в окнеAction Editor
.Программно, используя функции модуля движка
animation
.
Для отладки анимации имеет смысл использовать интерфейс Animation
программы-просмотрщика, рассмотренный в соответствующем разделе.
Объектная анимация¶
Изменяемые параметры: координаты центра (Location
), поворот (Rotation
) и масштабирование (Scale
).
Осуществляется с помощью добавления ключей анимации для движения объекта в программе Blender и их последующего воспроизведения в движке.
Поддерживаются следующие типы ключей:
- Location
Rotation – необходимо осуществлять в режиме
Quaternion(WXYZ)
либоXYZ Euler
.Scale – для получения корректных результатов, фактор масштабирования должен быть одинаковым вдоль любых из осей.
LocRot – комбинация Location и Rotation.
LocScale – комбинация Location и Scale.
LocRotScale – комбинация Location, Rotation и Scale.
RotScale – комбинация Rotation и Scale.
В случае анимации объекта-меша, необходимо включение опции Force Dynamic Object
панели Rendering Properties
на вкладке свойств объекта.
Скиннинг и скелетная анимация¶
Для осуществления скелетной анимации, кроме деформируемого объекта-меша требуется объект-арматура. Осуществляется в четыре этапа:
Создание скелета объекта в арматурном объекте.
Назначение вертексных групп в объекте-меше и их привязка к костям. Может быть осуществлено, например, методом “раскраски” весов (weight painting).
Анимация костей в арматурном объекте. Используются те же ключи, что и в случае объектной анимации.
В случае нетривиальных видов скелетной анимации, включающих инверсную кинематику, требуется стадия запекания анимационных акторов (блок
Action
в Blender). Запекание производится с помощью интерфейсаBake Skeletal Animation
, расположенного на панели инструментовBlend4Web
:
Параметры запекания¶
Запекание производится при выделенном арматурном объекте.
В окне со списком запекаемых акторов приводятся те акторы, которые следует запечь. Если список пуст, запекаются все возможные акторы.
- Name
Имя текущего актора из списка запекаемых акторов.
- Optimize Keyframes
Произвести оптимизацию ключей анимации после запекания. В случае получения некорректных результатов, рекомендуется отключить опцию.
- Use Blender’s Native Baker
Использовать для запекания анимации средства самого Blender (возможность Bake Action), а не Blend4Web. Настройки средства запекания Blender отличаются от настроек Blend4Web.
- Bake
Произвести запекание. После успешного окончания процесса на сцене появляются акторы с именами вида B4W_BAKED_ИМЯ_АКТОРА. Данные акторы будут автоматически назначены на арматурном объекте и воспроизведены в движке. Стоит отметить, что работа подобных акторов в Blender не гарантируется.
Примечание
Движок поддерживает не более 4-х вертексных групп на каждом из вертексов, эти группы отбираются по величине влияния или “веса” вертекса. В процессе загрузки исходного файла со сценой “веса” вертексов проходят через процедуру нормализации, т.е. их сумма приводится в единице.
Для удаления вертексных групп, которые не используются арматурой, можно воспользоваться кнопкой Clean Unused Vertex Groups
в одноименной панели.
В Blend4Web присутствует начальная поддержка ограничителей для костей. На сегодняшний день поддерживается несколько типов ограничителей, в том числе Copy Transforms
, который позволяет привязывать арматуру к различным объектам, в том числе физическим (эффект ragdoll). Поддержка других ограничителей ожидается в будущих версиях.
Полный список поддерживаемых ограничителей и их описания доступны в соответствующем разделе.
Смешивание анимации¶
Движок также поддерживает смешивание анимации. Для использования этой возможности должна быть включена опция Animation Blending
(находится на панели Animation
вкладки Object
).
Предупреждение
Одновременно могут быть смешаны не более двух анимаций.
Для того, чтобы смешать анимации, необходимо сперва разрешить смешивание двум анимационным слотам:
var m_animation = require("animation");
var m_scenes = require("scenes");
...
var armobj = m_scenes.get_object_by_name("My_Armature");
...
m_animation.set_skeletal_slots(armobj, slot_1, slot_2, 0.5);
Вертексная анимация¶
Позволяет записать любые изменения геометрии объекта-меша. Необходимо учитывать, что каждый кадр вертексной анимации эквивалентен мешу. Не рекомендуется создание длинной анимации для высокополигонального меша, поскольку это может привести к существенному возрастанию размера исходного и экспортируемого файлов, а также замедлить работу движка.
Для запекания вертексной анимации предусмотрен инструмент Bake Vertex Animation
, расположенный на панели инструментов Blend4Web
.
Параметры запекания¶
- Name
Имя, которое будет присвоено запеченной анимации.
- Start
Кадр, с которого начнётся запекание анимации.
- End
Кадр, которым закончится запекание анимации.
- Allow NLA
Позволяет управлять запечённой анимацией при помощи NLA.
- Status
В этой строке приводится количество кадров, из которых состоит запечённая анимация. Если запекание ещё не было произведено, вместо количества кадров приводится слово
Empty
.- Bake
Запекание анимации производится при нажатии на эту кнопку.
Примечание
Для корректной работы вершинной анимации следует активировать опцию Export Vertex Animation
(раздел Export Options
панели Object
) у соответствующего объекта.
Анимация по умолчанию¶
В Blend4Web присутствует возможность автоматически проигрывать анимацию объекта. Для этого нужно активировать параметр Apply Default Animation
на вкладке Animation
панели Object
того объекта, анимацию которого требуется включить. Поддерживается скелетная и объектная анимация.
Проигрывание анимации начинается сразу после запуска приложения и осуществляется аналогично ноде Play Timeline, но без возможности задать начальный и конечный кадр (в качестве таковых всегда выступают первый и последний кадры таймлайна). Также присутствует возможность задать поведение анимации, аналогично ноде Play Animation.
- Animation Blending
Этот параметр доступен только для объектов типа
Armature
. Он должен быть активирован для того, чтобы смешивание скелетных анимаций стало возможным.Смешивание анимаций описывается в соответстующем разделе.
Нелинейная анимация¶
Редактор NLA¶
Редактор нелинейной анимации, имеющийся в программе Blender, позволяет в удобной форме задавать поведение сцены. С его помощью можно реализовать несложные сценарии. Таким образом исключается необходимость программирования простых сцен и приложений.
Движком поддерживается управление следующими сущностями:
Любая анимация, параметры которой могут быть представлены с помощью действий (Action)
Воспроизведение звуков
Эмиссия частиц (в виде привязки к глобальной шкале времени)
Использование¶
Во вкладке
Scene
активировать панельNLA
.В редакторе
NLA Editor
задать необходимую конфигурацию поведения сцены.На панели
Timeline
выбрать интервал времени анимации.
Дополнительные настройки¶
Настройка сцены NLA > Cyclic NLA позволяет активировать режим циклической NLA-анимации.
Примечание
Для использования вертексной анимации необходимо выставить опцию “Allow NLA” на панели запекания вертексной анимации.
Ограничения¶
Одновременное проигрывание различных видов анимации для одного объекта не поддерживается.
Управление через API¶
Для управления нелинейной анимацией через API существует модуль nla.js
.
// ...
var m_nla = require("nla");
// ...
m_nla.set_frame(150);
// ...
var frame = m_nla.get_frame();
// ...
m_nla.play();
// ...
m_nla.stop();
// ...
При использовании Logic Editor функции set_frame
, play
, stop
недоступны.
Параметризация источников звука¶
На объектах-спикерах дополнительно поддерживаются следующие типы анимационных ключей:
Volume – громкость звука источника.
Pitch – высота звука источника.
Параметризация источников звука по своей сути повторяет объектную анимацию.
Анимация нод Value и RGB¶
В нодовых материалах поддерживается воспроизведение анимационных ключей, проставленных на нодах Value
и RGB
.
Примечание
Анимация числовых и цветовых значений в других нодах не поддерживается.
Может быть также использована для создания треков в редакторе нелинейной анимации. Поддерживается несколько анимированных нод Value
и RGB
в одном материале. Значения нод могут быть также установлены программно с помощью методов set_nodemat_value
и set_nodemat_rgb
модуля objects
.
См.также