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 метра, задающяя плотность и видовое разнообразие объектов на карте

Одна ячейка (слот) представляет из себя параллелепипед.

Габариты всех ячеек по осям X и Z одинаковы и равны 2 метра.

Высота слота (габариты параллелепипеда по оси Y) у всех слотов индивидуальна.

Так выглядит слот в Level Editor


Версии формата

2 - билды 1096-1558

3 - от билда 1569 до "Зова Припяти"

Версия 3 отличается от 2 тем, как хранится таблица ячеек растительности.

В 3 версии они сохраняются в более компактном виде из-за чего размер файла level.details меньше.

Коэффициенты освещения в версии 3: тени от солнца, hemi, свет (Light в Level Editor).

А в версии 2 коэффициент освещения общий (нет разделения на тени, hemi, свет).

Структура блоков 0x0, 0x1 одинакова в обеих версиях.

Порядок расположения блоков в версии 2 и 3 разный.

Очерёдность блоков в версии 3: 0x1, 0x2, 0x0

Очерёдность блоков в версии 2: 0x0, 0x1, 0x2


При выполнении Build уровня (в LevelEditor), создаётся файл build.details.

Этот файл идентичен level.details, за исключением того, что в нём не просчитаны коэффициенты освещения (их значения равны 0).

Блоки

Блок 0x0 (заголовок)

Тип Описание
I версия формата
I количество dm моделей в файле
i смещение ячеек таблицы по оси X
i смещение ячеек таблицы по оси Z
I количество ячеек таблицы по оси X
I количество ячеек таблицы по оси Z

Блок 0x1 (меши)

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

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

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

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

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

Версия 3

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

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

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

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

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

Размер (в битах) Описание
12 Координата нижней границы слота по оси Y (это значение нужно умножить на 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 Плотность четвёртого меша в правом заднем углу слота

Как видно из таблицы, каждый слот имеет 16 значений плотности.

Каждый из четырёх мешей имеет четыре значения плотности (для четырёх углов слота).

Значения плотности внутри слота интерполируются от значений плотности углов слота.

Обозначим плотности следующим образом:

a0 - плотность для левого переднего угла слота

a1 - плотность для правого переднего угла слота

a2 - плотность для левого заднего угла слота

a3 - плотность для правого заднего угла слота

Если смотреть на слот сверху, то плотности будут выглядеть так:

Плотность мешей, вид слота сверху


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

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

А допустимый диапазон: от -200 метров до 619 метров (0.2 * 4095 - 200).

Максимальная высота слота (параллелепипеда) равна: 25.5 (0.1 * 255).

Верхняя граница слота равна: нижняя граница + высота слота.

Версия 2

Данные одного слота в версии 2 хранятся в 22 байтах, которые содержат в себе следующее:

Тип Описание
f Координата нижней границы слота по оси Y
f Координата верхней границы слота по оси Y
B Идентификатор первого меша растительности
H Плотность первого меша растительности
B Идентификатор второго меша растительности
H Плотность второго меша растительности
B Идентификатор третьего меша растительности
H Плотность третьего меша растительности
B Идентификатор четвёртого меша растительности
H Плотность четвёртого меша растительности
H Освещение слота

Плотность представляет из себя следующее:

Размер в битах Описание
4 Плотность в левом переднем углу слота
4 Плотность в правом переднем углу слота
4 Плотность в левом заднем углу слота
4 Плотность в правом заднем углу слота

Освещение слота представляет из себя следующее:

Размер в битах Описание
4 Освещённость в левом переднем углу слота
4 Освещённость в правом переднем углу слота
4 Освещённость в левом заднем углу слота
4 Освещённость в правом заднем углу слота

Ссылки

Утилиты так или иначе связанные с импортом\экспортом details:

Участник: Pavel



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