Анимация моделей

Материал из BestWay wiki
Перейти к: навигация, поиск

Общие требования


Допускается создание анимации любыми средствами 3dsmax, поскольку анимация экспортируется покадрово (не по ключам), путем сравнения состояния объекта в последовательных кадрах. Некоторые ограничения накладываются на мешевую анимацию. Для мешевой анимации отслеживается изменение состояния вершин (позиция, цвет, нормаль, текстурные координаты), причем вершины идентифицируются и объединяются (при обнаружении двух с абсолютно одинаковым содержимым) по нулевому кадру на шкале анимации. При этом следует понимать, что автоматически объединенные в 0-м кадре вершины в дальнейшем в анимации рассматриваются как одна вершина, что может привести к некорректной анимации в игре, если в анимации эти вершины изменяются неодинаково. Такие вершины необходимо принудительно разделить по позиции, цвету, материалу, текстурным координатам или группе сглаживания (последнего может быть недостаточно, если смежные треугольники копланарны).


Описание анимации в свойствах объекта

Перечень анимаций задается для каждой модели отдельно и сохраняется в сцене. Стандартно все анимации привязываются к базовой кости скелета, однако могут быть анимации, привязанные к любой другой кости. Эта привязка сугубо логическая, зависящая от использования анимации в игре, и не влияет на то, какие кости могут быть в ней задействованы. Для каждой анимации задаются: диапазон ключевых кадров, перечень костей, участвующих в анимации, название анимации, название файла, в который будет записана анимация, коэффициент масштабирования скорости проигрывания. В свойствах кости, к которой привязана анимация задается один или несколько (по одному на каждую анимацию) параметров Animation, AnimationResume или AnimationAuto в формате:

Animation=<имя анимации>,<именованное выделение>,<начальный кадр>-<конечный кадр>[,<имя файла анимации>][,<скорость проигрывания в игре в % от 50 кадров/сек>]

AnimationAuto вместо Animation означает, что данная анимация будет автоматически запущена циклически при появлении модели в игре. Использование пробелов не допускается, если пробел не является частью имени (не рекомендуется).

AnimationResume вместо Animation означает, что данная анимация требует поддержки возобновления после приостановки, иначе анимация может быть либо проиграна до конца, либо перезапущена сначала.

Задание именованного выделения с объектами, участвующими в анимации, является необходимым условием возможности одновременной работы нескольких анимаций на одной модели. При этом, никакие две одновременно запущенные анимации не могут использовать одну и ту же кость, поскольку результат получится непредсказуемый. Следует иметь это ввиду при создании выделений для анимаций. Так же не стоит включать в выделение лишние кости, не участвующие в анимации во избежание возможных конфликтов с инверсной кинематикой в процессе игры. Имя файла, в который записывается анимация, совпадает по умолчанию с именем анимации. Однако, часто необходимо экспортировать несколько анимаций с одинаковым именем, но относящимся к различным костям (например, анимации с именем «break» для компонентного разрушения). Для этого и введена возможность указания файла анимации.

Пример 1: анимация с именем start, анимируемые объекты берутся из именованного выделения chassis, анимация расположена в кадрах с 10 по 25 в шкале анимации, установить скорость проигрывания по умолчанию 35% от скорости 50 кадров в секунду, записать анимацию в файл start.anm.

Animation=start,chassis,10-25,35

Пример 2: анимация с именем stop, анимируемые объекты берутся из именованного выделения chassis, анимация расположена в кадрах с 26 по 40 в шкале анимации, установить скорость проигрывания по умолчанию 35% от скорости 50 кадров в секунду, записать анимацию в файл stop_body.anm.

Animation=stop,chassis,26-40,stop_body,35

Важно: никакие две анимации, использующие один и тот же объект, не должны пересекаться по кадрам!

Экспорт анимации

  1. Анимация не должна пересекаться по кадрам (т.е. допустимы диапазоны 0-30, 31-60, но НЕ допустимы 0-30, 30-60)
  2. Файлы анимации записываются только при включенном флажке анимации в диалоге экспорта; параметры анимации берутся из диалога экспорта, или из параметров Animation в базовой кости (таких параметров может быть несколько)
  3. Если в базовой кости встречается хоть одна строчка с параметром Animation, то в .mdl-файл в любом случае прописываются все анимации; если таких строчек нет, то прописывается анимация "default" только если включен флажок экспорта анимации.
  4. Если экспорт анимации ведется по параметрам Animation, то для каждой анимации необходимо создать named selection (может быть один на несколько анимаций), имя выделения потом указывается в соответствующих строках Animation. В параметрах Animation пробелы в имени анимации, файла и выделения являются значимыми!
  5. Файлы анимаций создаются/перезаписываются только при включенном флажке экспорта анимации.



Трансформация


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

По возможности, нужно использовать данный тип анимации везде, где нужны несложные движения модели или ее частей.

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



Мешевая деформация


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

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

Параметры анимированной кости:

CommonMesh – эта кость рассматривается как анимированный меш

CommonMesh = <кость> – меш этой кости добавляется к анимированному мешу указанной кости



Скелетная деформация


Третий тип анимации – это мешевая деформация при помощи управляющих объектов-костей (в данном случае подразумеваются именно кости скелета, а не иерархии модели). Поддерживается экспорт мешей с модификатором Skin. При этом контрольных костей должно быть не более 15. Из всех костей, действующих на вершину, выбираются две наиболее влияющие. Следует учитывать это при распределении весов.

Структура скелета для персонажей на данный момент выглядит так:

Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения
Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения

........

........

Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения