Выбрать главу

Плавность

Игровые анимации, как правило, не длинные и плавные, а короткие и воспроизводятся друг за другом. Они часто останавливаются, прерываются, запускаются и накладываются друг на друга в разной последовательности. Аниматор видеоигр обязан следить, как эти анимации сочетаются друг с другом, чтобы сохранить общую плавность, и для этого существуют различные приемы, конечная цель которых – минимизировать любые нежелательные движения, которые могут отвлечь игрока от основного действия, а также сглаживание «стыков» между анимациями.

Смешивание и переходы

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

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

Prince of Persia: Sands of Time была первой игрой, в которой для обеспечения плавности большое внимание уделялось небольшим переходам. (Copyright 2003 Ubisoft Entertainment. Основана на игре Prince of Persia®, созданной Джорданом Мехнером. Prince of Persia является торговой маркой Waterwheel Licensing LLC в США и/или других странах, используемой по лицензии.)

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

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

Бесшовные циклы

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

При этом недостаточно просто сделать так, чтобы последний кадр совпадал с первым; игровой аниматор должен также сохранить импульс каждой части тела, чтобы сделать «стык» незаметным. Для этого можно изменить кривые до и после последнего кадра так, чтобы они образовывали чистые дуги и продолжались в том же направлении. Что касается технологии захвата движений, где дуги практически не работают, то для нее существуют отдельные приемы, автоматически обеспечивающие сохранение импульса при смене цикла, которые будут описаны далее в главе 11 «Ваш проект: захват движения».