Движок Unreal 4. Секвенсор Вместо Matinee

В течение многих лет основным инструментом анимации в Unreal Engine был инструмент Matinee. UE развивается, и почти год назад Matinee было объявлено об уходе из группы.

Вместо этого нам был представлен инструмент Sequencer. Этот инструмент интуитивно понятен, но, к сожалению, пытаясь найти документацию или руководства по анимации в UE4, вы неизменно натыкаетесь на Matinee. Уроков немного.

Спешу принять участие в борьбе с этим недостатком.

В этой статье я дам краткий экскурс в основы (в том числе исторические) Sequencer. Также расскажу о паре моментов, которые по каким-то причинам отсутствуют в документации.

Я не буду повторять официальные туториалы от Epic Games. Вы можете найти их на YouTube .



Движок Unreal 4. Секвенсор вместо Matinee



Историческая справка

Кат-сцены — неотъемлемая часть современных игр.

Историю развития кат-сцен на данный момент можно разделить на три этапа, каждый из которых более тесно связан с одним из типов кат-сцен: 1) Живое действие 2) Предварительный рендеринг/в реальном времени 3) Интерактивный Все три типа роликов существуют параллельно.

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

Первый этап начался в то время, когда объем памяти, доступной разработчикам для распространения игр, резко увеличился, но емкость оставалась весьма посредственной.

Это произошло благодаря развитию оптических дисков.

Мощности ВМ не хватило, чтобы просчитать более-менее интересную картину в реальном времени.

А вот видео можно было бы показать с небольшой хитростью.

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

Подробнее об этом этапе вы можете прочитать в статье Архаичные алгоритмы сжатия видео эпохи FMV-игр от Янмар .

Второй этап всем нам хорошо известен, ведь еще недавно он был в тренде.

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

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

Кат-сцены в игровых движках — это то, к чему мы хорошо привыкли.

То, с чем мы живем последнее десятилетие.

Хорошим примером может послужить вступительный ролик игры Company Of Heroes. Когда вы запускаете игру впервые, очень легко пропустить переход от предварительно отрендеренной кат-сцены к игре.

Первоначально Matinee была создана для создания предварительно отрендеренных кат-сцен в реальном времени.

Со временем он приобрел возможность создавать анимацию не только непосредственно внутри неинтерактивных сцен, но и бесплатно анимировать объекты на сцене.

Современные игроки требуют, и технологии позволяют избавиться от неинтерактивных кат-сцен.

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

Таким образом, третий этап ознаменовал появление интерактивных роликов или QTE (Quick Time Event).

Это кат-сцена, в которой у игрока есть возможность влиять на события, нажимая в нужный момент указанные кнопки.

Прекрасным примером может служить практически вся игра Tomb Rider 2013, но многие игроки из-за высокого эмоционального напряжения помнят QTE — в самом начале игры, когда нужно отбиться от преследователя в подземелье.

Вы только представьте, что там не QTE, а неинтерактивная кат-сцена.

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

И тут начались проблемы Matinee. Если вы хотите сделать классную, постановочную вставку в игровой мир, которая при этом не будет кат-сценой, с этим справится Matinee, но он для этого не предназначен (напомню, его задача — кат-сцены).

И Epic Games решила, что необходимо создать новый инструмент, который бы сочетал в себе как возможности Matinee, так и возможность управлять полностью интерактивной анимацией.

По сути, Sequencer — это рефакторинг Matinee с учетом новых требований к инструменту анимации.



Часть 1. Знакомство с Sequencer и работа с анимацией

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

Давайте установим SkeletalMeshActor на сцену:

Движок Unreal 4. Секвенсор вместо Matinee

Теперь в контент-браузере щелкните правой кнопкой мыши и создайте последовательность уровней:

Движок Unreal 4. Секвенсор вместо Matinee

Размещаем нашу последовательность на сцене.

Лично я предпочитаю размещать его рядом с анимируемым объектом.

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

Открываем объект, размещенный на сцене, для редактирования – это делается через всплывающее меню или нажатием Ctrl+E. Откроется плавающее окно секвенсора.

Как правило, в одномониторных системах его удобнее размещать в виде вкладки вместе с Контент-браузером.

Нажмите кнопку «Добавить»:

Движок Unreal 4. Секвенсор вместо Matinee

и добавим нашего актера в последовательность:

Движок Unreal 4. Секвенсор вместо Matinee

И вот первое лирическое отступление, которое, возможно, съест немного вашего мозга.

Экземпляр Sequence обычно неотделим от своего прототипа.

