ANIM
Материал из GTAModding.ru
Версия от 01:07, 12 апреля 2014; Majestic (обсуждение | вклад)
Файл 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]