В самых простых играх, например при поступлении команды от игрока, цикл покоя просто прерывается циклом ходьбы/бега с небольшим смешиванием кадров, но гораздо лучше будет создать анимацию перехода к первому кадру цикла ходьбы/бега – например, показать, как персонаж сначала наклоняется в нужном направлении.
Еще более высокой точности можно добиться, создав несколько анимаций перехода к движению в разных направлениях, в каких только может двигаться персонаж; при этом аниматор может проконтролировать необходимый угол разворота и изменение импульса во время перехода. Как видно, количество переходов, необходимых для придачи персонажу плавности, может быстро увеличиться многократно, поэтому повышенное внимание им уделяют только в играх с большим бюджетом.
Скелеты, риги и экспорт в игру
Подобно тому как в традиционной кукольной анимации используются модели с жесткими скелетами, позволяющими придавать персонажам различные позы, многие программы 3D-анимации (а в последнее время и многие пакеты для 2D-анимации) предусматривают привязку отдельных элементов персонажа к внутреннему скелету. В самом простом виде углы разворота и координаты этих элементов экспортируются покадрово в игровой движок, который воспроизводит заранее позы и тем самым создает анимацию персонажа.
Игровые движки часто читают лишь экспортируемый скелет
3D-анимация по своей сути – это набор значений для поворотов и передвижений «суставов» скелета, от которых, в свою очередь, зависит перемещение вершин в трехмерном пространстве, создающее иллюзию движения персонажа. Если заниматься анимацией достаточно долго, то рано или поздно можно прийти к мнению, что все движения в окружающем мире можно описать с помощью чисел, и это открывает большие возможности. Как только будет приоткрыта завеса, скрывающая внутренний механизм движений, то с этими числами можно сделать гораздо больше, чем допускают простые манипуляции 3D-пакета.
• Сглаживание чисел при переходе от одной анимации к другой позволяет создавать эффект «сглаживания», то есть более плавного перехода между последовательными действиями.
• Складывание чисел, или так называемая аддитивная анимация, позволяет воспроизводить одно и то же движение (например, дыхание) поверх других. Этот прием должен уже быть знаком всем, кто занимается анимацией при помощи слоев DCC, так как принцип у них один и тот же.
• Вычитание чисел позволяет удалять позы, что также используется в аддитивной технике при объединении нескольких сложных анимаций.
• Экспорт или воспроизведение только нескольких отдельных значений позволяет анимировать отдельные элементы, такие как верхняя часть тела или руки. Так можно заставлять персонажей стрелять из оружия и перезаряжать его на бегу с использованием общей анимации бега.
• Варьирование числовых показателей в процентном отношении позволяет регулировать движение отдельных элементов: например, отображать мелкие движения рук или наклоны позвоночника.
Конечно, все математические вычисления выполняет игровой движок, но общее представление о принципах этих вычислений и о том, как меняются значения во время анимаций и между ними, позволяет глубже осознать основные принципы анимирования. Увлекающиеся своим делом аниматоры находят новые интересные способы делать много высококачественных анимаций через разумное сочетание и переиспользование анимаций.
Независимо от того, сколько ключевых кадров используется в каждом конкретном файле анимированной сцены, вся анимация экспортируется в игру с частотой кадров, установленной для всего проекта, – чаще всего 30 кадров в секунду, хотя в последнее время становится нормой частота 60 кадров в секунду. Затем движок игры в реальном времени осуществляет линейную интерполяцию между этими кадрами. Наилучшие результаты дает воспроизведение анимации на полной частоте кадров, но для экономии памяти анимацию часто сжимают (хотя сейчас по мере увеличения доступной памяти сжатие не такое уж радикальное), сохраняя только каждый второй кадр или меньше – в зависимости от алгоритма сжатия. Слишком сильное сжатие может заметно уменьшить плавность по сравнению с исходной анимацией, созданной в специальной программе, поэтому с ним лучше не переусердствовать.