То есть, если у вас есть прототип TestSequence в Контент Браузере и вы разместили несколько экземпляров TestSequence на уровне Level1, а затем привязали актор SK_Mannequin в первом экземпляре.

Вы привязали этого актора не к экземпляру, а к прототипу, и поэтому во все инстанции.

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

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

Есть альтернатива: вы можете настроить Sequencer на самостоятельное размещение объектов на сцене с привязкой к экземпляру.

Но эту тему я оставлю для другой статьи.

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

В этом случае отключите Transform:

Движок Unreal 4. Секвенсор вместо Matinee

Добавим немного анимации:

Движок Unreal 4. Секвенсор вместо Matinee

По умолчанию экземпляр последовательности не активен.

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



Движок Unreal 4. Секвенсор вместо Matinee

Я собрал последовательность из трёх анимаций:

Движок Unreal 4. Секвенсор вместо Matinee

Результат:

Часть 2. Сплайн-бег и аддитивная анимация

Запустить объект по сплайну очень просто.

Как сделать сплайн объяснять не буду - это уже тысячу раз разжевано, а статья уже масштабная.

Нажимаем +Track и добавляем наш сплайн:

Движок Unreal 4. Секвенсор вместо Matinee

Напомню, что в общем случае, чтобы сплайн воздействовал на объект, нужно отключить Transform, как я показал выше.

Также стоит помнить, что скорость движения по сплайну не задается явно.

Это зависит от времени между ключевыми кадрами и длины сплайна.

Заполняем всю длину бегущей анимацией.

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

Движок Unreal 4. Секвенсор вместо Matinee

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

По умолчанию их два, один имеет значение 0, второй имеет значение 1. Соответственно, положение между ними интерполируется с помощью сплайна.

Половину сплайна мы преодолеем бегом, а вторую – ходьбой.

Для этого замените значение второго ключевого кадра с 1 на 0,5.

Движок Unreal 4. Секвенсор вместо Matinee

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

Движок Unreal 4. Секвенсор вместо Matinee

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

В результате у нас должно получиться четыре треугольника, которые определяют движение по сплайну со значениями: 0, 0.5, 0.5, 1.0 Очевидно, что между ключевыми кадрами 0,5 и 0,5 перемещения не произойдет. На этом этапе мы остановим персонажа, вставим статическую анимацию и позволим ему пройти остаток пути.

Теперь перейдем к анимации.

Мы получим три временных трека с анимацией.

Верхний — основной, а два нижних — для смешивания анимаций.

Смешение нам необходимо для того, чтобы правильно остановиться и начать правильно ходить.

Несколько дорожек анимации микшируются автоматически.

Но если вы попытаетесь смешать две анимации в лоб, не контролируя вес, у вас получится беспорядок.

Персонаж будет одновременно стоять, и ходить, и руками махать, и не махать.

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

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

По какой-то неизвестной мне причине (баг или особенность?) в первом треке не удалось управлять весами.

Поэтому я перенес анимацию на третий трек и свел не первый и второй, а второй и третий.

Суть не меняется, но все работает. Получилось вот так (кликабельно):

Движок Unreal 4. Секвенсор вместо Matinee

Этот метод отлично подходит, если мы хотим осуществить переход от одной анимации к другой.

Но что, если мы хотим, чтобы персонаж продолжал идти и делал что-то еще? На помощь нам приходят аддитивные анимации.

Суть этих анимаций в том, что они не полноценные.

То есть они не предоставляют всю информацию об анимации, а лишь изменения относительно исходной позиции.

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

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

Потому что анимация военного приветствия не заменит размахивание оружием, а будет наложена сверху.

Но, например, уже можно попробовать ходить, поскольку движения рук не такие активные и все может получиться.

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

Это можно сделать всего за несколько кликов.

Я возьму анимацию протягивания руки влево.

Дублируем анимацию и переходим в режим редактирования, после чего настраиваем блок настроек Additive:

Движок Unreal 4. Секвенсор вместо Matinee

Установите для типа аддитивной анимации значение «Локальное пространство», выберите «Выбранный кадр анимации» в качестве «Базовая позиция» и выберите исходную анимацию, с помощью которой был создан дубликат, а индекс исходного кадра должен быть равен 0. То есть первый кадр исходной анимации вычитается из всех кадры и все.

то, что останется, будет аддитивной анимацией.

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

Результат: Честно говоря, мне еще многое хочется вам рассказать о Sequencer. Действительно мощный и интересный инструмент. Но статья уже огромная.

Мы встретимся.

когда-нибудь.

Счастливого У?! Теги: #unreal engine 4 #ue4 #Matinee #sequencer #Разработка игр #unreal engine

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.