ИгрыХабрахабр

Реалистичная анимация персонажей в играх с помощью ИИ

Обученная на Motion Capture траекториях нейросеть пытается копировать движения реальных людей, но при этом адаптирует их под персонажей видеоигр. Разработчиками из Эдинбургского Университета представлен новый алгоритм для создания реалистичных движений персонажей в играх.

Открывание дверей, перенос предметов, использование мебели. Одна нейросеть способна управлять сразу несколькими действиями в игре. Этим занимается область машинного обучения под названием Reinforcement Learning. При этом она динамично изменяет положения ног и рук, чтобы персонаж мог реалистично держать ящики разного размера, садиться на разные по размеру стулья, а также пролезать в проходы разной высоты.
Обычно под управлением персонажами в играх с помощью ИИ подразумевается полный контроль усилий в конечностях, основанный на каком-нибудь физическом движке, имитирующем законы физики. К сожалению, таким способом пока не удается достичь реалистичных движений.

Именно таким способом около года назад был достигнут значительный прогресс в реалистичной анимации 3d персонажей. С другой стороны, можно попытаться обучить нейросеть имитировать движения реальных людей, снятые с помощью Motion Capture.

По этой теме было несколько последовательных научных работ, но наиболее полное описание можно почитать в работе Towards a Virtual Stuntman, посвященной нейросети DeepMimic (https://www.youtube.com/watch?v=vppFvq2quQ0).

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

Например, обучая нейросеть на прохождениях игр людьми, и тоже начиная эпизоды не с начала, а из случайных точек (конкретно в этом случае с конца, и постепенно сдвигаясь к началу), в OpenAI обучили нейросеть проходить игру Montezuma's Revenge. Позднее эту идею подхватили и совсем в других областях. Которая не поддавалась до этого обычным Reinforcement Learning алгоритмам.

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

Но с таким подходом, нейросеть без проблем изучает траектории практически любой сложности.

Приходилось на каждую анимацию обучать отдельную нейросеть. Основная проблема DeepMimic, мешавшая напрямую применить ее к видеоиграм, заключается в том, что не удалось обучить нейросеть выполнять сразу несколько разных анимаций. Авторы пробовали объединять их разными способами, но больше 3-4 анимацией скомбинировать не удавалось.

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

Например, эта нейросеть, тоже обученная на имитации Motion Capture, способна на физическом движке честно управлять огромным числом мышц (326!) гуманоидного персонажа. Надо отметить, что этой проблемой страдают все существующие на данный момент подобные анимационные нейросети. Но при этом для каждой анимации нужна отдельная обученная нейросеть. Адаптируясь к разному весу поднимаемых тяжестей и различным повреждениям суставов.

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

Можно было перемещать красный шар, а персонаж каждый раз бросал мяч в него. Еще в первой DeepMimic были зачатки такой адаптации. Хотя был обучен на единственном треке Motion Capture, который такой возможности не предоставляет. Прицеливаясь и соизмеряя усилие броска, чтобы попасть точно в цель.

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

Новая работа пошла в этом направлении еще дальше.

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

Одна (Gating network) на основе текущего состояния state и текущей цели goal выбирает какую анимацию использовать, а другая (Motion prediction network) предсказывает ближайшие кадры анимации. Архитектура нейросети состоит из двух частей.

Все это было обучено на наборе Motion Capture треков с помощью имитационного Reinforcement Learning.

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

Секрет оказался прост: augmentation!

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

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

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

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

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

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

Ссылки

Видео
Страница проекта с исходниками
PDF файл с подробным описанием работы: SIGGRAPH_Asia_2019/Paper.pdf

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»