Подкаст «Как Делают Игры»: аниматоры о тонкостях профессии, часть вторая

Аниматоры Максим Журавлёв и Роман Семёнов о том, как анимация интегрируется в игру.

12 января вышел 168 выпуск подкаста «Как Делают Игры». Уже во второй раз ведущие Сергей Галёнкин и Михаил Кузьмин поговорили с гостями об анимации.

Гости выпуска:

● Максим Журавлёв, Principal animator, Remedy Entertainment;

● Роман Семёнов, руководитель студии VelcroGames;

DTF публикует избранные фрагменты.

Подкаст «Как Делают Игры»: аниматоры о тонкостях профессии, часть вторая

Про 3ds Max и Maya

Максим Журавлёв: На Западе, в Америке для игровой анимации AAA-проектов используют Maya. Чем восточнее — тем больше становится 3ds Max. В Европе во многих компаниях, где делают реалистичных персонажей, используется Motion Builder.

В Америке всё растёт из анимационной индустрии. То есть весь парк аниматоров, технических художников, учится на Maya и работает на Maya.

Одно дело — в чём удобнее анимировать, и другое — в чём сидят ваши коллеги. Не будет же такого, что у вас моделлеры — специалисты по 3ds Max, а вы один красивый сидите в Maya. Пакеты паритетные, философия у них разная, но делают и в том, и в другом.

Motion Builder (MB) — это профессиональный пакет только для работы с анимацией. В нём нельзя моделировать, и он изначально заточен под работу с motion capture.

Мы, например, только лицо анимируем в Maya, а движения тела и камеры из MB прямо отправляются в игру, они никогда в Maya не попадают. Единственное слабое место в анимации MB: в нём тяжело делать всяких странных созданий (то есть всех, у которых не две или четыре ноги). В остальном это очень мощный пакет, к которому ничего для анимации не нужно дописывать.

Подкаст «Как Делают Игры»: аниматоры о тонкостях профессии, часть вторая

Нужно ли знать все пакеты

Максим Журавлёв: Желательно следить за тем, что используют те работодатели, у которых вы хотели бы работать. Я знаю 3ds Max и Motion Builder. Maya знаю немного, но в производстве не использую. Это три пакета, с которыми можно на любую работу ломиться в AAA-сегменте.

Роман Семёнов: У меня, наоборот, MB и Maya, а за 3ds Max слежу просто.

Максим Журавлёв: Мне кажется, в Европе многие компании уже отказываются от 3ds Max в пользу Maya. Есть ещё сторонние пакеты, например — для инди может быть интересно — Akeytsu. В нём можно и сетапить, и анимировать персонажей. Система, чем-то вдохновлённая MB, только не такая переусложнённая.

Роман Семёнов: Ещё была облегчённая версия Maya LT, стоила, если не ошибаюсь, около 75 долларов в месяц. Сначала она была сильно обрезанная, но потом они добавили некоторые функции. В ней есть моделирование, HumanIK (инверсная кинематика) и можно «запекать» текстуры: самый нужный набор для небольшой команды.

О Root Motion

Максим Журавлёв: Изначально в играх персонаж анимацией не двигался. Ещё 10 лет назад (а кто-то и позже) все анимации делали on spot. Если персонаж бежит, то он не движется по сцене вперёд, а просто ногами загребает в воздухе. Почему?

В игре анимация перемещается кодом: куда программа говорит, туда и двигается. Кто-то эту капсулу толкает физикой, прилагая к ней усилие, кто-то пишет формулы кривых, заводит джойстик в них, и если джойстик нажат — она начинает по такой-то синусоиде ускоряться вперёд.

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

Это как нанизать бабочку на палочку: она, может, крылышками и машет, но идёт туда, куда палочку потянули.

Роман Семёнов: Или как бег в фитнес-зале на дорожке. Вы бежите, но если дорожку начать двигать, скорость перестанет совпадать. Можно вспомнить первую Mafia или GTA: Vice City, когда персонажи либо семенили на месте, либо смешно высоко поднимали ноги. Я думаю, это было сделано и для того, чтобы скрыть дополнительно то, что ноги проскальзывают и бежит он не с той скоростью, с которой движется.

Максим Журавлёв: Именно. С точки зрения функциональности всё было просто: ты пишешь процедурный код, персонаж идёт туда, куда говорит код, если хочешь повернуть на 180 градусов, можешь как космический корабль за один кадр развернуться и не потерять ни милисекунды скорости. Если хочешь пореалистичнее — можно добавить задержку. Но всё это плохо для анимации, потому что никакой синхронизации между миром и тем, что персонаж в нём делает, не было.

Качественные последствия для этого очень большие. Когда человек разгоняется — он может сделать это очень разным количеством способов. Профессиональный атлет сделает низкий старт и наберёт высокую скорость сразу. Кто-то будет набирать ту же скорость долго. Это сложный и нелинейный процесс.

Подкаст «Как Делают Игры»: аниматоры о тонкостях профессии, часть вторая

