Здравствуйте. Вы находитесь на сайте Unreal Level. Данный ресурс посвящен редакторам карт игр серии Unreal, UT и Gears of War. Основная цель сайта , помочь всем желающим освоить любой из редакторов вышеперечисленных серий. Наибольшим приоритетом на этом сайте, обладает редактор UnrealED for Unreal Engine 3 и редактор движка Unreal Engine 3.5, входящий в комплект разработки UDK, поскольку это наиболее актуальная на сегодняшний день технология.
Animation System Overview
автор: FACH | 2 Февраля 2011 | Просмотров: 4226

Автор: Джеймс Голдинг

Обновил: Лаурент Делайен

Перевод: LSplit

Оригинал: Animation System Overview


 

Введение

Система анимации UE добавляет движение объектам. Анимированные объекты называются SkeletalMesh (скелетными мешами). В отличие от StaticMesh (статических мешей) (которые могут быть анимированы только через Matinee), скелетные меши имеют множество костей, составляющих скелет.  Эти кости используются для управления движением объектов и прикрепления к мешу других объектов.

 

Есть две основные части системы анимации – воспроизведение анимации ключевыми кадрами и смешивание анимаций вместе.

 

Pipeline (Пайплайн)

 

Система анимации – это часть пайплайна (своеобразной последовательности обработки) UE. Сначала, обрабатывается простоя анимация (смешивание анимации). Далее добавляются  Bone Controller’ы (контролеры костей). Затем – физика для скелета. Физические подсистемы затем обрабатывают остальную физику, и затем графические системы делают рендер всего.

 

 

Animation System Overview

 

 

Рабочий процесс

 

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

 

Animated Meshes

 

В UE3 анимированные меши называются скелетными мешами, так как механизм для управления анимацией основан на костях, составляющих скелет. Ранее была также анимация, основывающаяся на вершинах (вершинная анимация).

 

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

 

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

 

Обзор Blend Tree

 

Ниже изображено простое дерево смешивания анимаций:

 

 

Animation System Overview

 

Дерево состоит из узлов. Присутствуют два основных класса узла:

Blend Nodes (овалы) – имеют множество ответвлений и смешивают другие узлы вместе определенным образом. Базовый класс для смешивания это AnimNodeBlendBase.

Data Nodes (боксы) – листья дерева, не имеют ответвлений, но на самом деле генерируют трансформацию костей.

 

В этом примере, узлы ‘Directional Blendсмешивает вместе анимации перемещения, подключенные к нему в дереве, на основе направления перемещения актера. Это позволит произвести направленную анимацию бега или ходьбы. Затем эти данные подаются в ‘Speed-based blend’, в котором соединяются два ответвления вместе на основе скорости актера.

 

Легко создать весьма конкретные типы смешиваний, основанные на нескольких базовых типах узлов смешивания, определенных в движке.

 

Смотрите «AnimationNodes» для получения подробной информации о стандартных узлах анимации доступных в движке.

 

Построение Blend Tree

 

Деревья анимации строятся при помощи AnimTree редактора, который является частью редактора UE3. Вы можете создать новый AnimTree элемент, используя Content Browser. Откройте новый элемент двойным щелчком мыши и увидите пустой редактор дерева анимаций.

 

Затем Вы можете применить Ваше новое дерево анимации SkeletalMeshComponent’у в блоке default properties:

 

defaultproperties

{

   Begin Object Class=SkeletalMeshComponent Name=SkeletalMeshComponent

      SkeletalMesh=SkeletalMesh'BigCritter.CritterMesh'

      AnimSets(0)=AnimSet'BigCritter.CritterAnims'

      AnimTreeTemplate=AnimTree'BigCritter.CritterAnimTree'

   End Object

}

 

Важно, что Вы свяжете AnimTree с AnimTreeTemplate свойством, а не с Animations.

Когда начинается игра, AnimTree, на которую ссылается AnimTreeTemplate, копируется и этот экземпляр присваивается анимации и именно он используется во время игрового процесса, поскольку он содержит фактическое состояние.

 

Просмотреть больше информации об AnimTree редакторе здесь: «AnimTreeEditorUserGuide».

 

AnimTree узел


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

 

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

 

Смешивающие узлы                  


Смотрите «
AnimationNodes» для получения более подробной информации о стандартных анимационных узлах движка.

 

Воспроизведение анимации

 

AnimSequence

 

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

 

AnimSet

 

AnimSet является собранием AnimSequence. Они хранятся в пакетах в Content Browser так же, как материалы, меши и т.д.

 

 

Animation System Overview

 

 

Все анимационные последовательности, входящие в AnimSet должны иметь одинаковое количество треков и треки должны относится к одним и тем же костям. На это необходимо обратить внимание при импорте .PSA файла в AnimSetViewer. Смотрите «ImportingAnimationTutorial» для получения дополнительной информации об AnimSetViewer и импорте анимации. Также смотрите «AnimSetEditorUserGuide» для получения дополнительной информации о AnimSetViewer.

 

Additive Animation (Добавочные анимации)

 

