Контейнеры бинарных файлов (.mesh, .cmesh, .animation)
Форматы .mesh, .cmesh и .animation представляют собой контейнеры, предназначенные для хранения нескольких файлов одного типа в одном бинарном файле. Основное назначение контейнеров состоит в уменьшении количества отдельных файлов в файловой системе и ускорении загрузки ресурсов.
Данные внутри контейнера организованы в виде последовательности chunk-ов. Каждый chunk начинается с четырёхсимвольного идентификатора (FourCC, Chunk ID), который определяет тип содержащихся в нём данных.
Контейнер содержит таблицу файлов, в которой для каждого файла хранятся его имя и смещение data_offset.
Размер каждого файла внутри контейнера, кроме последнего, определяется по формуле:
data_size = entries[N + 1].data_offset - entries[N].data_offset
Для последнего файла в контейнере его конец совпадает с концом контейнера.
При чтении файла парсер последовательно обрабатывает chunk-ы, определяя их тип по значению FourCC.
Обнаружение неизвестного значения FourCC считается фатальной ошибкой. Парсер не должен пропускать неизвестные чанки.
Структура данных
PMSH | ANIM | CMHR
MTBL
entry_count
entries[entry_count]
entry_name
data_offset
resources[entry_count]
MESH | EANM | EVLM
resource_dataИдентификаторы контейнера
PMSH
uint8[4]
Контейнер мешей.
Содержит ресурсы формата .ply.
ANIM
uint8[4]
Контейнер анимаций.
Содержит ресурсы формата .anm.
CMHR
uint8[4]
Контейнер волюмов физики и коллизий.
Содержит ресурсы формата .vol.
Чанк MTBL
Содержит список всех файлов, расположенных внутри контейнера, а также смещения до соответствующих данных.
FourCC
uint8[4]
4
MTBL
entry_count
uint32
4
Количество записей в таблице
entries
struct[entry_count]
Массив записей контейнера
Массив записей контейнера (struct)
entry_name
string8
1+
Имя записи
data_offset
uint32
4
Смещение данных ресурса относительно конца таблицы MTBL
Чанк MESH
Содержит данные в формате .ply.
FourCC
uint8[4]
MESH
ply_data
.ply
Данные меша в формате .ply.
Чанк EANM
Содержит данные в формате .anm.
FourCC
uint8[4]
EANM
anm_data
.anm
Данные анимации в формате .anm.
Чанк EVLM
Содержит данные в формате .vol.
FourCC
uint8[4]
EVLM
vol_data
.vol
Данные волюма в формате .vol.
Связанные бинарные форматы
Последнее обновление
