В течение многих лет основным инструментом анимации в Unreal Engine был инструмент Matinee. UE развивается, и почти год назад Matinee было объявлено об уходе из группы.
Вместо этого нам был представлен инструмент Sequencer. Этот инструмент интуитивно понятен, но, к сожалению, пытаясь найти документацию или руководства по анимации в UE4, вы неизменно натыкаетесь на Matinee. Уроков немного.
Спешу принять участие в борьбе с этим недостатком.
В этой статье я дам краткий экскурс в основы (в том числе исторические) Sequencer. Также расскажу о паре моментов, которые по каким-то причинам отсутствуют в документации.
Я не буду повторять официальные туториалы от Epic Games. Вы можете найти их на YouTube .
Историческая справка
Кат-сцены — неотъемлемая часть современных игр.Историю развития кат-сцен на данный момент можно разделить на три этапа, каждый из которых более тесно связан с одним из типов кат-сцен: 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 на сцену:
Теперь в контент-браузере щелкните правой кнопкой мыши и создайте последовательность уровней:
Размещаем нашу последовательность на сцене.
Лично я предпочитаю размещать его рядом с анимируемым объектом.
Также я объединяю в отдельный каталог все, что относится к конкретной Последовательности в списке объектов: саму Последовательность, звуки, сетки, сплайны, эффекты.
Открываем объект, размещенный на сцене, для редактирования – это делается через всплывающее меню или нажатием Ctrl+E. Откроется плавающее окно секвенсора.
Как правило, в одномониторных системах его удобнее размещать в виде вкладки вместе с Контент-браузером.
Нажмите кнопку «Добавить»:
и добавим нашего актера в последовательность:
И вот первое лирическое отступление, которое, возможно, съест немного вашего мозга.
Экземпляр Sequence обычно неотделим от своего прототипа.
То есть, если у вас есть прототип TestSequence в Контент Браузере и вы разместили несколько экземпляров TestSequence на уровне Level1, а затем привязали актор SK_Mannequin в первом экземпляре.
Вы привязали этого актора не к экземпляру, а к прототипу, и поэтому во все инстанции.
В общем случае нельзя сделать один прототип, штамповать из него экземпляры на уровне и привязывать их к разным акторам.
Этот функционал сейчас находится в разработке и на данный момент, если вы хотите анимировать разных актеров и на разных уровнях с помощью одной Sequence, вам придется сделать дубликат прототипа для каждого актера.
Есть альтернатива: вы можете настроить Sequencer на самостоятельное размещение объектов на сцене с привязкой к экземпляру.
Но эту тему я оставлю для другой статьи.
Не забывайте, что во многих случаях Transform не нужно анимировать (например, если ваша цель — наложить последовательность анимаций или запустить объект по сплайну).
В этом случае отключите Transform:
Добавим немного анимации:
По умолчанию экземпляр последовательности не активен.
Может быть удобно назначить ему автовоспроизведение, повтор и случайный запуск.
Я собрал последовательность из трёх анимаций:
Результат:
Часть 2. Сплайн-бег и аддитивная анимация
Запустить объект по сплайну очень просто.Как сделать сплайн объяснять не буду - это уже тысячу раз разжевано, а статья уже масштабная.
Нажимаем +Track и добавляем наш сплайн:
Напомню, что в общем случае, чтобы сплайн воздействовал на объект, нужно отключить Transform, как я показал выше.
Также стоит помнить, что скорость движения по сплайну не задается явно.
Это зависит от времени между ключевыми кадрами и длины сплайна.
Заполняем всю длину бегущей анимацией.
Тайминг ключевых кадров последовательности выбирается таким образом, чтобы скорость движения соответствовала скорости анимации:
На пути зеленые стрелки являются ключевыми кадрами для указания типа интерполяции.
По умолчанию их два, один имеет значение 0, второй имеет значение 1. Соответственно, положение между ними интерполируется с помощью сплайна.
Половину сплайна мы преодолеем бегом, а вторую – ходьбой.
Для этого замените значение второго ключевого кадра с 1 на 0,5.
Перетащите ползунок рядом с ним и щелкните кружок, чтобы создать новый ключевой кадр:
По умолчанию ключевой кадр создается с кубической интерполяцией (красный кружок), но нам нужна линейная интерполяция (зеленый треугольник).
В результате у нас должно получиться четыре треугольника, которые определяют движение по сплайну со значениями: 0, 0.5, 0.5, 1.0 Очевидно, что между ключевыми кадрами 0,5 и 0,5 перемещения не произойдет. На этом этапе мы остановим персонажа, вставим статическую анимацию и позволим ему пройти остаток пути.
Теперь перейдем к анимации.
Мы получим три временных трека с анимацией.
Верхний — основной, а два нижних — для смешивания анимаций.
Смешение нам необходимо для того, чтобы правильно остановиться и начать правильно ходить.
Несколько дорожек анимации микшируются автоматически.
Но если вы попытаетесь смешать две анимации в лоб, не контролируя вес, у вас получится беспорядок.
Персонаж будет одновременно стоять, и ходить, и руками махать, и не махать.
В общем, делать это не вариант. Поэтому мы также задаем ключевые кадры на анимации, меняем вес для бега с 1 на 0, и в этом же интервале для анимации стояния на месте - с 0 на 1. В конце анимации стояния то же самое верно обратное.
В результате мы получим плавный переход от анимации бега к анимации стояния, а затем плавный переход от стояния к анимации ходьбы.
По какой-то неизвестной мне причине (баг или особенность?) в первом треке не удалось управлять весами.
Поэтому я перенес анимацию на третий трек и свел не первый и второй, а второй и третий.
Суть не меняется, но все работает. Получилось вот так (кликабельно):
Этот метод отлично подходит, если мы хотим осуществить переход от одной анимации к другой.
Но что, если мы хотим, чтобы персонаж продолжал идти и делал что-то еще? На помощь нам приходят аддитивные анимации.
Суть этих анимаций в том, что они не полноценные.
То есть они не предоставляют всю информацию об анимации, а лишь изменения относительно исходной позиции.
Таким образом, эти анимации можно накладывать поверх уже воспроизводимой.
Конечно, если ваш персонаж во время бега активно размахивает руками, то применение анимации прикладывания руки к голове сверху не принесет пользы.
Потому что анимация военного приветствия не заменит размахивание оружием, а будет наложена сверху.
Но, например, уже можно попробовать ходить, поскольку движения рук не такие активные и все может получиться.
Unreal Engine уже содержит инструменты для получения аддитивных анимаций из полноценных.
Это можно сделать всего за несколько кликов.
Я возьму анимацию протягивания руки влево.
Дублируем анимацию и переходим в режим редактирования, после чего настраиваем блок настроек Additive:
Установите для типа аддитивной анимации значение «Локальное пространство», выберите «Выбранный кадр анимации» в качестве «Базовая позиция» и выберите исходную анимацию, с помощью которой был создан дубликат, а индекс исходного кадра должен быть равен 0. То есть первый кадр исходной анимации вычитается из всех кадры и все.
то, что останется, будет аддитивной анимацией.
Такую анимацию можно просто поставить вторым треком рядом с прогулкой без всякого дополнительного шаманства.
Результат: Честно говоря, мне еще многое хочется вам рассказать о Sequencer. Действительно мощный и интересный инструмент. Но статья уже огромная.
Мы встретимся.
когда-нибудь.
Счастливого У?! Теги: #unreal engine 4 #ue4 #Matinee #sequencer #Разработка игр #unreal engine
-
Удаление Схд Netapp Из Кластера
19 Oct, 24 -
Биткойн Преодолел Отметку В 10 000 Долларов.
19 Oct, 24 -
Стартап-Мания, Или Гербалайф Берет Паузу
19 Oct, 24 -
«Аватар Джеймса Кэмерона» — Мысли На Тему
19 Oct, 24 -
Кнопка «Новый Файл» На Github
19 Oct, 24 -
Мониторинг Как Процесс Управления Событиями
19 Oct, 24