Под продвинутыми понятиями здесь имеются в виду технологические возможности, которые обычно доступны для анимационных команд с большим бюджетом для поддержки технологий и инструментов. Тем не менее они важны и полезны для общей картины, потому что разработка игр – это всегда поиск обходных путей и более дешевых альтернатив.
Системы процедурной генерации движения
На видеоигровом жаргоне слово «процедурный» означает, что нечто (например, анимация) создается компьютерными алгоритмами, а не человеком (в данном случае аниматором). К процедурно генерируемой, или «процедурной», анимации относятся движения, создаваемые алгоритмами на основе некоторых данных, таких как правила движения. Основываясь на этих правилах, алгоритм в режиме реального времени рассчитывает конкретное движение персонажа в конкретных обстоятельствах. Такой подход требует минимальной работы аниматора и позволяет значительно сэкономить время при создании объектов, но значительно усложняет настройку персонажа и пока не дает убедительных результатов для реалистичного отображения гуманоидных персонажей.
Выполнение расчетов в реальном времени позволяет персонажам естественно реагировать на действия игрока и окружающую обстановку, чего невозможно достичь одними лишь заранее созданными анимациями. Аниматор должен руководствоваться своим чутьем и понимать, в какой степени можно применять процедурную анимацию для достижения приемлемого визуального эффекта.
В игре The Last Guardian процедурно генерировались движения Трико. (The Last Guardian. Copyright 2016 Sony Interactive Entertainment Inc.)
В сфере разработки игр системы процедурной анимации также полезны в тех случаях, когда нужно сгенерировать большое количество разных объектов, создание которых в противном случае может оказаться не под силу команде из-за ограничений бюджета или численности коллектива. По сравнению с ручной работой аниматора использование алгоритмов – по сути, наборов правил для генерации – открывает возможности расширить контент, но почти всегда за счет его качества. Как пример можно привести системы анимаций для передачи естественных жестов при разговоре или процедурную синхронизацию губ на основе озвучки и текста диалога.
Инверсная кинематика всего тела
Инверсную кинематику (ИК) можно использовать для создания анимаций и в программах DCC, но лучше всего ее применять в режиме реального времени для обеспечения соответствий между предварительно созданной анимацией и конкретным окружением игрового мира. Обычно ИК используется в системах анимации лазания, и при этом перемещаются не только руки и ноги, присоединяющиеся к поверхности в нужных точках, но и меняется положение всего тела, чтобы конечности вытягивались естественно.
Подобное решение применяется и для отображения взаимодействия персонажей, отличающихся по размерам от тех персонажей, для которых аниматор создавал свою анимацию – например, при захватах или бросках в драке на неровной поверхности, такой как склоны, или при нахождении на объектах разной высоты.
В серии игр UFC ИК используется, чтобы подчеркнуть контакт между персонажами. (Публикуется с разрешения Electronic Arts.)
ИК всего тела можно также использовать, чтобы персонаж при переменном положении тела точно дотягивался до нужного предмета – например, до ручки двери. ИК всего тела – это постпроцессная обработка, требующая ввода параметров при настройке персонажа или каждого его действия, а это отнимает много времени, из-за чего к ней прибегают нечасто.
Направление взгляда (look-at)
«Направление взгляда» (или «точка направления взгляда», look-at) – бесценный инструмент в арсенале игрового аниматора, которым он создает иллюзии «осознанного» поведения персонажа в игровом мире. При этом система ИК разворачивает кость или цепочку костей – чаще всего позвоночник, шею и/или голову – в направлении некоторой цели, как будто персонаж специально смотрит на нее. Это движение может полностью перекрывать другую анимацию или накладываться на основную анимацию, причем последний вариант предпочтительнее, чтобы сохранить работу аниматора. Большинство систем направления взгляда в играх также предполагают размещение целей в мире, на которые персонаж будет смотреть, а также потенциально требуют расстановки приоритетов, чтобы персонаж переключался между ними логичным образом.
Эквивалент такой системы можно создать и в программе DCC с помощью ограничения направления за счет определенных параметров: оси прицеливания, направленного вверх вектора, силы и предела поворота, а также времени наложения на цель – то есть тех параметров, на которые ориентируется и сама игровая система. Наилучшие результаты получаются, если в системе «направления взгляда» ведущим элементом является голова, а тело следует за ней по цепочке, как это происходит в реальной жизни, когда кто-то обращает внимание на какой-то предмет.
Морфинг (Blend Shapes)
Морфинг используется в основном для анимации лица. Хотя большинство лицевых анимаций экспортируются в игру как обычная анимация костей (точнее, как параметры позы для этих костей), морфинг позволяет повысить качество. Под этим подразумевается моделирование уникальной сетки лица для каждой позы, которых иногда бывает сотни, а не простое изменение положения лицевых костей.
В Uncharted 4: A Thief's End лица на основе костей создаются с использованием переходных форм. (Публикуется с разрешения Sony Interactive Entertainment.)
Уникальное моделирование лица позволяет воссоздавать как можно более детализированные его области, такие как губы; так исправляются неестественные складки, возникающие при простом перемещении, или сохраняется объем рта при поджатых губах. Морфинг также позволяет деформировать такие детали, как напрягающие шею мышцы и индивидуально формировать морщины вокруг лба и глаз вместо использования таких более простых методов, как анимация текстур или шейдеры.
Морфинг по-прежнему требует больших вычислительных и производственных затрат, поэтому для игр с большим количеством персонажей к нему вряд ли будут прибегать, но морфинг в сочетании с позами костей можно использовать для исправления проблем с лицом, возникающих при использовании только костей.
Моделирование мышц
Если стандартная анимация предполагает деформацию сетки вокруг точек поворота скелета, при которой весовые коэффициенты каждого сустава регулируют степень его влияния на каждую отдельную вершину модели, то при моделировании мышц под сеткой создается масса «мышц», служащих дополнительным средством для коррекции деформации сетки.
Деформация мышц в игре Fight Night. (Публикуется с разрешения компании Electronic Arts.)
Из-за больших затрат на вычисления моделирование реальных мышц в видеоиграх встречается редко, но существуют решения, дающие приблизительно такой же результат. Они включают в себя коррекцию ключевых частей тела с помощью морфинга, использование дополнительных костей, располагающихся поверх экспортируемого скелета для поддержания массы в таких точках, как плечи, локти, запястья, таз и колени, а также использование костей с физикой, примерно передающих сокращение мышц при движении костей.
Анимированные текстуры/шейдеры
Текстуры и шейдеры – это, в основном, инструмент художников по визуальным эффектам, но аниматорам полезно иметь представление о возможностях любого игрового движка, тем более когда речь заходит об анимации текстур. Один из классических примеров – простая UV-анимация, перемещающая текстуру по поверхности (где U и V – горизонтальная и вертикальная координаты текстуры). Среди других примеров – проигрывание «флипбука» (ряд кадров предварительно созданной анимации, которые затем воспроизводятся в 3D-пространстве или на персонаже).
Для создания иллюзии трехмерной проекции, особенно складок на одежде и морщин на лице, широко используется так называемая карта нормалей – техника придания дополнительной детализации поверхности с помощью текстур, содержащих информацию о глубине/высоте и пространственно ориентированных «нормалях». Вместо того чтобы анимировать высокодетализированный риг и создавать морщины со складками в самой сетке, к объекту просто применяются карты нормалей, которые можно накладывать по мере необходимости. Чаще всего (в случае с морщинами на лице) значения наложения автоматически определяются позой, которую выбирает аниматор для передачи лицевой анимации. Например, при поднятии бровей лоб морщится автоматически, и аниматору не приходится анимировать отдельно каждую складку.
Искусственный интеллект
Хотя в обязанности игрового аниматора не входит создание или реализация искусственного интеллекта, некоторые знания о нем позволяют аниматору помочь программистам или дополнить их работу. Совместная же работа позволяет не только создавать более достоверное окружение, но и сделать процесс принятия решений наглядным.
Следует отметить, что искусственный интеллект – одна из самых передовых и быстро совершенствующихся областей программирования, поэтому приведенные ниже примеры – это скорее испытанные и проверенные на практике общие положения, нежели новейшие передовые методы, которые развиваются ежедневно.
Принятие решений
Это разновидность ИИ, которая «решает», когда выполнять то или иное действие, что делать, куда двигаться и как туда попасть. Эти решения обычно принимаются в ответ на решения самого игрока – например, перемещение в укрытие при обстреле или, чаще всего, перемещение на лучшую точку обзора в бою. Как правило, ИИ использует комбинацию:
1) систем, основанных на баллах, которые присваивают значения или «вес» различным возможным исходам для эмуляции приоритетов;
2) правил, определяющих, какая ситуация вызовет то или иное событие ИИ, например: «Когда здоровье NPC становится меньше 50 %, он должен отступить».
Аниматоры при этом обычно создают анимации для отображения принятого искусственным интеллектом решения – например, начало действия, окончание действия или удивление.
Поиск пути
Один из распространенных вариантов использования искусственного интеллекта – это поиск пути, по которому NPC следуют к новому месту, например в укрытие или к игроку. Если не считать самых базовых вариантов, то для поиска пути NPC должны обладать осведомленностью о своем окружении и уметь обходить препятствия. Выбор пути определяется устанавливаемыми ИИ приоритетами, такими как «встретиться с игроком», «избегать игрока», «выбирать самый быстрый маршрут», «сохранять темп» или «избегать разворотов на 180 градусов».
Схема уровня с отмеченными ИИ узлами пути и навигационн
По аналогии с системой принятия решений по очкам/весам, заданным точкам пути на уровне (размещенным вручную или процедурно сгенерированным) часто присваиваются значения, и NPC для достижения цели ищет наименьшее возможное значение (наиболее эффективный путь). При расчете пути могут учитываться дополнительные действия вроде бега, обхода препятствий, перелезания через стену, которым также присваиваются свои значения.
При этом следует запомнить одно важное правило: эффективность ИИ в видеоиграх определяется не тем, что персонажи демонстрируют наиболее реалистичные реакции, а тем, насколько эти реакции читаемы, приятны для игрока и вписываются в систему игрового процесса. «Умное» принятие решений не имеет смысла, если оно совершенно незаметно, поэтому оно должно сопровождаться читаемой анимацией, наглядно показывающей, о чем «думает» ИИ. Задача ИИ – быть не умным, а увлекательным.
(Публикуется с разрешения Activision.)