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