For the complete documentation index, see llms.txt. This page is also available as Markdown.

Формат анимации (.anm)

Общая информация про формат .anm

Формат .anm используется для хранения анимации скелетных моделей в движках семейства GEM.

GEM RTS поддерживает все версии формата анимации, начиная с GEM1.

Файл может содержать:

• информацию о версии формата; • параметры диапазона кадров; • карту анимируемых костей; • данные о видимости костей; • анимационные ключи; • мешевую анимацию; • комментарии.

Структура файла

EANM
version
FRMS
    frame_max + 1
CMNT
    size
    comment[size]
BMAP
    bone_count
    bones [bone_count]
        bone_name
цикл по кадрам
    FRMN | FRM2 | FRM3

Описание содержимого файла

Чанк EANM

Заголовок файла, который является верификатором содержимого. Подтверждает, что файл содержит анимацию.

Название
Тип
Размер
Описание

FourCC

uint8[4]

4

EANM

version

int16[2]

4

Версия формата. Первые 2 байта содержат major, вторые 2 байта содержат minor :

  • 0x00040000 версия 4.0 (GEM1, Soldiers Heroes of World War II)

  • 0x00060000 версия 6.0 (GEM2, Men of War)

  • 0x00060001 версия 6.1 (GEM2.5, Majesty2; GEM RTS, Men of War II) GEM RTS поддерживает все версии

Чанк FRMS

Определяет максимальный номер кадра в анимации.

Структура данных

Название
Тип
Размер
Описание

FourCC

uint8[4]

4

FRMS

frame_max + 1

int32

4

Значение на 1 больше максимального номера кадра

Чанк CMNT

Чанк комментария. Также является признаком формата, поддерживаемого в движке GEM3.

Структура данных

Название
Тип
Размер
Описание

FourCC

uint8[4]

4

CMNT

size

uint16

2

Размер комментария в байтах

comment

char[size]

1+

Текст комментария

Чанк BMAP

Карта костей анимации. Поддерживает лоды через суффикс _lod<номер_лода> в имени кости.

Структура данных

Название
Тип
Размер
Описание

FourCC

uint8[4]

4

BMAP

bone_count

int32

4

Количество костей в карте. Несмотря на тип int32, версия 6.1 поддерживает не более 255 костей

bones

struct[bone_count]

Массив костей

Описание массива костей

Название
Тип
Размер
Описание

bone_name

string8/24 string32

1+

Название кости. Если используется формат GEM3, применяется string8/24. Для более старых форматов используется string32.

Циклы кадров

После карты костей идет последовательность данных кадров анимации.

Дальнейшая структура данных кадра определяется идентификатором чанка формата кадра.

Идентификатор формата кадра
Название формата кадра
Комментарий

FRMN

V1

Поддерживается начиная с GEM1

FRM2

V2

Поддерживается начиная с GEM2

FRM3

V3

Поддерживается начиная с GEM2.5 / GEM RTS

*) GEM RTS поддерживает все версии формата.

Формат кадра V1 (FRMN)

Поддерживается начиная с GEM1.

Структура данных

Верификатор кадра V1

Название
Тип
Размер
Описание

FourCC

uint8[4]

4

FRMN

frame_no

int32

4

Номер кадра

Чанк BONE

Содержит анимацию отдельной кости.

Для файлов с версией кадра V1 из-за особенностей формата чтение чанков BONE должно выполняться по следующему алгоритму:

  1. Прочитать следующее значение FourCC без изменения позиции потока.

  2. Если достигнут конец файла или конец текущего контейнера, завершить чтение.

  3. Если значение FourCC равно FRMN, FRM2 или FRM3, завершить чтение.

  4. Если значение FourCC равно BONE, прочитать следующий чанк BONE.

  5. Если значение FourCC равно MATR, VISI или MESH, прочитать соответствующий чанк компонента.

  6. Любое другое значение FourCC считается ошибкой.

file-circle-exclamation
Название
Тип
Размер
Описание

FourCC

uint8[4]

4

BONE

index

int32

4

Индекс кости из карты BMAP

Чанк MATR

Матрица трансформации кости.

Название
Тип
Размер
Описание

FourCC

uint8[4]

4

MATR

matrix

float[3][4]

48

Матрица 3x4.

Содержит:

  • позицию

  • ориентацию

  • масштаб

Чанк VISI

Видимость кости.

Название
Тип
Размер
Описание

FourCC

uint8[4]

4

VISI

visibility

int32

4

Флаг видимости.

Значения:

  • 0 — невидимая

  • 1 — видимая

Чанк MESH

Мешевая анимация.

Название
Тип
Размер
Описание

FourCC

uint8[4]

4

MESH

size

int32

4

Размер данных мешевой анимации

mesh_data

byte[size]

Данные мешевой анимации

Формат кадра V2 (FRM2)

Поддерживается начиная с GEM2.

Структура данных

Описание формата кадра V2

Название
Тип
Размер
Описание

FourCC

uint8[4]

4

FRM2

frame_no

uint16

2

Номер кадра

key_count

uint8

1

Количество анимированных ключей в кадре

keys

struct[key_count]

Структура описания ключей

Структура ключа struct[key_count]

Название
Тип
Размер
Описание

bone_map_index

uint8

1

Индекс кости из карты BMAP

key_flags

uint16

2

Битовая маска анимируемых параметров

Битовая маска key_flags

Значение
Описание

0x0001

Позиция

0x0002

Ориентация

0x0004

Признак отзеркаленной матрицы

0x0008

Включение видимости

0x0010

Выключение видимости

0x0020

Мешевая анимация

0x0040

Масштаб

Условные данные анимационного ключа

В файле присутствуют только те данные, для которых установлен соответствующий флаг в битовой маске.

Название
Тип
Размер
Описание

position

float3

12

Позиция

orientation

float3

12

Нормализованная форма кватерниона

scale

float3

12

Масштаб по осям XYZ

mesh

struct

Mешевая анимация

mesh.size

int32

4

Размер данных

mesh.data

byte[size]

1*[size]

Бинарные данные мешевой анимации

Формат кадра V3 (FRM3)

Используется в GEM2.5 и GEM RTS.

Структура данных

Описание формата кадра V3

Название
Тип
Размер
Описание

FourCC

uint8[4]

4

FRM3

frame_no

uint8

uint16

uint32

1

2

4

Размер поля зависит от frame_max.

Используется:

  • uint8, если frame_max <= 255

  • uint16, если frame_max <= 65535

  • uint32, если frame_max >= 65536

key_count

uint8

1

Количество анимированных ключей в кадре

keys

struct[key_count]

Структура описания ключей

Структура ключа struct[key_count]

Название
Тип
Размер
Описание

bone_map_index

uint8

1

Индекс кости из карты BMAP

key_flags

uint16

2

Битовая маска анимируемых параметров

Битовая маска key_flags

Значение
Описание

0x0001

Позиция

0x0002

Ориентация

0x0004

Признак отзеркаленной матрицы

0x0008

Включение видимости

0x0010

Выключение видимости

0x0020

Мешевая анимация

0x0040

Масштаб

Условные данные анимационного ключа

Ниже описанные поля присутствуют, если установлен соответствующий флаг в битовой маске.

Название
Тип
Размер
Описание

position

float3

12

Позиция

orientation

float3

12

Нормализованная форма кватерниона

scale

float3

12

Масштаб по осям XYZ

mesh

struct

Mешевая анимация

mesh.size

int32

4

Размер данных

mesh.data

byte[size]

1*[size]

Бинарные данные мешевой анимации

Вся информация о бинарных файлах

Последнее обновление