Level.details — S.T.A.L.K.E.R. Inside Wiki

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 (меши)

Блок состоит из вложенных блоков.

Идентификатор вложенного блока является индексом меша детального объекта.

Данные вложенных блоков - это меш в формате dm.

Описание формата dm:
Формат файлов *.dm

Блок 0x2 (слоты/таблица ячеек)

Версия 3

Блок хранит ячейки (слоты).

Слоты в этом блоке записаны поочерёдно.

К каждому слоту может быть привязано до четырёх мешей детальных объектов.

Индекс меша детального объекта может быть в пределах [0 .. 62] (63 - это пустой слот).

Данные одного слота хранятся в 16 байтах (128 битах), которые хранят в себе следующее:

Размер (в битах) Описание
12 Базовая высота слота (это значение нужно умножить на 0.2 метра)
8 Дополнительная высота слота (это значение нужно умножить на 0.1 метра)
6 Идентификатор первого меша растительности
6 Идентификатор второго меша растительности
6 Идентификатор третьего меша растительности
6 Идентификатор четвёртого меша растительности
4 Тень от солнца
4 Hemi освещение
4 Красная составляющая статических источников света
4 Зелёная составляющая статических источников света
4 Синяя составляющая статических источников света
4 Плотность первого меша (?)
4 Плотность первого меша (?)
4 Плотность первого меша (?)
4 Плотность первого меша (?)
4 Плотность второго меша (?)
4 Плотность второго меша (?)
4 Плотность второго меша (?)
4 Плотность второго меша (?)
4 Плотность третьего меша (?)
4 Плотность третьего меша (?)
4 Плотность третьего меша (?)
4 Плотность третьего меша (?)
4 Плотность четвёртого меша (?)
4 Плотность четвёртого меша (?)
4 Плотность четвёртого меша (?)
4 Плотность четвёртого меша (?)

На позицию слотов по оси Y накладываются ограничения.

Нижняя граница равна -200 метров.

А допустимый диапазон: -200..644.5 (0.2 * 4095 + 0.1 * 255 - 200)

Абсолютная высота слота (т.е. позиция по оси Y) равна: Базовая высота * 0.2 + Дополнительная высота * 0.1 - 200

Участник: Pavel

Другие места
LANGUAGE