Level.details — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Pavel (обсуждение | вклад) (→Версия 3) |
Pavel (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | Перед прочтением данной статьи, прочтите эту статью: <br>[[Бинарные файлы]] | ||
+ | |||
== Общее описание файла == | == Общее описание файла == | ||
Строка 22: | Строка 24: | ||
3 - от билда 1569 до "Зова Припяти" | 3 - от билда 1569 до "Зова Припяти" | ||
− | Версия 3 отличается от 2 тем, как хранится таблица ячеек растительности | + | Версия 3 отличается от 2 тем, как хранится таблица ячеек растительности. |
− | + | В 3 версии они сохраняются в более компактном виде из-за чего размер файла level.details меньше. | |
− | + | Коэфициенты освещения в версии 3: тени от солнца, hemi, свет (Light в Level Editor). | |
− | + | А в версии 2 коэффициент освещения общий (нет разделения на тени, hemi, свет). | |
− | + | Блоки 0x0, 0x1 одинаковы в обеих версиях, но порядок расположения в файле у них разный. | |
− | + | Очерёдность блоков в версии 3: 0x1, 0x2, 0x0 | |
− | + | ||
− | + | Очерёдность блоков в версии 2: 0x0, 0x1, 0x2 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
== Блоки == | == Блоки == | ||
Строка 85: | Строка 79: | ||
К каждому слоту может быть привязано до четырёх мешей детальных объектов. | К каждому слоту может быть привязано до четырёх мешей детальных объектов. | ||
− | Индекс меша детального объекта может быть в пределах [0 .. 62] (63 - это | + | Индекс меша детального объекта может быть в пределах [0 .. 62] (63 - это отсутствие меша). |
Данные одного слота хранятся в 16 байтах (128 битах), которые хранят в себе следующее: | Данные одного слота хранятся в 16 байтах (128 битах), которые хранят в себе следующее: | ||
Строка 153: | Строка 147: | ||
Нижняя граница равна -200 метров. | Нижняя граница равна -200 метров. | ||
− | А допустимый диапазон: -200 | + | А допустимый диапазон: от -200 метров до 644.5 метров (0.2 * 4095 + 0.1 * 255 - 200) |
− | Абсолютная высота слота (т.е. позиция по оси Y) равна: Базовая высота * 0.2 + Дополнительная высота * 0.1 - 200 | + | Абсолютная высота слота (т.е. позиция по оси Y) равна: Базовая высота * 0.2 метра + Дополнительная высота * 0.1 метра - 200.0 метров |
[[Участник: Pavel]] | [[Участник: Pavel]] | ||
[[Категория:Форматы файлов]] | [[Категория:Форматы файлов]] |
Версия 16:06, 18 декабря 2016
Перед прочтением данной статьи, прочтите эту статью:
Бинарные файлы
Содержание
Общее описание файла
Содержит информацию о детальных объектах (трава, гайки и сухие листья).
Состоит из трёх 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
Блоки
Блок 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.0 метров