Level.details — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Level.details — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(Блок 0x1 (меши))
(Версия 3)
Строка 79: Строка 79:
 
==== Версия 3 ====
 
==== Версия 3 ====
  
Один слот хранится в 16 байтах, которые указывают:
+
Блок хранит ячейки (слоты).
  
Базовую высоту слота (это значение нужно умножить на 0.2 метра), хранится в 12 битах
+
Слоты в этом блоке записаны поочерёдно.
  
Дополнительную высоту слота (это значение нужно умножить на 0.1 метра), хранится в 8 битах
+
К каждому слоту может быть привязано до четырёх мешей детальных объектов.
  
Четыре идентификатора меша растительности (по 6 бит каждый)
+
Индекс меша детального объекта может быть в пределах [0 .. 62] (63 - это пустой слот).
  
Тень от солнца (4 бита)
+
Данные одного слота хранятся в 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||Плотность четвёртого меша (?)
 +
|-
 +
|}
  
Освещение RGB (каждая составляющая цвета по 4 бита)
+
На позицию слотов по оси Y накладываются ограничения.
  
(?) палитра (64 бита)
+
Нижняя граница равна -200 метров.
  
На положение слотов по оси Y накладываются ограничения. Нижняя граница равна -200 метров. А допустимый диапазон: -200..644.5 (0.2*4095 + 0.1*255 - 200)
+
А допустимый диапазон: -200..644.5 (0.2 * 4095 + 0.1 * 255 - 200)
  
Абсолютная высота слота (т.е. положение по оси Y) равна: баз.*0.2 + доп.*0.1 - 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

Участник: Pavel

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