Анимационные последовательности по умолчанию хранят полную скелетную анимацию. Но также возможно создать добавочные анимации. Добавочные анимации создаются в AnimSet редакторе, путем вычитания из одной анимации другую. AnimTree может затем использовать несколько узлов, чтобы добавить добавочную анимацию. Добавочная анимация может использоваться как средство сжатия путем отбрасывания избыточных данных. Хотя ими и сложнее манипулировать, но с их помощью можно значительно сократить количество анимаций и соответственно память, используемую ими.

 

Для получения информации по созданию добавочных анимаций посетите «AnimSetEditorUserGuide».

 

AnimNodeSequence

 

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

 

Анимационная последовательность, которую Вы хотите воспроизвести задается по имени в свойствах AnimNodeSequence. Поиск AnimSequence будет проходить через массив AnimSet’ов SkeletalMeshComponent. Преимущество ссылок на анимационные последовательности  по имени над указателями в том, что в этом случае дерево можно использовать для совершенно разных мешей/анимации. При поиске через массив AnimSet’ов, он начинает с конца и поднимается к началу, пока не найдет AnimSet  с анимационной последовательностью с таким именем. Это позволяет переопределить определенную последовательность путем добавления позднее в массив нового AnimSet, содержащего последовательность с тем же именем.   

 

Свойства AnimNodeSequence

 

bPlayingиспользуется для воспроизведения и приостановки анимации.

bLooping – устанавливается, чтобы зациклить анимацию.

Rate – скорость воспроизведения анимации.

bNoNotify – если установлен, то анимационные уведомления не будут запускаться.

bShowTimeLineSlider – включает временную линию и бегунок для анимации.

 

AnimGroups

 

При управлении большим количеством разных анимаций вместе необходимо быстро организовать эти анимации и управлять ими на высоком уровне. Чтобы помочь с этим, система анимации использует концепцию анимационных групп (AnimGroups).

 

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

 

Синхронизация

 

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

                               

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

 

Уведомления

 

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

 

Контроль скорости воспроизведения

 

Наконец, анимационные группы позволяют контролировать скорость воспроизведения анимации на уровне группы. Отметим, что это в дополнение к скорости воспроизведения самого узла. Поэтому узлы могут иметь различную переменную скорость.

 

Настройка

 

Чтобы создать новую группу, выберите корневой узел дерева анимации. Раскройте вкладку AnimGroups в свойствах и добавьте новую запись. Введите необходимое имя для Вашей группы в поле “GroupName”. Свойство RateScale является глобальным регулятором скорости в рамках группы.

 

Затем выберите необходимый AnimNodeSequence, который Вы хотите добавить в данную группу. Раскройте вкладку Group в свойствах. Там Вы найдете следующие свойства:

bForceAlwaysSlave – узел будет синхронизирован, но никогда не будет выбран в качестве главного узла.

bSynchronize – по умолчанию принимает истинное значение. Отключите, если хотите, чтобы узел был синхронизирован с остальными.

SynchGroupName – название группы, к которой узел принадлежит.

SynchPosOffset – позволяет достичь синхронизации анимации в ручную, путем смещения анимации.

 

 

Корневое движение

 

Смотрите «Root Motion»

 

Контроллеры костей

 

После составления и смешивания анимации, могут быть добавлены костные контроллеры, такие как IK (Inverse Kinematics или обратная кинематика). Для получения информации о данном шаге и узлах данного типа посетите «UsingSkeletalControllers» страницу.

 

Физическая анимация

 

Для получения информации о комбинации анимации и физики смотрите посетите «Physical Animation»  страницу.

 

Полезные консольные команды

 

Show bone – включает визуальное отображение костей скелетных мешей.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

#1 написал: ScorpyX
9 Февраля 2011 06:19 | ICQ: 333879808 |


Группа: Активист
Регистрация: 13.08.2009
пригодится : ]


--------------------
Публикаций: 0 | Комментариев: 45      
#2 написал: Kanske
29 Декабря 2011 15:51 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 29.12.2011
LSplit, я прям даже не поленился зарегится чтобы тебе сказать что твой машинный перевод бесполезен. Учи язык, в первую очередь русский.
Публикаций: 0 | Комментариев: 1      
#3 написал: FACH
29 Декабря 2011 18:30 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
Kanske, твой пост бесполезен без примера как надо было бы перевести.


--------------------
Публикаций: 134 | Комментариев: 778      
#4 написал: LS
29 Декабря 2011 20:30 | ICQ: Не Указано |


Группа: Активист
Регистрация: 25.06.2010
kanske, я для тебя тоже исключение сделаю, нарушу свою молчание...
Я как бы себя и не мнил великим всезнающим лингвистом и вабшэ я чурко нэрюсскый)
А ты раз уж такие заявы выдаешь уж побаловал бы общественость своими правильными переводами...
Публикаций: 0 | Комментариев: 12      
Информация
Посетители, находящиеся в группе Гости, не могут оставлять Комментарии в данной новости...






При копировании материалов, активная ссылка на UNREAL-LEVEL.RU обязательна!
© 2008—2012, UNREAL-LEVEL.RU. Все права защищены.