Level.details — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Pavel (обсуждение | вклад) (→Блок 0x1 (меши)) |
Pavel (обсуждение | вклад) (→Версия 3) |
||
| Строка 79: | Строка 79: | ||
==== Версия 3 ==== | ==== Версия 3 ==== | ||
| − | + | Блок хранит ячейки (слоты). | |
| − | + | Слоты в этом блоке записаны поочерёдно. | |
| − | + | К каждому слоту может быть привязано до четырёх мешей детальных объектов. | |
| − | + | Индекс меша детального объекта может быть в пределах [0 .. 62] (63 - это пустой слот). | |
| − | + | Данные одного слота хранятся в 16 байтах (128 битах), которые хранят в себе следующее: | |
| − | Hemi освещение (4 | + | {| class="standard" |
| + | |- | ||
| + | !Размер (в битах)||Описание | ||
| + | |- | ||
| + | |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]] | [[Участник: Pavel]] | ||
[[Категория:Форматы файлов]] | [[Категория:Форматы файлов]] | ||
Версия 12:17, 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
Типы данных
Чтобы статья была более компактной, я введу обозначения данных:
| Обозначение | Размер (в байтах) | Тип | Диапазон |
|---|---|---|---|
| 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