ANIM

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

Файл ANIM - это директория анимаций в GTA:LCS/VCS, и этот формат используется только в этих играх.

В отличии от GTA:LCS, помимо игровой анимации, в GTA:VCS анимации катсцен также хранятся в данном формате.

На практике доказано, что структура файлов в GTA:LCS и GTA:VCS отличаются друг от друга, а конкретно кость Root имеет другой тип данных и в GTA:VCS анимация коленей имеет меньше кадров в секунду, чем анимация других костей.

Содержание

Заголовок

Заголовок имеет следующую структуру:

Заголовок:

  4 байта - Заголовок файла anim (читается наоборот как mina)
  4 байта - Пустая секция(NULL)
  4 байта - Размер файла
  4 байта - Смещение на таблицу перераспределения файла в памяти
  4 байта - Смещение на таблицу перераспределения файла в памяти (повторяется)
  4 байта - количество смещений в таблице перераспределения файла в памяти
  8 байт - выравнивание

Таблица смещений на секции анимаций от 1 до общего колличества, располагается сразу после заголовка, количество смещений читается из GAME.DTZ
(каждый оффсет по 4 байта)

Анимация

 [4b] dword - смещение на таблицу анимаций для костей
 [24b] string - имя анимации
 [2b] word - количество строк в таблице анимаций для костей (т.е число костей, задействованных в анимации)
 [2b] - неизвестно
 [4b] float - полное время проигрывания анимации в секундах
 [4b] - неизвестно (только VCS)

Таблица задействованных в анимации костей

 [2b] word - флаги используемых трансформаций для кости
 [2b] word - количество кадров анимации кости
 [4b] dword - смещение на таблицу кадров анимации
 [2b] word - ID кости
 [2b] - неизвестно


Флаги трансформаций костей

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

 0000000000000001 - анимация имеет кватернион вращения (Rotation)
 0000000000000010 - кость имеет координаты перемещения (Translation)
 0000000000000100 - кость имеет скайлинг (Scale), наличие данной секции в анимациях LCS VCS замечено не было
 0000000000001000 - неизвестно, обычно присутствует в VCS и PSP версии LCS
 0000000000010000 - неизвестно, обычно присутствует в PS2 версии LCS

Кадр

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

 [2b] Half float* - Rotation quat X
 [2b] Half float - Rotation quat Y
 [2b] Half float - Rotation quat Z
 [2b] Half float - Rotation quat W
 [2b] Half float - Время (необходимо умножить на 30)
 [2b] Half float - Translation X
 [2b] Half float - Translation Y
 [2b] Half float - Translation Z
*Информация по Half precision float тут: [1]