netlib.narod.ru | < Назад | Оглавление | Далее > |
Существует два основных типа анимации: анимация с ключевыми кадрами и скелетная анимация. Эти типы анимации используются в различных ситуациях и каждый имеет свои преимущества и недостатки.
В анимации с ключевыми кадрами вы храните статические сетки модели для каждого кадра анимации. Если вы будете анимировать модель на рис. 11.1, вам потребуется экспортировать четыре различных статических сетки и менять рисуемую сетку во время каждого кадра. Такая анимация называется анимацией с ключевыми кадрами (keyframed) потому что экспортируются только ключевые кадры анимации. Например, в анимации на рис. 11.1 между первой и второй стадиями анимации может быть много промежуточных кадров, используемых для того, чтобы анимация была более плавной. Однако вам не требуется экспортировать их, потому что они получаются путем интерполяции первого и второго ключевых кадров. Например, в линейной интерполяции, местоположение каждой вершины сетки линейно интерполируется между первым и вторым кадром.
Одним из преимуществ анимации с ключевыми кадрами является быстрота, поскольку в ходе анимации ничего не требуется вычислять. Все кадры анимации хранятся в памяти и во время анимации вам надо только каждый раз менять рисуемую модель. Недостатком этого метода является необходимость хранить все сетки моделей в памяти, чтобы они могли быть быстро нарисованы. Если у модели сотни кадров анимации, ее сетку приходится сохранять сотни раз. В сценах с сотнями анимированных моделей, которые совместно используют одну и ту же анимацию, метод ключевых кадров может быть полезен. Использовать анимацию с ключевыми кадрами в XNA для моделей просто, поскольку в XNA уже есть классы, необходимые для поддержки статических моделей. Следовательно вы в XNA можете представить анимированную с использованием ключевых кадров модель как массив статических моделей, используя, например, класс Model.
Другим способом анимации моделей является скелетная анимация. Для нее вам необходимо построить скелет модели, состоящий из нескольких костей, и затем присоединить каждую вершину сетки к кости скелета. В результате при анимации скелета анимируется также и присоединенная к нему сетка, следуя анимации скелета.
Чтобы построить сетку модели, скелет и анимацию, вы можете использовать различные программы моделирования, поддерживающие скелетную (или костевую) анимацию, такие как 3ds Max, Maya, Blender и т.д. После того, как вы создадите модель, вам надо экспортировать ее в формат, поддерживающий скелетную анимацию. Среди форматов моделей изначально поддерживаемых XNA, скелетную анимацию поддерживают форматы X (файлы DirectX) и FBX (Autodesk). Заметьте, что скелетная анимация является также анимацией с ключевыми кадрами, а это значит, что экспортируются только ключевые кадры скелетной анимации. Как и в анимации с ключевыми кадрами вы можете интерполировать кадры анимации скелета. На рис. 11.2 показана модель с ее сеткой и скелетом.
Рис. 11.2. Модель с ее сеткой и скелетом
Скелетная анимация обладает несколькими преимуществами по сравнению с анимацией с ключевыми кадрами. Она позволяет легко смешивать анимации, позволяя одновременно применять к модели различные анимации. Например, вы можете применить к модели на рис. 11.2 две различные анимации, где одна анимация заставит модель ходить, а другая — оглядываться вокруг (поворачивая голову). Скелетная анимация также позволяет соединять кости одного объекта с костями другого. Например, если у вас есть персонаж, который орудует мечом, вы можете присоединить кость меча к кости руки персонажа, в результате чего меч будет перемещаться при перемещении руки персонажа. Сегодня скелетная анимация используется более широко, чем анимация с ключевыми кадрами. Держа это в уме мы сосредоточимся на скелетной анимации.
XNA не обладает встроенной поддержкой скелетной анимации. Хотя конвейер содержимого XNA и может импортировать модели со скелетной анимацией, используемый по умолчанию обработчик моделей в состоянии обработать только сетку модели и скелет, отбрасывая анимацию модели. Кроме того, формат экспорта скелета модели может быть несоответствующим и неоптимизированным для использования в процессе анимации.
netlib.narod.ru | < Назад | Оглавление | Далее > |