Level.details
Материал из S.T.A.L.K.E.R. Inside Wiki
Содержание
Общее описание файла
Содержит информацию о детальных объектах (трава, гайки и сухие листья).
Состоит из трёх RIFF-секций (блоков):
Идентификатор блока | Размер (в байтах) | Описание |
---|---|---|
0x0 | 24 | заголовок |
0x1 | - | модели объектов (в формате .dm) |
0x2 | - | таблица ячеек 2x2 метра, задающяя плотность и видовое разнообразие объектов на карте |
Версии формата
2 - билды 1096-1558
3 - от билда 1569 до "Зова Припяти"
Версия 3 отличается от 2 тем, как хранится таблица ячеек растительности. В 3 версии они сохраняются в более компактном виде из-за чего размер файла level.details меньше. Коэфициенты освещения в версии 3: тени от солнца, hemi, свет (Light в Level Editor). А в версии 2 коэффициент освещения общий (нет разделения на тени, hemi, свет). Блоки 0x0, 0x1 одинаковы в обеих версиях, но порядок расположения в файле у них разный.
Очерёдность блоков в версии 3: 0x1, 0x2, 0x0
Очерёдность блоков в версии 2: 0x0, 0x1, 0x2
Типы данных
Чтобы статья была более компактной, я введу обозначения данных:
Обозначение | Размер (в байтах) | Тип | Диапазон |
---|---|---|---|
I | 4 | целое число | 0..4294967295 |
i | 4 | целое число | -2147483648..2147483647 |
H | 2 | целое число | 0..65535 |
Блоки
Блок 0x0 (заголовок)
Тип | Описание |
---|---|
I | версия формата |
I | количество dm моделей в файле |
i | смещение ячеек таблицы по оси X |
i | смещение ячеек таблицы по оси Z |
I | количество ячеек таблицы по оси X |
I | количество ячеек таблицы по оси Z |
Блок 0x1 (меши)
I идентификатор меша
I размер данных меша
данные меша
Данные меша
Меши хранятся в формате *.dm
Описание формата dm:
Формат файлов *.dm
Блок 0x2 (слоты/таблица ячеек)
Версия 3
Один слот хранится в 16 байтах, которые указывают:
Базовую высоту слота (это значение нужно умножить на 0.2 метра), хранится в 12 битах
Дополнительную высоту слота (это значение нужно умножить на 0.1 метра), хранится в 8 битах
Четыре идентификатора меша растительности (по 6 бит каждый)
Тень от солнца (4 бита)
Hemi освещение (4 бита)
Освещение RGB (каждая составляющая цвета по 4 бита)
(?) палитра (64 бита)
На положение слотов по оси Y накладываются ограничения. Нижняя граница равна -200 метров. А допустимый диапазон: -200..644.5 (0.2*4095 + 0.1*255 - 200)
Абсолютная высота слота (т.е. положение по оси Y) равна: баз.*0.2 + доп.*0.1 - 200