Для того, чтобы решить эти проблемы, появился root motion. Если просто — это перенос того, что делает анимация в пакете в игру. Вы втыкаете под персонажа root node и двигаете её через мир. Потом программа читает это перемещение, и когда вы эту анимацию в игре проигрываете, анимация непосредственно толкает персонажа через мир.

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

Поэтому в чистом виде root motion-систем практически не существует, кроме синематиков (и то не всегда). Возникает конфликт качества и управляемости. Создаются гибридные системы, причём разные.

В Quantum Break (QB) — animation-driven locomotion система. Сначала отыгрывается анимация: ты прожал джойстик, анимация откликается и начинает играть разбег на скорость, например, 5 метров в секунду. Персонаж подготавливается, толкается, а сверху на этой штуке стоит процедурный блок. Он смотрит на то, что делает анимация. Например, он видит, что в следующем кадре анимация хочет пойти вперёд на 20 сантиметров, немножко влево и при этом повернуться по горизонтали. Потом он смотрит, куда показывает джойстик. И если анимация не идёт туда, процедурный конверт её выпрямляет — то есть доворачивает и подтаскивает, куда нужно.

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

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

Максим Журавлёв: В QB шесть анимаций только начала ходьбы, зависит от того, поворачивается ли персонаж и с какой ноги идёт. Первые шаги анимации стартов не такие, как последующие циклические. Их шесть только на походку, шесть на старт бегом, и 12 анимаций поворотов на месте. В первый момент они все смешиваются и выбирается та, что лучше подходит.

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

Роман Семёнов: Есть ещё варианты гибридных систем, например, в Just Cause 3 сделали смешанный вариант. У них развороты на месте и некоторые ускорения сделаны по старой методике, чтобы минимизировать отклик от геймпада.

Подкаст «Как Делают Игры»: аниматоры о тонкостях профессии, часть вторая

Максим Журавлёв: Когда в нашей системе персонаж просто стоит на месте — он полностью animation driven. Когда он начинает разгоняться — он в гибридной системе. А когда он набирает полную скорость — он переходит в состояние, где всё делается процедурно, а анимации выбираются автоматически из довольно большого объёма. Это тоже сделано для улучшения отклика.

Один из больших недостатков гибридных систем — это мультиплеер: все смешения анимаций нужно обсчитать и отправить через клиент на сервер. Обычно сетевые системы ведутся кодом. Бывают и исключения, например, Uncharted и For Honor.

Поднять качество в полностью процедурной системе практически невозможно. А вот в Paragon используется обратная история. Ты нажимаешь джойстик, генерируется траектория. Но одновременно генерируется и модель-предсказание. Он знает, где ты будешь через треть секунды, если продолжишь жать ввод. И он эту информацию отдаёт анимации. Поэтому, когда ты отпускаешь джойстик — анимации сообщается: я остановлюсь через 70 сантиметров под таким-то углом, и анимация выбирает из своего набора наилучший вариант к тому, что делает код и сверху его подсаживает.

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

То есть движение вперёд идёт от анимации, а повороты и движение назад от процедурной системы. Фактически, я могу переключаться от полностью animation driven в процедурный режим таким слайдером. Для синематик-игр такая возможность экономит много усилий.

Сергей Галёнкин: Не могу говорить про анимацию, но некоторые из таких вещей геймплею помогают: когда человеку требуется время на разворот, и он задом бежит медленнее. В Paragon изначально это игнорировали. А в одном из апдейтов мы сделали это ближе к реальности. И игрокам понравилось, потому что они считают, что это добавляет глубины геймплею.

Максим Журавлёв: Это зависит от игры. Вот есть такой термин —fast paced action shooter. Быстрые, традиционные игры типа InFamous, когда игру дизайнят на старых, олдскульных аркадных механиках. Там это не взлетает.

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

О прямой и инверсной кинематике

Роман Семёнов: У персонажа есть скелет, и он изначально движется по прямой кинематике. Это последовательная цепь костей, например — локоть, плечо и запястье. Если во всей это системе подняли плечо, вслед за ним идут локоть и запястье. То есть, если вам нужно куда-то потянуться, что-то взять и так далее — малейшее изменение сместит всю руку.

Инверсная кинематика (IK) работает наоборот. Если представить лампу настольную, вы двигаете её в сторону и все суставы за ней поедут сами. Это и есть IK, то есть мы берем запястье, поднимаем вверх и вся рука пересчитывается математически и она поднимает локоть, поднимает плечо и так далее. Либо персонаж поставил руку на стенку и действует, разговаривает, но рука остаётся на стене.

Есть понятие full body IK, инверсная кинематика на всё тело. Если мы потянем персонажа за руку, то он начнёт наклоняться, тянуться в этом направлении всеми частями тела.

Это используется, чтобы решать проблемы, в частности, ходьбу по неровной поверхности. Даже если у вас есть анимации для 12 направлений, они всё равно в какой-то момент смешиваются, и нога будет скользить (например, вы взяли на 5 градусов левее, чем угол, на который рассчитана анимация). IK «прижимает» к земле проскальзывающую ногу. Или применяет баланс к персонажу, стоящему в качающейся лодке. И дальше всё зависит от того, насколько система влияет на анимацию. Её влияние может быть либо абсолютным, либо частичным.

Подкаст «Как Делают Игры»: аниматоры о тонкостях профессии, часть вторая

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

Максим Журавлёв: Это искусственные анимации, и они всегда делаются процедуркой, потому что персонаж может стоять к плоскости под бесконечным количеством углов. Но и процедурка может быть более или менее качественной. В первом случае учитывается биомеханика поведения: если подтягивается таз к ноге, это как-то отражается на верхней части тела. И одно дело, если персонаж полуприсев бежит по неровной поверхности, и другое — если расслабленно идёт.

В QB использовалась одна хитрость. У нас весь locomotion в плоскости — когда ты начинаешь бежать по неровной поверхности, работает IK. Но если ты просто постоянно бежишь, там подклеены циклы бега по наклонной плоскости вперёд: как персонаж заходит на неё с усилием. Их снимали с актёра, с motion capture это выглядит пожирнее, чем с процедуркой. Но это только циклы. Никаких остановок, начала ходьбы не происходит.

Роман Семёнов: Есть ещё один вариант: персонаж идёт, у него ноги уже подстроились под плоскость. Его спина наклоняется чуть вперёд, если он поднимается, либо чуть назад, если он спускается. Это процедурное действие тоже чуть улучшает всю ситуацию.

О генерации анимации

Максим Журавлёв: В AAA-проектах есть только одна система, которая генерирует анимацию — Natural Motion Euphoria. Это как ragdoll, только с мышцами и интеллектуальный, который пытается симулировать человеческое поведение. Он используется в GTA:V и Star Wars: Force Unleashed.

Роман Семёнов: Например, если персонажа ударить — он не падает, а начинает отступать, перебирая ногами, система пытается удержать баланс. Если у него сзади окажется бордюр, он зацепится пяткой и упадёт, сложится калачиком максимально — руки к голове, колени поджать.

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

Об анимационных state-машинах

Максим Журавлёв: То, о чём мы рассказывали выше об огромном количестве анимаций только на начало бега — это не так страшно. Но компьютер не знает, кто куда бежит, с какой скоростью, шагом или бегом. Когда ты это внедряешь в игру, тебе надо подключить анимации на такие крючочки, контрольные параметры. Оно само по себе не собирается, это делается руками. Раньше это всё было в коде. Программист загонял анимации в списки и сам их в коде смешивал. Когда тебе нужно сделать проект, в котором три уникальных персонажа, у каждого в locomotion по 94 анимации и они ещё все смешиваются это тяжело. Поэтому на рынке появилась системы state machine: программы с графическим интерфейсом, позволяющие делать это с минимальным скриптованием и простым программированием.

У нас для этого используется NaturalMotion Morpheme, в Unity встроен Mecanim и в Unreal есть продвинутая система. У Naughty Dog своя система, написанная внутри компании, у Ubisoft своя.

Если вам не понравилось, как анимация старта работает — вам не нужно тормошить программиста, достаточно чуть-чуть подкрутить эту анимацию, поставить на неё ускорение или переделать ивенты на правую и левую ноги. Всё делается в одной middleware, промежуточной программе.

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

Про Motion Matching

Максим Журавлёв: Это самая горячая тема этого года. Ubisoft Toronto и Ubisoft Montreal представили на GDC два доклада: у них в двух студиях разные версии этой технологии. For Honor — первая игра на рынке, которая будет её использовать эту технологию.

2020
33 комментария

Вот ни разу не пишут про Blender. Сколько ни читал про моделирование или анимирование, про Blender вообще не упоминают. Неужели программа плоха или бесплатное ПО не считается хорошим ПО? В этой проге что моделировать удобно, что анимировать. Все вроде бы доступно и понятно... Пытался поработать в 3DS MAX и после первой же модели забросил, так как интерфейс показался каким-то перегруженным и деревянным. Blender как-то по-мобильнее, удобнее, все на хоткеях. Лепка модели сплошное удовольствие. В общем, непонятно почему данный продукт оставляют без внимания.

2

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

3

Комментарий недоступен

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

Насчёт блендера - Блендер и Синька долгое время были "догоняющими" продуктами, в них много чего не было по сравнению с флагманами. Сейчас они по насущным вопросам догнали, а в некоторых перегнали флагманы, например синька уверена заняла нишу в оформлении тв каналов и моушен графике.

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

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

2

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

1

Любопытно. Я вообще-то анимацией не занимаюсь, но, когда потребовалось сделать достаточно сложную и качественную State Machine, у меня получилось что-то подобное: гибрид на Root Motion с искусственной подгонкой сверху.

1

Интересно, хотя большую половину не поняла. Но на всякий добавлю себе в закладки))